Reklama

Polityka i prawo

#CyberMagazyn: Kod źródłowy mObywatela. Dlaczego należy go upublicznić?

Wokół publikacji kodu źródłowego mObywatela pojawiło się wiele kontrowersji
Wokół publikacji kodu źródłowego mObywatela pojawiło się wiele kontrowersji
Autor. Materiały prasowe mObywatel

mObywatel 2.0 to aplikacja, która znacząco ułatwiła życie milionom Polaków. W połowie lipca ubiegłego roku mDowód został zrównany z tradycyjnym dowodem osobistym. Ostatnio zaczęły pojawiać się kontrowersje dotyczące publikacji kodu źródłowego, która wpisana jest w ustawę o tej aplikacji.

mObywatel jest kluczową aplikacją w Polsce, ponieważ pozwala m.in. na udział w wyborach czy potwierdzenie tożsamości w określonej sytuacji. Niestety w praktycznie każdym oprogramowaniu mogą wystąpić luki bezpieczeństwa, które mogą zostać wykorzystane przez potencjalnych atakujących.

Kod mObywatela powinien być jak najszerzej dostępny publicznie, aby analitycy mogli wykryć w nim ewentualne podatności. Istnieje niewiele przesłanek wskazujących na niepełną publikację kodu, lecz również należy je rozważyć.

Podstawa prawna publikacji kodu

Ustawa z dnia 26 maja 2023 r. o aplikacji mObywatel weszła w życie 14 lipca ubiegłego roku. W art. 82 ustawy można przeczytać:

Minister właściwy do spraw informatyzacji po raz pierwszy udostępni kod źródłowy aplikacji mObywatel w Biuletynie Informacji Publicznej na swojej stronie podmiotowej w terminie 12 miesięcy od dnia wejścia w życie niniejszej ustawy.

Oznacza to, że zgodnie z ustawą kod źródłowy aplikacji powinien być upubliczniony najpóźniej za nieco ponad dwa miesiące.

Czytaj też

Reklama

Poprawka Komisji Administracji i Spraw Wewnętrznych

8 maja br. wiceminister cyfryzacji Michał Gramatyka na portalu X zamieścił wpis, który mówi o modułowej publikacji kodu mObywatela na wzór ukraińskiej Diia (odpowiednika mObywatela).

Pomysł wzbudził kontrowersje wśród wielu osób na platformie X. Sprawę opisaliśmy na łamach CyberDefence24.

Czytaj też

Reklama

Czym jest otwartoźródłowy kod?

Przede wszystkim należy zdefiniować samo wyrażenie „otwartoźródłowy kod”. Otwarte oprogramowanie to takie, którego kod jest dostępny publicznie – tzn. możemy przeanalizować to, jakich poleceń użył programista podczas pisania kodu.

Wiele programów ma zamknięte źródło. W przypadku aplikacji na systemy Windows oznacza to, że mamy do dyspozycji gotowy plik wykonywalny (o rozszerzeniu .exe). Jeżeli producent nie udostępnił kodu aplikacji, przy analizie zostaje nam jedynie inżynieria wsteczna.

Dobrym przykładem wolnego oprogramowania są dystrybucje Linuksa. Przykładowo, cały kod źródłowy Debiana jest dostępny do analizy i jego ponowne wykorzystanie jest możliwe na tych samych warunkach na jakich został udostępniony.

Kod źródłowy Debiana możliwy do przeglądania
Kod źródłowy Debiana możliwy do przeglądania
Autor. https://sources.debian.org/

Krótkiego komentarza o otwartoźródłowym kodzie udzielił nam Krzysztof Godzisz, autor publikacji o IT.

„Otwarte oprogramowanie umożliwia użytkownikom dostęp do swojego kodu źródłowego. Użytkownicy mogą swobodnie przeglądać, modyfikować i dostosowywać kod do własnych potrzeb oraz udostępniać go. Open Source jest bardzo ważny dla rozwoju innowacji i badań. Dzięki dostępowi do kodu błędy są szybko wykrywane i naprawiane, co przyspiesza proces rozwiązywania problemów w procesie tworzenia oprogramowania” – podkreślił dla CyberDefence24 ekspert.

