Kod mObywatela został udostępniony - co w nim widać? Np. "Hello World" ;-)
Ministerstwo Cyfryzacji udostępniło kod źródłowy mObywatela. Analizujemy co tak naprawdę trafiło do sieci.
Ministerstwo Cyfryzacji udostępniło dzisiaj kod źródłowy mObywatela. To chyba super? No prawie.
Dla tych, którym nie chce się czytać: udostępnienie kodu appki mObywatel wygląda tak, jakby ktoś udostępnił kod webowej appki mObywatel ale tylko postaci plików HTML, które i tak każdy posiada. Przy okazji nie udostępniono plików JavaScript (które i tak każdy ma). Innymi słowy: udostępniono części frontendu bez najistotniejszych elementów - czyli backendu.
A teraz trochę szerzej:
- Udostępniono to, co i tak każdy posiada (appkę, którą instalujemy na telefonie każdy może w prosty sposób zdekompilować - np. narzędziem jadx). No dobra, w udostępnionym kodzie jest nawet mniej niż to co możemy sami zdobyć z appki - publicznie dostępnej od samego początku działania mobilnego mObywatela\
- NIE ma udostępnionego kodu API - czyli części serwerowej aplikacji, tj. tego co wszystkich chyba najbardziej interesuje (innymi słowy udostępniono tylko część kodu appki mobilnej)\
- Kolejna kontrowersja - jeśli za parę dni wyjdzie nowa wersja appki, to czy wyjdzie też nowa wersja kodu źródłowego? (wątpię ;) Dodatkowo - nie ma prostej metody sprawdzenia, czy udostępniony kod jest rzeczywiście tym, co jest uruchamiane na telefonie
- Sposób udostępnienia kodu jest niezbyt optymalny (delikatnie pisząc) - z jednej strony kod jest udostępniony na licencji MIT (czyli mocno liberalnej - to bardzo dobrze). Fragment licencji:
Niniejszym udziela się każdej osobie, która uzyska kopię tego oprogramowania i powiązanej dokumentacji (dalej „Oprogramowanie”), bezpłatnie, prawa do korzystania z Oprogramowania bez ograniczeń, w tym bez ograniczeń prawa do używania, kopiowania, modyfikowania (…)
Z drugiej strony dostęp jest tylko po zalogowaniu się (jako obywatel) i to w formie: HTML / pojedyncze pliki / bez łatwej możliwości skopiowania kodu przez zwykłego użytkownika (nie działa np. przeglądarkowe copy-paste) / nie ma nigdzie przycisku "pobierz".
Na szczęście są osoby, które wykonały deczko żmudną pracę i wrzuciły kod na GitHuba (uwaga - nie gwarantujemy, że w tym repozytorium jest poprawny kod :)
Dobre podsumowanie przygotował też Łukasz Olejnik, zaznaczając jednocześnie:
Żeby było jasne. Ja się nie czepiam. (...) Ale skoro już to zrobiono, to można było to zrobić porządnie. Nie zrobiono porządnie. Zrobiono byle jak, tak że to w ogóle jest bez sensu. (...)
Łukasz wskazuje też na pewne smaczki - czyli np. "Hello World" w udostępnionym kodzie:
https://twitter.com/prywatnik/status/2005913422160912770
Co z tego wszystkiego wynika? No niewiele - w zasadzie nie można przeaudytować bezpieczeństwa takiej aplikacji, nie można też proponować sensownych zmian (na poziomie kodu).
Dla jasności - uważamy że mObywatel to dobre rozwiązanie, nawet bardzo dobre. Ale w ten sposób udostępniać kod źródłowy całości? Dajcie spokój.
~ms
Michał Sajdak
Od przeszło 15 lat specjalizuje się w ofensywnym obszarze bezpieczeństwa IT, wykonał setki audytów bezpieczeństwa IT, przeszkolił dziesiątki tysięcy osób.
Posiadacz certyfikatów: CISSP, CEH oraz CTT+.
Uznany prelegent na konferencjach Mega Sekurak Hacking Party, PWNing, Confidence i wielu innych.
Może Cię zainteresować...
Krytyczna podatność (CVSS 9.8/10.0) w popularnym pakiecie do monitorowania urządzeń – Net-SNMP
W popularnym pakiecie Net-SNMP wykryto krytyczną lukę bezpieczeństwa typu stack based buffer overflow (CVE-2025-68615).
Parrot 7.0 “ECHO” już dostępny – najpoważniejsza aktualizacja od lat
Wydano nową wersję systemu Parrot – Parrot 7.0 “ECHO”. Bazuje na Debianie 13 “Trixie” z jądrem Linux 6.12 LTS.
Mega hack gry Rainbow Six Siege. Przelali graczom w walucie gry równowartość $339,960,000,000,000
Astronimiczna kradzież wirtualnej waluty i chaos na serwerach Ubisoftu. Analizujemy incydent w Rainbow Six Siege.