Przejdź do treści

Pieśni o Bezpieczeństwie Sieci
blog Michała "ryśka" Woźniaka

Newag przyznaje: hakerzy z Dragon Sector nie modyfikowali oprogramowania w Impulsach

Ten tekst został napisany na zlecenie OKO.press i tam oryginalnie opublikowany.

Poprawne uznanie autorstwa tego tekstu to: "Michał 'rysiek' Woźniak, Fundacja Ośrodek Kontroli Obywatelskiej „OKO”", powinno też zawierać odnośnik do oryginalnego tekstu w portalu OKO.press.

We środę 28. sierpnia ruszył proces o naruszenie praw autorskich, wytoczony przez Newag firmie Serwis Pojazdów Szynowych oraz ekspertom z grupy Dragon Sector, którzy ujawnili aferę z dziwnymi blokadami pociągów Impuls. Producent Impulsów domaga się prawie sześciu milionów złotych zadośćuczynienia. Przyznaje przy tym, że hakerzy nie modyfikowali oprogramowania zainstalowanego w pociągach.

Pod koniec 2023 roku Onet i Zaufana Trzecia Strona doniosły o sprawie blokujących się pociągów pasażerskich Impuls. Ja opisałem temat dla OKO.press w grudniu. Newagowskie składy od lat doświadczały podejrzanych awarii. Unieruchamiały one pojazdy często po serwisie przez niezależne od Newagu warsztaty serwisowe, takie jak firma Serwis Pojazdów Szynowych (SPS).

Dokonana przez zatrudnionych przez SPS hakerów, ekspertów od systemów wbudowanych, analiza oprogramowania wgranego na kontrolery zainstalowane w pojazdach wskazuje na celowo zaimplementowane blokady, załączające się, gdy spełnione są konkretne warunki. Warunki te wydają się być dobrane w taki sposób, by blokady włączały się w pojazdach, które były serwisowane przez niezależne od Newagu warsztaty serwisowe.

Wnioski z tej analizy uznane zostały za wiarygodne przez Zespół Reagowania na Incydenty Bezpieczeństwa Komputerowego NASK.

W wyniku analizy, hakerom z grupy Dragon Sector udało się zablokowane składy uruchomić. Wyjaśnili też, w jaki sposób tego dokonali, i dlaczego Impulsy się blokowały.

Newag zaprzecza

Newag kategorycznie zaprzecza, że ma z blokadami cokolwiek wspólnego.

Ale nie podaje żadnego przekonywającego wyjaśnienia, skąd w produkowanych przezeń pojazdach Impuls – i tylko w nich! – eksploatowanych przez szereg różnych przewoźników na terenie całego kraju znalazły się takie funkcje blokujące. “Mamy 23 typy pojazdów i w żadnym się nie spotkaliśmy z takim zjawiskiem jak w tym pojeździe” – powiedział na spotkaniu pod koniec lutego w Sejmie Piotr Wakuła, dyrektor biura eksploatacyjno-technicznego Kolei Mazowieckich.

Newag odmawia też odpowiedzi na pytanie, w jaki sposób był w stanie zablokowane pojazdy uruchamiać. Moje pytanie rzecznik spółki zbył: “Nasze działania sprowadzały się przywrócenia prawidłowego poziomu integralności tych systemów (diagnostyka, weryfikacja i walidacja).” Na prośbę o uszczegółowienie nie odpisał.

Ta “diagnostyka, weryfikacja i walidacja” powtarzała się też jak mantra na spotkaniach parlamentarnego zespołu ds. walki z wykluczeniem transportowym, i nie usatysfakcjonowała tam ani przewoźników, ani przedstawicielek i przedstawicieli parlamentu.

Zamiast wyjaśnienia sprawy, spółka pozywa hakerów z grupy Dragon Sector oraz firmę SPS o naruszenie praw autorskich do oprogramowania zainstalowanego w Impulsach. Oraz domaga się od ABW “objęcia specjalnym nadzorem” wszystkich osób które uczestniczyły w konferencji Oh My Hack!, na której członkowie grupy Dragon Sector zaprezentowali swoje ustalenia.

Skąd w oprogramowaniu blokady?

