Trenes NEWAG de Polonia quedan bloqueados tras reparaciones en talleres de terceros
(social.hackerspace.pl)- Investigadores hicieron ingeniería inversa del código PLC de los trenes NEWAG Impuls EMU de Polonia durante aproximadamente un año, a raíz de un problema en el que los trenes se detenían tras recibir mantenimiento en talleres de terceros
- El fabricante atribuyó la causa a errores de mantenimiento y sostuvo que el servicio debía realizarlo la propia empresa, pero el código contenía lógica que bloqueaba los trenes con errores falsos bajo ciertas condiciones
- Algunas versiones del controlador intentaban distinguir talleres de terceros mediante coordenadas GPS, y el bloqueo podía desactivarse con una combinación de teclas no documentada en la cabina
- En versiones posteriores del software PLC se eliminó el desbloqueo por combinación de teclas, pero la lógica de bloqueo permaneció; tras ciertas actualizaciones, la HMI incluso mostraba una advertencia por infracción de derechos de autor
- El dispositivo de telemetría GSM del tren transmitía las condiciones de bloqueo y, en algunos casos, parecía indicar la posibilidad de bloqueo remoto
Ingeniería inversa del código PLC del NEWAG Impuls EMU
- q3k, redford y mrtick hicieron ingeniería inversa del código PLC de los trenes NEWAG Impuls EMU durante aproximadamente un año
- Los trenes en cuestión presentaban síntomas de bloqueo por motivos arbitrarios después de recibir mantenimiento en talleres de terceros
- El fabricante afirmó que la causa eran errores de mantenimiento de los talleres de terceros, y sostuvo que el mantenimiento debía hacerse con el fabricante, no con terceros
Condiciones de bloqueo incluidas en el código
- El código PLC incluía lógica para bloquear el tren junto con códigos de error falsos
- El bloqueo podía ocurrir después de una fecha específica
- También podía activarse cuando el tren no había circulado durante cierto tiempo
- Una versión del controlador incluía coordenadas GPS, que se usaban para limitar este comportamiento a talleres de terceros
Método de desbloqueo no documentado y cambios posteriores
- Al presionar una combinación de teclas específica en los controles de la cabina, se podía desbloquear el tren
- Este método de desbloqueo no estaba documentado
- En versiones más recientes del software PLC, el desbloqueo por combinación de teclas fue eliminado, pero la lógica de bloqueo permaneció intacta
Advertencia en la HMI y telemetría GSM
- Tras ciertas actualizaciones de NEWAG, los controles de la cabina mostraban un mensaje de advertencia relacionado con infracción de derechos de autor
- El mensaje aparecía cuando la HMI detectaba algunas de las condiciones en las que debería haberse activado el bloqueo, pero el tren seguía en funcionamiento
- El tren contaba con un dispositivo de telemetría GSM
- Este dispositivo transmitía las condiciones de bloqueo
- En algunos casos, parecía que el tren podía bloquearse de forma remota
1 comentarios
Opiniones de Hacker News
Estos trenes son usados de forma casi exclusiva por bastantes empresas ferroviarias regionales en Polonia. Hay cinco niveles de mantenimiento, desde P1 hasta el más complejo, P5; antes solo las grandes empresas se encargaban de P3 o superior, pero desde hace algunos años, cuando la European Union Agency For Railways abrió el mercado, competidores más pequeños empezaron a ganar licitaciones con precios mucho más bajos
Todo comenzó cuando 4 trenes mantenidos por SPS Mieczkowski ni siquiera arrancaban; la empresa tuvo que pagar una multa de €500 mil y los trenes volvieron a Newag. Al mismo tiempo, trenes de otras empresas también dejaron de moverse, aunque ni siquiera habían entrado a mantenimiento, sino que simplemente habían permanecido demasiado tiempo en un mismo lugar. Al final, SPS Mieczkowski contrató a Dragon Sector para investigar, y se descubrieron varias rutinas separadas que desactivaban los trenes
Este caso está siendo investigado por la Central Anti-Corruption Bureau de Polonia, pero no está claro si Newag recibirá un golpe importante. La Office of Rail Transport de Polonia era una entidad que recibía quejas y emitía órdenes incluso por pequeños errores en los horarios de trenes, pero en este caso se desligó de intervenir, y como la compra de trenes sigue procedimientos de licitación muy estrictos, las empresas ferroviarias casi no tienen margen para moverse
https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/kodeks-kar...
Hay una enorme cantidad de pruebas para demostrar lo que pasó, así que casi no tienen posibilidad de salir bien parados. Aun así, están intentando zafarse alegando que fueron hackeados. La idea sería que hackers flashearon el firmware de trenes mantenidos por la competencia para dejarlos convertidos en ladrillos, pero las coordenadas GPS de líneas ferroviarias competidoras estaban literalmente hardcodeadas
Aunque, considerando que Newag quería seguir expandiéndose en Italia, parecería que no habrían saboteado también esos trenes. Claro, también podrían haber pensado que no importaba llevarse por delante incluso a clientes nuevos
En los comentarios está enterrado un texto más largo con enlaces a detalles adicionales
En polaco:
https://zaufanatrzeciastrona.pl/post/o-trzech-takich-co-zhak...
https://wiadomosci.onet.pl/kraj/awarie-pociagow-newagu-haker...
En inglés:
https://zaufanatrzeciastrona-pl.translate.goog/post/o-trzech...
https://wiadomosci-onet-pl.translate.goog/kraj/awarie-pociag...
Como contexto adicional, Polonia está dividida en 16 voivodships, y tras las reformas de inicios de los 2000, casi cada región pasó a tener su propia empresa ferroviaria regional y a cooperar entre sí. Desde hacía más de un año, en la práctica todos sabían que estaba pasando algo sospechoso con los trenes de Newag. Las fallas seguían apareciendo en trenes propiedad de varias empresas, y estas usaban talleres de mantenimiento de terceros, no a Newag. Por eso el taller contrató a los hackers, y tomó tiempo entender exactamente qué estaba ocurriendo mediante ingeniería inversa
https://en.wikipedia.org/wiki/Voivodeship
Me recordó al AARD “crash” que Microsoft usó en su momento para prácticamente arruinar a su competidor DR-DOS
El código AARD era un fragmento incluido en la beta de Microsoft Windows 3.1 que detectaba si Windows se estaba ejecutando sobre un compatible rival como DR-DOS, en lugar de MS-DOS o PC DOS, y en ese caso mostraba un mensaje de error críptico. Este código en lenguaje máquina, cifrado con XOR, automodificable y deliberadamente ofuscado, usaba varias estructuras y funciones de DOS no documentadas
https://en.wikipedia.org/wiki/AARD_code
https://www.geoffchappell.com/notes/windows/archive/aard/drd...
https://news.ycombinator.com/item?id=36042213
Al final, quienes impiden disfrutar por mucho tiempo de algo bueno son los humanos. OS/2 Warp era un gran sistema operativo
Además, DR-DOS ya era un producto sin futuro desde el momento de su lanzamiento. Era demasiado evidente que la gente y los OEM no iban a comprar dos sistemas operativos a la vez: un sistema operativo gráfico y DOS actuando como cargador de arranque de ese sistema gráfico. La idea de que el mercado de un DOS independiente, solo texto y de 16 bits, seguiría existiendo durante un periodo significativo era una fantasía total, y DR-DOS nunca fue importante en términos de ventas. Aunque el código AARD hubiera llegado a la versión final de Windows 3.x, nada habría cambiado
Eso de que el tren se desactive si se queda parado “demasiado tiempo” suena al grado de control de plataforma que a Microsoft también le habría gustado tener
Después de que se publicó el post, la acción de Newag cayó bastante; ¿será este el primer caso de corrección de precio originada en Mastodon?
https://g.co/kgs/WVku4C
El 21 de noviembre de 2022 hubo una situación bastante absurda en la que otra formación de tren, que ni siquiera estaba en servicio, se negó a funcionar. La computadora reportó una falla del compresor, pero cuando los técnicos lo revisaron, no había ningún problema con el compresor. Aun así, el tren no levantó el pantógrafo, y al analizar el código de la computadora apareció una condición que forzaba la falla
La lógica era algo como: si el día es 21 o mayor, el mes es 11 o mayor, y el año es 2021 o mayor, reportar falla del compresor
> 2021-11-21¿No es esto básicamente el fabricante tomando a Polonia como rehén al paralizar infraestructura crítica? Es un crimen de una audacia difícil de creer, y no estoy muy seguro de que puedan salir de esto como si nada
El mundo es un pañuelo. Abrí HN y me encontré con una historia de película sobre trenes en los que me he subido varias veces. Incluso es posible que haya pasado junto a uno de los trenes realmente detenidos
En cualquier caso, eso significa que no hubo revisión de código, o que los revisores lo aprobaron por alguna razón. No sé cuál de las dos cosas da más miedo
Parece bastante claro que esto fue intencional por parte del fabricante del tren, y que el propio fabricante dio la instrucción de escribir ese código. No parece un caso en el que un hacker lo haya metido a escondidas sin que la gerencia lo supiera. Me pregunto quién se supone que haría qué revisión de código
Leyendo otros comentarios, parece que el artículo en la parte superior de HN cambió, y que algunos comentarios se escribieron basándose en un artículo con mucha menos información. Por eso los comentarios se veían confusos
Lamentablemente, los trenes de Newag son bastante mejores en calidad que los de Pesa, otro fabricante polaco. Al parecer eran tan confiables que hubo que crear fallas artificiales
Me pregunto quién codificó estas condiciones maliciosas y quiénes lo sabían. ¿De verdad nadie pensó en denunciar internamente?
Como referencia, existe una página de reseñas anónimas de empleados sobre la empresa: https://www.gowork.pl/opinie_czytaj,19587
Parece un ambiente laboral bastante tóxico
Será interesante ver qué impacto tiene esta situación en el contrato con la empresa europea de servicios ferroviarios Akiem. Akiem firmó con Newag un contrato de 164 millones de euros para servicios y trenes destinados a Francia
[1] https://biznes.pap.pl/pl/news/all/info/3509606,newag-inks-eu...