Jak dodaje: „Publikacja kodu źródłowego ma jednak swoje wady. Z jednej strony, im szybciej kod stanie się publicznie dostępny, tym szybciej można uzyskać różnego rodzaju opinie i wsparcie. Brak bariery dostępu sprawia, że więcej osób jest w stanie wychwycić błędy oraz różnego rodzaju luki. Z drugiej natomiast strony należy pamiętać o tym, że sama publikacja kodu nie jest gwarantem jego bezpieczeństwa. Zarówno w tym, jak i w innych przypadkach nie istnieje złoty środek, za pomocą którego można zagwarantować bezpieczeństwo”.

Dobrym przykładem zalet otwartego kodu jest znalezienie podatności w xz, które opisywaliśmy na łamach CyberDefence24. Jeżeli podobna podatność wystąpiłaby w zamkniętym oprogramowaniu, byłaby ona praktycznie niemożliwa do znalezienia.

Otwarcie kodu źródłowego pozwala społeczności na znalezienie podatności zanim zrobi to np. Lazarus lub inna grupa cyberprzestępców.

Czytaj też

Reklama

Kod źródłowy mObywatela – głos ekspertów

Monika Krupska na łamach HomoDigital pisze: „Kod źródłowy mObywatela ma około 2,5 mln linijek kodu, 50 modułów, do tego 52 tysiące modyfikowanych plików i 40 mikroserwisów korzystających z API. Niezły i rozległy labirynt kodu, w którym mogą ukrywać się różne niespodzianki. I o te niespodzianki tutaj chodzi”.

W artykule dodaje, że upublicznienie kodu źródłowego jest ważne ze względu na transparentność w działaniach władzy.

Czytaj też

Z kolei Tomasz Janusz, architekt usług i oprogramowania, w rozmowie z CyberDefence24 mówi: „Udostępnienie kodu źródłowego aplikacji mObywatel trzeba rozpatrywać na wielu płaszczyznach. Zacznijmy od bardzo podstawowych rzeczy: to, że obecnie obywatele nie mają dostępu do kodu źródłowego aplikacji nie oznacza, że nikt nie ma możliwości jej analizowania. Każdą aplikację mobilną można próbować poddawać procesowi inżynierii wstecznej. Jest to żmudny proces, który wymaga czasu i pieniędzy. To nie są deficytowe rzeczy w organizacjach, które mogłyby chcieć wykorzystywać błędy w aplikacji”.

Jak dodaje, otwarcie kodu źródłowego pozwala na szybsze znajdowanie, a przez to naprawę błędów, ale tylko jeżeli Ministerstwo Cyfryzacji stworzy ramy współpracy między społecznością, a zespołami IT w resorcie.

„Obecnie ustawa przewiduje jedynie udostępnienie kodu źródłowego w Biuletynie Informacji Publicznej, który nie jest dobrym miejscem do pracy grupowej. Byłoby fantastycznie, aby resort Cyfryzacji równolegle udostępnił ten kod np. na GitHubie i aktywnie prowadził ten projekt w tym miejscu. Odbyłoby to się z korzyścią zarówno dla Polski jak i tych właśnie programistów. Polska ma wspaniałych programistów, którzy są aktywni i chcą się rozwijać. Otwarty proces rozwojowy tej aplikacji mógłby być dobrą okazją dla nich do realizacji swojego zapału i okazją zdobywania doświadczenia” - podkreśla Tomasz Janusz.

Ekspert stwierdza, że znakiem zapytania jest obecny stan tej aplikacji. „Teoretycznie mObywatel jest aplikacją kliencką, która łączy się z rządowymi usługami sieciowymi. W teorii udostępnienie kodu źródłowego mObywatela nie powinno nieść żadnego zagrożenia. Dopuszczać trzeba jednak wariant, że są w aplikacji elementy, które powinny nie być opublikowane lub zostać przeniesione z aplikacji na serwery rządowe” - zaznacza.