Kilka miesięcy temu zapytałem Newag o to, skąd w oprogramowaniu Impulsów znalazły się opisane w analizie ekspertów z Dragon Sector blokady. W odpowiedzi rzecznik prasowy spółki, Łukasz Mikołajczyk, podważał w ogóle fakt ich istnienia:

“Nie posiadamy wiedzy czy opisywane w mediach blokady w ogóle kiedykolwiek istniały. (…) Możemy jedynie raz jeszcze podkreślić, że w posiadanym przez nas kodzie źródłowym tego rodzaju rozwiązania nie występują.” – czytam w odpowiedzi, nadesłanej 4. kwietnia.

Ale już parę akapitów dalej w tym samym dokumencie rzecznik Newagu mało subtelnie insynuuje, że to sami eksperci z Dragon Sector takie blokady do oprogramowania Impulsów wprowadzili:

Istnieje teoria, zgodnie z którą SPS Mieczkowski postanowił poradzić sobie z przeszkodą braku specyfikacji technicznej w inny sposób i wynajął hakerów, żeby zakończyć czynności utrzymaniowe pojazdów bez konieczności zakupu licencji od NEWAG.

Gdyby to ta historia okazała się prawdziwa znaczyłoby to, że hakerzy włamali się do oprogramowania pojazdów IMPULS, mimo, iż nie posiadali kodu źródłowego i nie znając systemu wprowadzili takie zmiany w oprogramowaniu, które doprowadziły do tego, że pociągi „wariują”.

Wielokrotnie próbowałem dopytać, czyja to teoria, i czy zdaniem spółki Newag to specjaliści z Dragon Sector zaimplementowali w oprogramowaniu te blokady. Odpowiedzi do dziś nie uzyskałem. Ale podobne twierdzenia Newag zamieścił w swoim oświadczeniu z grudnia 2023 r.:

W naszej ocenie prawda może być zupełnie inna – że np. to konkurencja ingerowała w oprogramowanie. Powiadomiliśmy w tej sprawie właściwe służby. Zresztą nie pierwszy raz powiadamiamy organy ściągania, iż w nasze oprogramowanie modyfikowane jest bez naszej autoryzacji.

A mimo to w pozwie Newagu o naruszenie praw autorskich możemy przeczytać, że:

W ramach podjętych (przez ekspertów z Dragon Sector – przyp. red.) działań nie doszło do zainstalowania zmienionego Oprogramowania

Skąd ta nagła zmiana frontu?

Wyrok C‑13/20

Od początku afery z Impulsami ich producent podkreśla, że jego zdaniem eksperci z Dragon Sector naruszyli jego prawa autorskie do oprogramowania zainstalowanego w kontrolerach tych pociągów. Musieli bowiem to oprogramowanie skopiować z pamięci trwałej kontrolerów, po czym je zdekompilować w celu analizy, na co Newag firmie SPS ani zatrudnionym przez nią hakerom pozwolenia nie udzielił.

Prawo autorskie pozwala jednak dokonać inżynierii wstecznej oprogramowania w określonych sytuacjach. Potwierdza to wyrok wyrok C-13/20 wydany przez Trybunał Sprawiedliwości Unii Europejskiej w sprawie Top System. Chodziło w niej też o rzekome naruszenie praw autorskich związane z dekompilacją oprogramowania w celu naprawy jego błędów.

Trybunał orzekł, że:

…uprawniony nabywca programu komputerowego może dokonać dekompilacji całości lub części tego programu w celu poprawienia błędów mających wpływ na jego funkcjonowanie, również w przypadku gdy poprawienie polega na wyłączeniu funkcji zakłócającej prawidłowe funkcjonowanie aplikacji, której program ten jest częścią.

I że uzyskanie odpowiedniej licencji od producenta oprogramowania nie jest w takim wypadku niezbędne.

Przyznając, że specjaliści z Dragon Sector nie wprowadzili zmian w oprogramowaniu Impulsów Newag próbuje twierdzić, że nie “naprawili” oni samego oprogramowania, a co za tym idzie wyrok C-13/20 nie ma zastosowania.

