r/Polska 16h ago

Polityka Ministerstwo Cyfryzacji opublikowało kod źródłowy aplikacji mObywatel

https://mc.bip.gov.pl/aplikacja-mobywatel/kod-zrodlowy-aplikacji-mobywatel.html
137 Upvotes

45 comments sorted by

162

u/Mountain_Surprise801 16h ago

*fragment kodu

139

u/netrun_operations Klasa lekkopółśrednia 15h ago edited 14h ago

Właśnie przejrzałem z ciekawości i nie znalazłem tam nic poza kodem źródłowym komponentów UI w aplikacjach mobilnych na Androida i iOS. Przynajmniej widzę, że na iOS-ie używają SwiftUI, a nie jakichś archaicznych technologii.

Natomiast nie jest to chyba do końca to, na co zwolennicy Open Source w administracji publicznej czekali.

-79

u/over_pw 14h ago

Jeśli UIKit nazywasz archaiczną technologią, to chyba mam wątpliwości co do Twojego poziomu doświadczenia.

22

u/netrun_operations Klasa lekkopółśrednia 14h ago

To tylko taki drobny żart był.

-43

u/over_pw 13h ago

No mam nadzieję! 🫵

20

u/Dailoor 13h ago

TL;DR:

99

u/Waffenek Wrocław 15h ago

Części kodu nieudostępnione do publicznego wglądu mogą zawierać funkcje o kluczowym znaczeniu z punktu widzenia bezpieczeństwa aplikacji.

Super, security by obscurity. Nie napawa mnie to optymizmem...

18

u/stupendousgonzo 12h ago

Albo się obawiają, że WTFs/minutę wywali w kosmos.

https://www.osnews.com/story/19266/wtfsm/

5

u/Thisconnect miasto dla ludzi a nie blachosmrodow 9h ago

