Doniesienia o celowo wbudowanej blokadzie ruchu pociągów EZT Impuls produkowanych przez firmę Newag słusznie zbulwersowały opinię publiczną.
Raport pożytecznych hakerów
Po analizie za pomocą technicznej inżynierii wstecznej wykonanej przez profesjonalistów cyberbezpieczeństwa działających w grupie Dragon Sector ustalono, że podmiot mający dostęp do kodu źródłowego oprogramowania sterującego pociągiem i możliwość ich instalacji w pociągach wdrożył system unieruchamiający pojazdy. Jego aktywacja była uzależniona od wielu warunków. Blokada programowa następowała w przypadku, gdy pojazd przez pewien czas stał nieruchomo, np. w lokalizacji konkurencyjnych zakładów naprawczych. Sytuacja jest znana z prezentacji na konferencji Oh My H@ck! oraz relacji medialnych.
Pożyteczna grupa hakerów działała metodycznie, korzystając z pomocy prawnej oraz w części przypadków z zewnętrznego zespołu audytorów, co uniemożliwia proste kwestionowanie ustaleń, a pomaga w argumentacji na potrzeby ewentualnych procesów prawnych lub regulacyjnych. Opracowanie to bowiem ma wartość dowodową, nawet o standardach kryminalistyki śledczej. Zabezpieczono wszelkie możliwe wersje oprogramowania, zgrane nieinwazyjnie (bez ingerencji lub modyfikacji systemów sterowania) z urządzenia w pociągach, sterownika Selectron CPU 831-TG. Przyjęto wstępne założenie, że za blokady musi odpowiadać kod sterownika programowany przez producenta lub podwykonawców. Taki binarny obraz można zgrać bez żadnej modyfikacji. W taki właśnie sposób analizowano zawartość pamięci sterowników przed wysłaniem i po wysłaniu jednostek trakcyjnych do naprawy w zakładach Newag. Raporty udostępniono zarówno klientom, jak i służbom państwowym. Te wiedzą o sprawie od dawna. Jednak niektóre z poinformowanych struktur państwowych takich jak UOKiK, z niezrozumiałych powodów najwyraźniej zaniechały podejmowania działań (do momentu publikacji UOKiK nie udzielił odpowiedzi na pytania w tej sprawie) lub też milczą na ten temat.
W obliczu takiego skandalu opinia publiczna domaga się działań.
Pociągi zatrzymane celowo
Sześć raportów z prac przekazali mi specjaliści z Dragon Sector. Szczegóły techniczne konsultowałem z trójką z nich – Michałem Kowalczykiem, Jakubem Stępniewiczem i Sergiuszem Bazańskim.
Prace „prowadzono celem wyjaśnienia usterki uniemożliwiającej pojazdom wyjazd z siedziby Zleceniodawcy”. Wszelkie zarzuty o rzekome kampanie czarnego PR-u można włożyć między bajki. To raporty dla klientów, spółek kolejowych i zakładów naprawczych; ewentualne ujawnienie nazw zostawiam tym podmiotom. Mogę jednak bez wątpliwości potwierdzić wszystkie informacje techniczne wysuwane w przestrzeni publicznej.
Według raportów pociągi były unieruchamiane celowo, za pomocą specjalnie stworzonego oprogramowania. Blokady następowały w wyniku spełnienia określonych kryteriów. Programowo blokowano instrukcje podawania mocy do falownika MEDCOM FT500-3k jednostki trakcyjnej. Falowniki to elementy dostarczające prąd do silników. Bez mocy pociąg nie jedzie.
W raporcie jest przedstawiany pełen zapis logów komunikacji między urządzeniami w pociągach. To standardowa analiza pomagająca w ustaleniu tego, jak zachowuje się system w różnych sytuacjach. W sytuacji normalnej (bez blokady) polecenia uruchomienia falownika były poprawnie nadawane. Zaobserwowane instrukcje uległy zmianie w przypadku aktywnej blokady pojazdu. W zapisie dokładnie widać polecenia zwalniania hamulców i skutecznego zadawania mocy do czterech falowników. W przypadku blokady brak jest polecenia zadawania mocy. Dla każdego analityka to oczywista różnica. Wdrożono też kod uniemożliwiający wymianę podzespołów, np. zastąpienie sprzętu takim z innego pojazdu (z niezablokowanym oprogramowaniem). To kolejne utrudnienie „naprawy”.
Analiza wsteczna to technika odtwarzania zasad działania oprogramowania (kodu źródłowego, algorytmów) z ich wersji binarnych i skompilowanych. W raportach jest zawarty także zrekonstruowany kod źródłowy. Jego odtworzenie musiało być żmudną pracą. Logika nie pozostawia wątpliwości co do włączania blokad po spełnieniu kryteriów. Blokadę nakładało oprogramowanie celowo w ten sposób zaprojektowane i wgrane do pociągów. Odkryto różne kryteria uruchamiania blokady. To np. nieużywanie pojazdów przez określoną liczbę dni, nieosiągnięcie prędkości 60 km/h przez co najmniej trzy minuty w zadanym okresie (jej osiągnięcie resetowało licznik), postój w określonych siedmiu lokalizacjach (wskazujących na warsztaty naprawcze różnych firm, np. PESA Bydgoszcz, SPS). Analitycy w raporcie podejrzewają, że ktoś, kto wdrożył ten kod, mógł zdalnie monitorować stan blokad.
W obliczu ustaleń jednemu z klientów autorzy opracowania zalecili, by „w celu zapobieżenia aktywacji blokady przynajmniej raz na 20 dni uzyskać pociągiem przez przynajmniej trzy minuty prędkość 60 km/h. Dodatkowo pociąg musi być pod zasilaniem trakcyjnym podczas ww. trzech minut”.
W jednym przypadku system zgłaszał awarię sprężarki pomocniczej, co unieruchamiało odbierak prądu w sytuacji, kiedy pociąg dłużej pozostawał nieużywany. Sprężarka w pociągu to ważny element, w zależności od modelu ma wpływ na działanie podzespołów, takich jak: hamulce, odbieraki prądu, czasem nawet drzwi. Blokada sprężarki miała się uruchamiać po przejechaniu 1 mln km. Szczęśliwie wciąż była możliwość, by po opuszczeniu pantografu w trakcie jazdy dało się go podnieść i jechać dalej. Chyba że z jakichś powodów (przypadkowa awaria) nie zadziałałaby też sprężarka główna i system pomocniczy. Wtedy mogłoby dojść do zatrzymania się pociągu w trasie. Czy potencjalnie zwiększone ryzyko nieplanowanego zatrzymania w trasie pociągu z pasażerami to nie jest sprawa, która powinna zainteresować UTK? W innym przypadku zachodziło też podejrzenie możliwości zdalnej blokady pojazdu za pośrednictwem sieci komórkowej GSM.
Niektóre ograniczenia można było zdejmować za pomocą specjalnych kombinacji przycisków w kabinie maszynisty. Kombinacje te nie były nigdzie udokumentowane, a po aktualizacji oprogramowania w warsztacie producenta usunięto je.
Błędy w kodach i... komunikacji
To wszystko rodzi wiele pytań o konkurencję na rynku napraw pojazdów. Ale także o bezpieczeństwo w ruchu kolejowym oraz o cyberbezpieczeństwo. Swoista bomba logiczna po uruchomieniu wywoływała blokadę dostępności takiego systemu, coś, co niewątpliwie mogli odczuć pasażerowie. Zwłaszcza bezpieczeństwo pasażerów to poważna sprawa. Wbudowywano funkcje niewątpliwie zbędne w takiej jednostce trakcyjnej. Analitycy ustalili, że nawet w tych funkcjach były błędy programistyczne. Przykładowo, blokady włączane w odpowiedzi na datę, powodując blokadę pojazdu każdego roku między 21 a 31 listopada i grudnia, a najpewniej miała się uruchamiać od 21 listopada 2021 r. To rodzi pytania o jakość kodu programistycznego sterującego jednostką trakcyjną. Skoro błędy były w tak niewielkim fragmencie kodu, to co z tysiącami innych. UTK zasłaniania się brakiem uprawnień. Kompetencje do zapewniania bezpieczeństwa w kolejnictwie niewątpliwie jednak ma.
Niezrozumiałe są wypowiedzi wypływające z firmy Newag, wymierzone w kompetencje specjalistów Dragon Sector. Nie brzmią wiarygodnie, gdy po jednej stronie mamy światowej klasy specjalistów o uznanej reputacji, spokojnie przedstawiających ustalenia – a po drugiej – pracowników komunikacji prasowej wysuwających zarzuty, czasem wręcz nielogiczne i nieścisłe technicznie.
W pewnym sensie jest to kwestia PR cyberbezpieczeństwa. Firma nie popisała się uzdolnieniami do komunikacji publicznej w sytuacji kryzysu komunikacyjnego. Kwestionowanie kompetencji i wysuwanie jakichś bliżej niezdefiniowanych zarzutów o rzekomym naruszeniu prawa – to w świecie często popełniane przez inne firmy błędy w takich sytuacjach. Nigdy nie doprowadziły one do pożądanych skutków. Wręcz przeciwnie. Tak będzie i teraz, bo wyniki bronią się same.
Ustalenia techniczne są jasne. Potencjalnych kryteriów prawnych można wyobrazić sobie wiele: ochrona konkurencji, bezpieczeństwo transportu, paraliż systemów informatycznych, oszustwo komputerowe i zapewne wiele innych, jak np. kwestia przetargów publicznych. Ostatecznie to sprawa honorowa dla polskich urzędów i organów, gdyż wydaje się, że wystarczy zastosować istniejące prawo. Gdzie więc leży problem? ©℗