“DS (Dragon Sector – przyp. red.) stwierdzili, że przyczyną unieruchomienia Pojazdów Impuls 45WE był rzekomo parametr znajdujący się w pamięci Sterownika Selectron. Po jego zmianie udawało się uruchomić Pojazdy Impuls 45WE. Nie jest to jednak naprawa, ponieważ nie stwierdzono awarii” – czytamy w pozwie.

“Ani DS, ani SPS nie dokonali żadnej ‘naprawy’ Oprogramowania NEWAG IP”

“Ani DS, ani SPS nigdy nie wykazali żadnych błędów w Oprogramowaniu NEWAG IP.”

Skoro oprogramowanie nie zostało “naprawione”, to zdaniem Newagu “dekompilacja programu nie była potrzebna do uruchomienia Pojazdów Impuls 45WE.” A skoro nie była potrzebna, to działania podjęte w tym celu rzekomo nie spełniały kryteriów wyroku C-13/20 i stanowiły naruszenie praw autorskich producenta oprogramowania.

Pamięć pamięci nierówna

Jednocześnie jednak Newag z upodobaniem powtarza, że wynajęci przez SPS specjaliści “ingerowali w system sterowania”, sugerując, że może to być zgoła niebezpieczne. Jak to pogodzić z twierdzeniami o tym, że nie zmienili oni zainstalowanego na kontrolerach oprogramowania?

Kontrolery użyte w Impulsach mają trzy rodzaje pamięci:

  • FLASH
    tu znajduje się kod maszynowy oprogramowania i systemu operacyjnego uruchomionego na kontrolerze;
  • NVRAM
    zapisywane są w nim ustawienia i inne dane, które powinny być zachowane nawet jeśli wyłączone zostanie zasilanie kontrolerów;
  • RAM
    pamięć operacyjna, w niej przechowywane są dane potrzebne podczas działania oprogramowania; przechowuje dane tak długo, jak długo kontroler jest zasilany.

Ten podział nie jest niczym wyjątkowym. W zasadzie identycznie wygląda architektura pamięci domowego routera WiFi.

Gdy restartujemy takie urządzenie, tracone są dane w pamięci RAM, ale nie ustawienia przechowywane w NVRAM, ani oprogramowanie w pamięci FLASH. Zmieniając ustawienia w interfejsie użytkownika zmieniamy wartości przechowywane w pamięci NVRAM, ale nie dokonujemy żadnych zmian w samym oprogramowaniu zainstalowanym w pamięci FLASH.

W celu uruchomienia składów Impuls hakerzy z Dragon Sector modyfikowali odpowiednie zmienne w pamięci NVRAM. A więc “ingerowali w system sterowania”. Nie wprowadzali jednak żadnych zmian do oprogramowania w pamięci FLASH, choćby dlatego, że wymagałoby to przeprowadzenia odpowiedniej certyfikacji jego nowej wersji zanim pociągi wyjadą znów na tory.

Tam zaś, gdzie uruchomienie pociągu wymagałoby zmian w oprogramowaniu – bo np. warunek blokady polegał wyłącznie na konkretnej dacie zawartej w oprogramowaniu, nie wartościach zmiennych w pamięci NVRAM – pociągów nie udało się naprawić. Jak w przypadku pociągu 31WE-015, który co roku blokuje się 21. listopada i 21. grudnia, po czym sam się uruchamia 1. grudnia i 1. stycznia.

Gimnastyka intelektualna

Ta linia argumentacji Newagu to dość karkołomna gimnastyka intelektualna.

Po pierwsze, trudno, żeby hakerzy z Dragon Sector “wykazali błędy” oprogramowania, skoro zgodnie z ich analizą funkcjonalność blokowania się Impulsów dodana była w tym oprogramowaniu celowo.

Po drugie, ta argumentacja opiera się na bardzo wąskim rozumieniu pojęcia “naprawy”. Z punktu widzenia przewoźników zablokowane Impulsy były przecież “zepsute”, a uruchomienie ich stanowiło “naprawę awarii” – nawet jeśli ta naprawa nie wymagała zmian w zainstalowanym na sterownikach pociągów oprogramowaniu (bo wystarczyła zmiana wartości odpowiednich zmiennych w pamięci NVRAM).

