8 ciężkich błędów: przyczyny klęski aplikacji wyborczej PKW

Drugiego dnia po wyborach samorządowych w internecie pojawił się zdekompilowany kod kalkulatora, zasadniczego modułu aplikacji wyborczej. O ocenę niektórych technicznych aspektów poprosiliśmy anonimowo doświadczonych programistów.

Fatalne błędy programistyczne

Każde oprogramowanie może zawierać błędy, gdyż jest tworzone jedynie przez ludzi. W procesie tworzenia każdej profesjonalnie opracowanej aplikacji przewiduje się czas i zasoby na usuwanie tych błędów przed oddaniem systemu do pracy produkcyjnej. Proces takich testów jest czasochłonny, kosztowny, ale niezbędny, by osiągnąć oczekiwany poziom stabilności i bezpieczeństwa aplikacji. W przypadku oprogramowania Kalkulator, obsługującego komisje wyborcze, tej staranności nie dochowano. Próbki kodu aplikacji udostępnione w serwisie Github udowadniają to ponad wszelką wątpliwość. Podobne informacje podawał już serwis Niebezpiecznik, można znaleźć również dokładne analizy wskazujące na błędy popełniane przez początkujących programistów. Wpływ tego problemu na załamanie projektu – niemal pewny.

Problemy wydajnościowe

Każda aplikacja przy większym obciążeniu może powodować problemy. Jest to naturalne zjawisko, które może wystąpić w prawie każdym projekcie, dlatego przeprowadza się testy wydajnościowe, by ewentualne problemy wychwycić na początkowym etapie rozwoju. Wnioski z takich testów posłużą później do ewentualnej korekty planów obciążenia instancji produkcyjnej. W przypadku tej aplikacji testy wydajnościowe udowodniły, że obsługa całego przedsięwzięcia nie byłaby możliwa. Jedną z przyczyn była także niedostateczna wydajność systemów PKW, z którymi zintegrowane było środowisko obsługi komisji wyborczych. Wpływ tego problemu na załamanie projektu – pewny.

Niedostateczne zabezpieczenia po stronie aplikacji i serwera

Analiza kodu udowodniła, że w samym procesie przesyłania dokumentów na serwer nie stosowano żadnego uwierzytelnienia. Oznacza to, że każdy mógł przesłać fałszywe dokumenty na serwer, a zatem atak odmowy obsługi można zrobić z całą pewnością, a potencjalnie możliwe jest też uzyskanie wpływu na wynik wyborów (przyczyną jest między innymi akceptowanie przez aplikację dowolnego certyfikatu .pem zgodnego z prostymi do spełnienia kryteriami). Wpływ tego problemu na załamanie projektu – prawdopodobny.

Bardzo krótki czas na wdrożenie projektu

Projekt realizowano w wielkim pośpiechu. Przetarg ogłoszony w listopadzie 2013r. został unieważniony, a ostatecznie zwycięzcę, który miał dostarczyć niezbędne oprogramowanie wyłoniono dopiero 4 sierpnia 2014 r. W tak krótkim czasie przygotowanie oprogramowania obsługującego skomplikowany proces jest trudne. Wpływ tego problemu na załamanie projektu – pewny.

Brak doświadczenia programistów

W przetargu na opracowanie, wykonanie i wdrożenie systemu obsługi wyborów startowała tylko jedna mało doświadczona, dwuosobowa firma Nabino. Siłą rzeczy program musieli tworzyć bardziej lub mniej przypadkowi programiści pracujący na zlecenie, co zawsze przekłada się na jakość pracy.

Faktycznie, z metadanych dokumentów znajdujących się na serwerach Państwowej Komisji Wyborczej wynika, że pewna część prac związanych z przygotowaniem szablonów była wykonywana przez osoby z niewielkim doświadczeniem programistycznym. Wpływ tego problemu na załamanie projektu – prawdopodobny.

Ograniczenia prawne

Instytucja państwowa taka jak na przykład Państwowa Komisja Wyborcza jest zmuszona do zakupu rozwiązań przez przetarg zgodny z odpowiednią ustawą o zamówieniach publicznych. Jednym z najważniejszych kryteriów jest wtedy cena oferowanego rozwiązania. Specjaliści uważają, że w ten sposób preferuje się rozwiązania przygotowywane najniższym kosztem, wdrażane w oszczędnościowy sposób, co w praktyce może później przynieść negatywne skutki. Wpływ tego problemu na załamanie projektu – bardzo prawdopodobny.

Brak specjalistów w obrębie firmowego IT

Organizacja taka jak Państwowa Komisja Wyborcza powinna zadbać o bezpieczeństwo projektu, a także całej infrastruktury, która jest z tym projektem związana. Tymczasem publicznie dostępny serwer w czasie wyborów był podatny na znany wcześniej atak nazywany „poodle” - udowodniły to testy przeprowadzone za pomocą oprogramowania firmy Tinfoil Security. Nie zastosowano podstawowego zalecenia bezpieczeństwa związanego z podatnością SSL. Być może zaniedbań było więcej, niemniej już ta jedna podatność umożliwia przeprowadzenie ataku. Wpływ tego problemu na załamanie projektu – prawdopodobny.

Brak kontroli dostępu na poziomie sieci

Serwer związany z obsługą komisji wyborczych był dostępny publicznie z Internetu bez żadnego uwierzytelnienia. Środkiem zaradczym w takim przypadku byłoby wprowadzenie zabezpieczeń na przykład za pomocą wirtualnej sieci prywatnej wyposażonej choćby w podstawowe mechanizmy uwierzytelnienia wdrożone zgodnie ze standardowymi procedurami. W najprostszym modelu można było wymagać hasła do połączenia z serwerem w sesji SSL. Za pomocą podobnych zabezpieczeń można było poważnie ograniczyć możliwość ewentualnego ataku polegającego na wysyłaniu fałszywych protokołów. Wpływ tego problemu na załamanie projektu – prawdopodobny.


TOP 200