Podsumowując, udostępnienie kodu źródłowego mObywatela nie powinno stanowić żadnego zagrożenia dla bezpieczeństwa Polaków. Nie możemy się jednak o tym przekonać do momentu publikacji owego kodu.

Czytaj też

Diia i jej otwartość

Ukraińska Diia jest dostępna na GitHubie. Wskazano również jej licencjonowanie. Co ciekawe, można również nanosić do niej poprawki, co robią miłośnicy otwartego oprogramowania.

Ukraińska Diia na GitHubie
Ukraińska Diia na GitHubie
Autor. https://github.com/diia-open-source/android-diia
Przykład poprawek miłośnika open-source
Przykład poprawek miłośnika open-source
Autor. https://github.com/diia-open-source/be-pkg-utils/pull/4

Niestety dzisiejszy stan prawny zakłada, że kod źródłowy mObywatela zostanie opublikowany w Biuletynie Informacji Publicznej (Dz.U. 2023 poz. 1234, Art. 82).

Najlepszym rozwiązaniem z punktu zaufania do instytucji publicznych byłaby sytuacja, gdzie Ministerstwo Cyfryzacji zdecydowałoby się na publikację kodu w stylu Diia. Mowa o publikacji w prawdziwym duchu wolnego oprogramowania – z możliwością sugerowania zmian i otwartej debaty.

Czytaj też

Ewentualne zagrożenia

Nie znamy przyczyn próby zaniechania publikacji pełnego kodu źródłowego. We wspomnianym artykule Monika Krupska zaznacza, że pełna publikacja kodu źródłowego mogłaby m.in. pomóc cybeprzestępcom w przeprowadzaniu ataków na użytkowników. Dodaje również, że front-endowa część aplikacji jest już dostępna do analizy przez użytkowników.

„Jeżeli nikt nie znajdzie w kodzie żadnych niepokojących fragmentów (np. zbierających dane, które obywatel wolałby zachować dla siebie, albo luk, które można wykorzystać np. do cyberataku), jego udostępnienie wyjdzie nam wszystkim zdecydowanie na dobre. Jeżeli jednak coś będzie nie w porządku, to raczkujące zaufanie do rządowych aplikacji spadnie do zera i rozpocznie się dobrze znana „ożywiona dyskusja” dotycząca zawiłego problemu rezygnowania z kolejnego fragmentu anonimowości i wolności na rzecz bezpieczeństwa państwa. Oczywiście pod warunkiem, że udostępniony zostanie cały kod. I dokumentacja” – pisze ekspertka.

Czytaj też

Podsumowanie

Miejmy nadzieję, że pomysły związane z ograniczoną publikacją kodu źródłowego mObywatela jest podyktowana jedynie względami bezpieczeństwa i nie ma na celu zatuszowania czegokolwiek. Takie wątpliwości rozwiałaby pełna publikacja kodu.

Zaufanie do organów państwowych w naszym kraju zostało mocno nadszarpnięte, m.in. po kontrowersjach związanych z Pegasusem. Pełna publikacja kodu źródłowego jest przede wszystkim na rękę państwu, ponieważ zarzuty o ukrywanie czegokolwiek w rządowej aplikacji staną się bezpodstawne.

Jako zwolennik wolnego oprogramowania trzymam kciuki za jak najszerszą publikację kodu źródłowego. Sprawa na pewno nie umknie uwadze zwolennikom otwartego opgrogramowania.

Serwis CyberDefence24.pl otrzymał tytuł #DigitalEUAmbassador (Ambasadora polityki cyfrowej UE). Jeśli są sprawy, które Was nurtują; pytania, na które nie znacie odpowiedzi; tematy, o których trzeba napisać – zapraszamy do kontaktu. Piszcie do nas na: [email protected].

Reklama

Komentarze

    Reklama