Po trzecie, Newag twierdzi, że skoro modyfikacje nie dotyczyły samego oprogramowania (a tylko wartości zmiennych w pamięci NVRAM), to dekompilacja tego oprogramowania nie była niezbędna. To trochę tak, jakby twierdzić, że skoro naprawa naszego samochodu polegała na dokręceniu jednej śrubki, to nie wymagała zrozumienia, jak działa cały silnik. Ale jak bez tej wiedzy mielibyśmy wiedzieć, że to akurat tę śrubkę trzeba dokręcić?..

Oczywiście nie jest to jedyna linia argumentacji użyta przez Newag w pozwie przeciwko ekspertom i SPS – dogłębna analiza całego ponad 160-stronicowego dokumentu to zadanie dla prawników. Ja skupiam się tu tylko na aspektach zahaczających o kwestie techniczne.

Pytania bez odpowiedzi

Bez jednoznacznej odpowiedzi – przynajmniej ze strony Newagu – pozostaje jednak wciąż kluczowe pytanie, czemu Impulsy się blokowały? Czemu 31WE-015 staje co roku między 21. listopada a 1. grudnia, po czym ponownie między 21. grudnia a 1. stycznia?

Eksperci z Dragon Sector przedstawili spójne, wiarygodne, i poparte danymi wyjaśnienie: oprogramowanie w sterownikach pociągów zawiera funkcje blokujące, załączające się przy spełnieniu konkretnych warunków. Na przykład w 31WE-015 ten warunek to konkretna data, która wydaje się pokrywać z planowanym na listopad 2021 r. przeglądem przez niezależny od Newagu serwis.

W innych wypadkach warunkiem włączenia się blokady była między innymi pozycja GPS pociągu zawierająca się w konkretnych obszarach – pokrywających się z lokalizacją niezależnych zakładów serwisowych.

Natomiast producent pociągów lawiruje i kluczy. Z jednej strony twierdzi, że nie wie nic o blokadach w oprogramowaniu (“w posiadanym przez nas kodzie źródłowym tego rodzaju rozwiązania nie występują”). Z drugiej insynuuje, że zaimplementowali je sami hakerzy z Dragon Sector. By wreszcie przyznać, że jednak nie modyfikowali oni oprogramowania zainstalowanego w pociągach (a więc nie mogli tych blokad sami zaimplementować).

Dziwne komunikaty o naruszeniu praw autorskich

W swojej “białej księdze” Newag zaznacza też:

Ingerując w systemy sterowania hakerzy wiedzieli, że dopuszczają się naruszeń majątkowych praw autorskich grupy NEWAG ze względu na wyświetlane przez system komunikaty.

Zapytałem rzecznika spółki o to, jakie były warunki wymagane do tego, by taki komunikat został wyświetlony. W odpowiedzi otrzymałem informację, że: “nie znamy tych warunków gdyż nie jesteśmy ich autorami.”

Podsumowując:

  • rzecznik spółki nie miał problemu z kategorycznym stwierdzeniem, że w kodzie oprogramowania Impulsów nie ma żadnych blokad;
  • ale nie jest w stanie określić, w jakich wypadkach pojawiały się komunikaty o naruszeniu praw autorskich w kabinie maszynisty;
  • mimo, że Newag na te komunikaty sam się powołuje w swoich materiałach.

Z dostępnych informacji wynika, że komunikat o naruszeniu praw autorskich najwyraźniej wyświetlał się wtedy, gdy pojazd poruszał się mimo, że spełniony był jeden z warunków blokady – postój powyżej 21 dni.

System zarządzający wyświetlaczami w kabinie maszynisty jest odrębny od kontrolerów, na których działało oprogramowanie z blokadami unieruchamiającymi Impulsy. Teoretycznie więc producent mógłby zaimplementować ten komunikat, nie mając pojęcia o blokadach.

Jeżeli jednak Newag – jak twierdzi – nie miał z blokadami nic wspólnego, to czemu fakt, że pociąg nie jest przez nie unieruchomiony mimo, że spełniony jest jeden z ich warunków, miałby zdaniem spółki świadczyć o naruszeniu jej praw autorskich? I jak to się stało, że warunek zaimplementowany w obu tych systemach w tym samym pojeździe był identyczny: 21 dni postoju?..