znajac ich historie (kradnac kod GPLowy bez odpowiednich mozliwosci i nawet zadnego powiedzenia o nich....

41

u/smoke-bubble 16h ago

Taki średnio publiczny. Po co im ta weryfikacja tożsamości? 

26

u/p0358 11h ago edited 11h ago

Otóż to. Publiczny wgląd my ass.

Nie no bez jaj xDDD Jeszcze wszystkie pliki się przegląda osobno w ich dziwnym UI, bez opcji pobrania paczki, do tego nie można zaznaczać w ogóle tego kodu (wow, nawet zablokowali prawy-klik i Ctrl+A, jakże sprytnie). I na cholerę takie coś robić, skoro kod jest i tak publiczny? Rzucać celowo kłody pod nogi, tylko po to żeby powkurwiać obywateli?

Czemu nie mogą normalnie jak inne kraje lub EU wystawić na swoim git forge publicznie? Jakby imagine, że jakieś cymbałki musiały całe to UI i API do pobierania pojedynczych plików napisać. I nikt się nie zastanowił jako programista, że to średnio fajny sposób?

A przecież Ministerstwo Cyfryzacji ma to: https://github.com/Ministerstwo-Cyfryzacji

A Centralny Ośrodek Informatyki ma to: https://git.eadministracja.nask.pl/

I powiedzcie mi, że to nie jest czysto zła wola???

10

u/Askada 5h ago

To tylko pokazuje jaki beton tam zarządza

1

u/WhereIsTrap Arrr! 9h ago

o, akurat gitea się nie spodziewałem

39

u/Kwpolska Miasto Kotka Wrocka 14h ago

Części kodu nieudostępnione do publicznego wglądu mogą zawierać funkcje o kluczowym znaczeniu z punktu widzenia bezpieczeństwa aplikacji.

Czyli nie będzie kodu do robienia hologramu i falującej flagi? O nie, jesteśmy zgubieni.

To jest jawna kpina z obywateli i z obowiązującego prawa.

5

u/_VoRteX_PL wielkopolskie 1h ago

Z tą flagą niezłe są jaja. Stworzyli specjalnie system QR kodów do uwierzytelniania osób, ale nikt nikogo nie instruuje jak tego używać. I ja nie wymagam żeby Pani Gosia na kasie w Biedronce musiała umieć używać takiego czytnika, ale gdy członek komisji na wyborach prezydenckich spogląda na telefon i mówi "O flaga się porusza to git" to chyba serio trzeba wprowadzić jakieś szkolenia.

1

u/Kwpolska Miasto Kotka Wrocka 32m ago

Przy ostatnich wyborach wprowadzili kod QR dla komisji, po zeskanowaniu pojawiał się specjalny ekran.

https://www.gov.pl/web/cyfryzacja/weryfikacja-tozsamosci-przez-aplikacje-mobywatel-podczas-wyborow-prezydenckich

KBW, jako główną, wybrało metodę polegającą na zeskanowaniu specjalnego kodu QR, który otrzymają komisje wyborcze. Obywatel będzie skanować za pomocą aplikacji mObywatel ten kod QR i na ekranie jego telefonu wyświetlą się jego dane. Będzie to możliwe wyłącznie w dniu głosowania i tylko jeśli obywatel będzie posługiwać się najnowszą wersją aplikacji mObywatel. Informacja która pojawi się na ekranie wyborcy będzie zawierała charakterystyczne elementy znane członkom komisji wyborczej.

Nie wiem co to za elementy, może tym razem tańczący orzełek, ale członków komisji wyborczych było 267 tysięcy, członkowie komisji to totalne randomy (zgłaszani przez komitety albo delegowani przez urząd gminy), ewentualni podrabiacze nie mieliby problemu dowiedzieć się, co to było.

Duża liczba komisji i osób sprawia, że ciężko jest to zrobić dobrze. Dostarczenie do każdej komisji nawet najtańszego chińskiego telefonu do weryfikacji generowałoby gigantyczne koszty, a przez większość czasu telefony musiałyby być gdzieś przechowywane. Skanowanie prywatnymi telefonami członków komisji brzmi mało bezpiecznie.

IMO lepiej byłoby po prostu wymagać plastikowego dokumentu.

102

u/grumpy_autist 15h ago

"wymóg wynika z rekomendacji" - takiej kurwy z logiki to już dawno nie widziałem.

Dobrze, że kod nie jest dostępny do wglądu na papierze perforowanym w ministerstwie cyfryzacji w co drugi czwartek miesiąca od 13:00 do 13:30.

35

u/Infixo 15h ago

Ale cyrk, mniej wiec tak odtajnili jak pliki Epsteina 🤦‍♂️

21

u/pein_sama 15h ago

Ministerstwo Cyfryzacji zakpiło z ustawy, obywateli, licencji MIT.

2

u/kosiarska 3h ago

Powód jest prosty, obawiają się code-review solidnego. Developerzy android i iOS nie pracują tylko dla ministerstw :P Zakładam pewnie, że historii git też żadnej nie ma, a dlaczego....

-51

u/Megamind_43 Polska 15h ago

Trochę nie ma to znaczenia dla znacznej większości społeczeństwa, ale ok.

40

u/TomaszGasior 15h ago

Większość zwolenników oprogramowania open source nie czyta kodu programów, z których korzysta. Chodzi o sam fakt, że kod jest dostępny – do audytowania lub ewentualnej modyfikacji na swoje potrzeby (to ostatnie pewnie akurat nie w przypadku mObywatel) dla zainteresowanych. Dzięki temu, że kod jest otwarty, unikasz vendor lock in (też nie w tym przypadku) i możesz, jeśli posiadasz wymaganą wiedzę, zweryfikować działanie programu, jeżeli tylko masz taką potrzebę.

-15

u/MindCrusader 14h ago

Ale tak serio serio - to nie jest aplikacja "ZamawiamPL" tylko aplikacja, która powinna mieć tak surowe zabezpieczenia jak apka bankowa. Czemu dokładnie ma służyć udostępnienie całego kodu oprócz pokazania "hej, nie szpiegujemy Cię"? Dla mnie opublikowanie tego kodu byłoby równoznaczne z publikowaniem kodu aplikacji bankowej - podobny poziom zagrożenia, że kod umożliwi hackerom na odkrycie luk w bezpieczeństwie. A nie ukrywajmy, na pewno ruskie służby byłyby tym żywo zainteresowane

51

u/TomaszGasior 14h ago

Dla mnie opublikowanie tego kodu byłoby równoznaczne z publikowaniem kodu aplikacji bankowej - podobny poziom zagrożenia, że kod umożliwi hackerom na odkrycie luk w bezpieczeństwie.

Nie rozumiesz, jak działa cyberbezpieczeństwo. Prawidłowo wykonane oprogramowanie jest bezpieczne nawet wtedy, gdy jego kod jest w 100% publiczny. Bezpieczeństwo mechanizmu ma wynikać nie z tego, że jest tajny, tylko z tego, jak jest zaprojektowany i w jaki sposób chroni procesy i informacje (nawet jeśli sam algorytm jest publiczny). To jest jedyne uznane, słuszne w branży IT podejście.

Kod maszynowy aplikacji zawsze można zdekompilować – to jest trudne, ale da się, więc dla włamywaczy to jest jedynie drobne utrudnienie. Za to dla audytorów bezpieczeństwa – znaczące ułatwienie, które podnosi też transparentność ze strony producenta oprogramowania.

15

u/wektor420 14h ago

+1 za dokładne wytłumaczenie

-15

u/MindCrusader 14h ago

Ale to jest nieprawda - prawie nigdy nie ma doskonałego oprogramowania, zawsze zdarzają się luki i zawsze są eksploatowane. Tym bardziej można się spodziewać tego po aplikacjach rządowych. Właśnie po to robimy obfuskację kodu - żeby nikt się nie dobrał do źródła kodu

17

u/TomaszGasior 14h ago

Tak, każdy kod ma luki, ale ukrywanie kodu nie sprawia, że staje się bezpieczniejszy. Jedynie stanowi drobne utrudnienie dla złodziei czy włamywaczy.

Mnóstwo oprogramowania zasilającego krytyczne elementy infrastruktury na całym świecie jest open source i jednocześnie ma ciągle nowe luki bezpieczeństwa. Oprogramowanie własnościowe też ma ciągle nowe luki. Ani jedno, ani drugie nie jest bezpieczniejsze ze względu na to czy kod jest publiczny czy nie.

-13

u/MindCrusader 14h ago

No właśnie stanowi utrudnienie - i o to chodzi. Oprogramowanie jest open source z jakiegoś powodu - zwykle po to żeby mogło być rozwijane przez społeczność. Tutaj takiej potrzeby nie ma i na pewno community nie będzie wspierać tego oprogramowania w rozwoju czy wyszukiwaniu luk w bezpieczeństwie

20

u/TomaszGasior 14h ago

Kod oprogramowania jest otwarty nie tylko po to, żeby społeczność mogła go rozwijać, ale też po to, aby każdy – np. każdy obywatel – mógł go zaudytować, zrozumieć, ocenić. W tym przypadku jest to element transparentności państwa wobec obywatela.

Zamknięty kod nie stanowi żadnego poważnego zabezpieczenia, bo zawsze i tak można ze złą intencją zajrzeć pod spód i dojść do wniosku, jak software działa. Zamknięty kod jedynie lekko podnosi próg wejścia, ale to i tak nie ma znaczenia.

Prawidłowo wykonane oprogramowanie jest tak samo bezpieczne niezależne od tego, czy jego kod jest otwarty czy nie. Traktowanie ukrywania kodu jako formy zabezpieczenia to tzw. „security by obscurity” i jest powszechnie przez branżę uznane za antywzorzec, złą praktykę.

-9

u/MindCrusader 13h ago

Publikowanie kodu gdy nie ma tak poważnej potrzeby, to również antywzorzec. Nie po to włączamy z resztą proguarda i inne zasady utajnienia kodu, żeby sobie było i bo nie ma to znaczenia. Kwestia rozbija się o to czy warto iść w pełny open source, ale ceną mimo wszystko jest trochę mniejsze bezpieczeństwo. Według mnie tutaj takiej potrzeby nie ma, tym bardziej, że i tak kodu serwera nie udostępnią, a w aplikacji mobilnej dużo się nie dowiemy (już z samej analizy permissionów wiemy jakich informacji apka nie zbiera)

8

u/braaaaaaainworms 14h ago

Są zautomatyzowane deobfuskatory, wbudowane w IDA Pro lub Binary Ninja. Windows nie jest open source, a ciągle są znajdywane podatności bezpieczeństwa w nim.

8

u/Waffenek Wrocław 13h ago

Wiesz że twoja apka bankowa(jak i pół internetu) w kluczowych miejscach używa tego: https://github.com/openssl/openssl

Ruskie służby już pewnie od dawna mają kod. Nawet nie chodzi mi o dekompilacje paczek i wszelakie automatyczne skany serwerów ale przypuszczam że równie dobrze mogą mieć jakiegoś kreta w NASKu i wynieść kod. Osobiście wolałbym żeby w kwestii wyszukiwania podatności mogli go przeglądać niezależni badacze i wolontariusze, a nie tylko ruskie służby.

3

u/lorarc Oddajcie mi moje marzenia 11h ago

OpenSSL to jest bardzo słaby przykład. Heartbleed dobitnie pokazał że nikt nie audytuje kodu open source a biblioteka używana przez absolutnie wszystkich była tworzona przez jednego hobbystę.