Подробности инцидента были представлены на пресс-конференции Oh My H@ck 5декабря 2023 года членами команды Dragon Sector С. Базаньским и М. Ковальчиком, а также Я. Степневичем, специалистом, имеющим опыт в промышленной автоматизации.
Итак, что произошло?
Один из одиннадцати поездов Impuls от компании Newag, эксплуатируемых Нижнеселезскими железными дорогами Польши, внезапно сломался во время техобслуживания. Механизмы поезда оставались в полном порядке, однако запустить его никак не удавалось.Обслуживающая поезд компания Serwis Pojazdow Szynowych (SPS) по имеющейся инструкции разбирает поезд на части, отправляет детали отдельным производителям, снова собирает поезд и пытается его запустить. Однако после сборки поезд больше не двигается. Инженеры снова и снова изучают многотысячные страницы инструкции, проверяют-сверяют цифры, но так и не находят причину поломки.
Что дальше?
Тем временем подходит очередь второго поезда проходить техобслуживание. И его постигает та же участь. Теперь в депо 2 неработающих состава. Третий поезд пропускает проверку по техническим причинам, а вместо него на сервис отправляется четвертый поезд, с помощью которого компания пытается отбуксировать 2 имеющихся нерабочих состава.Но происходит что-то невообразимое. Как только специалисты подключают неработающие поезда к четвертому, он также обездвиживается.
SPS имеет несколько подразделений по стране. Так что некоторые поезда данной серии отправляются на обслуживание в другие мастерские. И там уже перестают работать таким же загадочным способом.
Итого 6 поездов Нижней Селезии выведены из строя. А на железных дорогах начинается настоящий коллапс – переполненные поезда и толпы возмущенных граждан.
Рост напряжения
Растет напряжение и в самой SPS. Ведь день простоя поезда в мастерской обходится компании в несколько тысяч злотых штрафа, а ЖД станция собирается растроргнуть с ней контракт на обслуживание поездов по причине невыполнения условий сервиса. Newag отмахивается от проблемы, объясняя поломку блокировкой поездов системой безопасности, при этом специалисты SPS в действующей инструкции не могут найти ничего внятного по этому поводу.И тогда руководство SPS решается на отчаянный шаг. Они зовут на помощь команду хакеров-CTF’еров, задачей которых становится поиск ошибок в коде системы управления поездом.
Поверить в происходящее сложно – стороны подписывают договор на взлом поезда. Над проектом будет трудиться троица хакеров Я. Степневич, М. Ковальчик и С. Базаньский.
Что удалось обнаружить хакерам?
После месяцев сложного детального анализа кода удалось обнаружить следующие сюрпризы от разработчика:
-
В программном коде поездов Newag были найдены координаты GPS, указывающие на окрестности расположения одного из сервисов для обслуживания поездов – PESA. Затем в коде были обнаружены координаты и других сервисных служб для ремонта и проверки поездов. SPS в этот список не входит.
-
Исследовали нашли еще 1 нюанс, не прописанный в инструкции – при простое в депо более 10 дней система должна заблокировать запуск поезда.
-
Система безопасности поезда должна заблокировать его запуск при замене одного из его компонентов.
-
Блокировку можно снять простой комбинацией клавиш на экране бортового компьютера.
-
В одном из поездов обнаружен код, предписывающий ему «ломаться» после прохождения 1 млн километров.
Были еще некоторые сюрпризы, предписывающие, например, выдавать неисправность компрессора при соблюдении определенных условий. Условие это выглядело так:
-
если день больше или равен 21;
-
если месяц больше или равен 11;
-
если год больше или равен 21.
И с этим условием также произошла забавная история. По задумке разработчика поезд должен был пройти техобслуживание в ноябре 2021 года. Тогда же по всей видимости, обслуживающая компании должна была получить сигнал о необходимости замены компрессора. Однако условия не сработали, так как поезд случайным образом был обслужен ранее запланированного срока, а затем вновь запущен лишь в январе 2022 года.
Системная ошибка или случайность?
Как оказалось, эта же участь постигла и другие ЖД станции, эксплуатирующие поезда Newag Impuls. Все они ломались после наступлении вышеописанных событий.Ошибки удалось исправить путем снятия программных блокировок с бортового компьютера.
Итого исследователи проанализировали программный код на 29 поездах. И только в 5ти из них не было обнаружено никаких ошибок.
Что это было? Безграмотность разработчиков, заложенные условия с целью генерации наступления определённых событий, как то обслуживание поездов определенным сервисом, внеплановая замена деталей и только на определенные компоненты определенных производителей и т.д.) или простое совпадение судите сами.
Ну, а пока компании будут заниматься судебными тяжбами и выяснять, кто будет оплачивать простой работы и потерю репутации.