I wreszcie: jeżeli blokady znalazły się w oprogramowaniu Impulsów bez wiedzy i zgody ich producenta, to można by się raczej spodziewać współpracy z hakerami z Dragon Sector, w celu jak najszybszego ustalenia, kto, kiedy i w jaki sposób to zmienione oprogramowanie tam umieścił. Newag przecież niejednokrotnie podkreślał, że cała sprawa negatywnie odbija się na wizerunku firmy i wartości jej akcji.

Zamiast jednak próbować sprawę szybko wspólnie wyjaśnić, spółka pozywa ekspertów do sądu, domagając się milionowego odszkodowania.

SLAPPem w ekspertów?

“Z przedstawionego w mediach opisu sprawy wynika, że możemy mieć w tym przypadku do czynienia z tzw. SLAPPem – czyli strategicznym powództwem zmierzającym do stłumienia debaty publicznej.” – mówi mi Krzysztof Izdebski, prawnik z Fundacji im. Stefana Batorego.

Polega on na tym, że najczęściej w stosunku do osób, które identyfikują i ujawniają nieprawidłowości, podmiot, który prawdopodobnie się do nich przyczynił składa pozew, który ma wywołać efekt mrożący. Dla samym pozwanych, ale również wszystkich innych, którzy chcieli by pójść w ich ślad.

“UE przyjęła niedawno dyrektywę, która ma chronić przed takimi zjawiskami.” – zaznacza mój rozmówca – “W preambule wskazuje się m.in. że”skutkiem takich postępowań może być opóźnienie lub w ogóle uniemożliwienie publikacji informacji na temat sprawy leżącej w interesie publicznym".

W owym interesie jest zatem aby dziennikarze i organizacje społeczne bacznie przyglądały się tej sprawie i weryfikowały czy faktycznie mamy do czynienia ze SLAPPem i z próbą tłumienia wolności wypowiedzi i prawa do prawdy.

Podczas środowej rozprawy, Newag zawnioskował o utajnienie całego procesu. Sąd wniosek odrzucił.

Konieczne licencje

Bulwersująca afera z Impulsami uwypukla jeszcze jeden, szerszy problem: konieczność zadbania o odpowiednie licencje na oprogramowanie będące elementem różnych usług publicznych (w tym komunikacji publicznej).

Oprogramowanie jest dziś kluczową częścią większości urządzeń, w tym środków transportu, z których na co dzień korzystamy. To niedopuszczalne, by prawa autorskie producenta oprogramowania ograniczały możliwość ustalenia przyczyn awarii pociągu i jej naprawienia przez przewoźnika lub firmę przezeń do tego wynajętą! To niepojęte, by eksperci, którzy takiej analizy dokonali i uruchomili zablokowane składy, byli ciągani po sądach za rzekomy brak odpowiedniej licencji.

Z punktu widzenia pasażerów i przewoźników kwestia praw autorskich jest przecież zupełnie drugorzędna w porównaniu z pytaniem, kto zaimplementował te blokady w pociągach regularnie przewożących tysiące ludzi, i kupionych w dużej mierze za publiczne pieniądze. Oraz jak szybko zablokowane składy mogą wrócić do normalnej eksploatacji.

Możliwym rozwiązaniem jest, aby oprogramowanie będące elementem systemów czy urządzeń finansowanych z publicznych pieniędzy musiało być udostępniane na wolnej licencji, z dostępnym kodem źródłowym. Albo przynajmniej wymóg, by instytucje eksploatujące urządzenia i systemy nabyte przy udziale środków publicznych uzyskiwały również pełną dokumentację, kod źródłowy, i odpowiednią licencję pozwalającą na modyfikację oprogramowania, w tym przez podmioty trzecie, którym takie prace byłyby zlecone.

Nie tylko usunęłoby to niepewność prawną i zagrożenie procesami o naruszenie praw autorskich w takich sytuacjach, ale również ułatwiłoby audyty bezpieczeństwa. Oraz umożliwiłoby rozwój i ulepszanie tego oprogramowania (w tym naprawianie błędów) przez niezależne firmy – również w przypadku, gdy oryginalny producent zbankrutował lub nie jest zainteresowany rozwojem oprogramowania dla starszych modeli sprzętu.