W świecie technologii i cyberbezpieczeństwa często słyszymy o transparentności jako kluczowym elemencie budowania zaufania. Jednak praktyka pokazuje, że nie zawsze to, co na pierwszy rzut oka wygląda na krok w dobrą stronę, jest nim faktycznie. Tak właśnie było w przypadku ostatniego zamieszania związanego z udostępnieniem kodu źródłowego aplikacji mObywatel przez Ministerstwo Cyfryzacji.
Oczekiwania były duże: optymiści spodziewali się, że otwarcie kodu mObywatela pomoże w wykrywaniu potencjalnych luk w zabezpieczeniach, co finalnie przyczyni się do podniesienia poziomu bezpieczeństwa. Niestety, rzeczywistość okazała się inna. Udostępniono jedynie część kodu w postaci plików HTML, które można porównać do okładki książki — wizualnej części aplikacji, która sama w sobie nie zawiera najważniejszych informacji o jej działaniu. Nie opublikowano za to plików JavaScript, gdzie zasadniczo znajduje się „mózg” aplikacji. W kontekście cyberbezpieczeństwa, to właśnie te pliki są najczęściej interesujące dla specjalistów chcących sprawdzić, jak aplikacja przetwarza dane i czy w jej działaniu nie ma luk.
Dlaczego warto przyjrzeć się sytuacji mObywatela? Przede wszystkim, przypadek ten pokazuje, jak kluczowe jest zrozumienie, co faktycznie znaczy udostępnienie kodu źródłowego. Nie chodzi tylko o cieszenie się z otwartości i transparentności, ale przede wszystkim o rzeczywistą możliwość analizy i testowania aplikacji pod kątem bezpieczeństwa.
To wydarzenie jest także idealnym przykładem, jak bardzo różne części kodu aplikacji różnią się pod względem ich znaczenia z perspektywy bezpieczeństwa. HTML tworzy szkielet i prezentację aplikacji, ale tylko w połączeniu z logiką biznesową zawartą w skryptach JavaScript możemy mówić o pełnym obrazie, który pozwala wyciągać realne wnioski.
Pentesterzy i specjaliści ds. bezpieczeństwa zazwyczaj koncentrują się na analizie logiki oraz przetwarzaniu danych – a te aspekty ukryte są właśnie we wspomnianych skryptach. W ten sposób mogą wykrywać błędy i luki, zanim zrobią to osoby o złych intencjach. Udostępnienie pełnego kodu, łącznie z plikami JavaScript, mogłoby przyczynić się do stworzenia bardziej bezpiecznej aplikacji.
Cała sytuacja rzuca również światło na praktyki „security through obscurity” — polegające na ukrywaniu szczegółowych informacji dotyczących działania systemów. Choć w przeszłości było to powszechną praktyką, obecnie rośnie świadomość, że takie podejście nie jest wystarczające. Opieranie bezpieczeństwa tylko na ukrywaniu detali jest iluzoryczne, gdyż wprawni hakerzy i tak potrafią uzyskać dostęp do chronionych informacji.
Warto też wspomnieć, że takie półśrodki w udostępnianiu kodu mogą prowadzić do dezinformacji lub rozproszenia uwagi opinii publicznej na faktycznie istotne kwestie. Transparentność, owszem, jest ważna, ale tylko wtedy, gdy pozwala na rzeczywiste zwiększenie poziomu bezpieczeństwa, a nie tworzy jedynie iluzję otwartości.
Osoby związane z cyberbezpieczeństwem powinny na bieżąco śledzić takie przypadki i dążyć do edukacji społeczeństwa w zakresie prawdziwej wartości transparentności kodu. Kluczowe jest, aby rozwiązania, które mają zwiększać bezpieczeństwo, nie pozostawały jedynie na poziomie deklaracji, ale faktycznie przyczyniały się do poprawy ochrony danych. Pokazuje to także, jak wiele jeszcze jest do zrobienia w kwestii standardów transparentności w projektach realizowanych przez instytucje publiczne.
Ostatecznie, przypadek mObywatela stanowi ważną lekcję dla całej społeczności zajmującej się bezpieczeństwem. To przypomnienie, że udostępnianie kodu musi być realizowane z pełnym zrozumieniem jego celów i konsekwencji dla wzmocnienia zaufania oraz realnego podniesienia poziomu cyberbezpieczeństwa.






