1 pontos por GN⁺ 2023-12-06 | 1 comentários | Compartilhar no WhatsApp
  • Pesquisadores fizeram engenharia reversa do código PLC dos trens NEWAG Impuls EMU da Polônia por cerca de um ano, investigando um problema em que eles paravam após manutenção em oficinas terceirizadas
  • A fabricante atribuiu a causa a falhas de manutenção e defendeu que a manutenção fosse feita por ela, mas o código continha uma lógica que bloqueava o trem com erros falsos sob certas condições
  • Algumas versões do controlador tentavam identificar oficinas terceirizadas por coordenadas GPS, e era possível destravar o trem com uma combinação não documentada de teclas na cabine
  • Em versões posteriores do software PLC, o desbloqueio por combinação de teclas desapareceu, mas a lógica de bloqueio permaneceu; após determinada atualização, a HMI chegou a exibir um aviso de violação de direitos autorais
  • O dispositivo de telemetria GSM do trem transmitia as condições de bloqueio e, em alguns casos, também indicava a possibilidade de bloqueio remoto

Engenharia reversa do código PLC do NEWAG Impuls EMU

  • q3k, redford e mrtick fizeram engenharia reversa do código PLC dos trens NEWAG Impuls EMU por cerca de um ano
  • Os trens em questão apresentavam sintomas de bloqueio por motivos arbitrários depois de passarem por manutenção em oficinas terceirizadas
  • A fabricante afirmou que a causa era falha de manutenção das oficinas terceirizadas e defendeu que a manutenção deveria ser feita pela fabricante, não por terceiros

Condições de bloqueio presentes no código

  • O código PLC incluía uma lógica para bloquear o trem com códigos de erro falsos
    • O bloqueio podia ocorrer após uma data específica
    • O bloqueio também podia ser acionado quando o trem ficava sem operar por determinado período
  • Uma versão do controlador continha coordenadas GPS, usadas para limitar esse comportamento a oficinas terceirizadas

Método de desbloqueio não documentado e mudanças posteriores

  • Era possível desbloquear o trem pressionando uma combinação de teclas específica nos controles da cabine
  • Esse método de desbloqueio não era documentado
  • Em versões mais recentes do software PLC, o desbloqueio por combinação de teclas foi removido, mas a lógica de bloqueio continuou presente

Aviso na HMI e telemetria GSM

  • Após uma atualização específica da NEWAG, os controles da cabine passaram a exibir uma mensagem de aviso relacionada a violação de direitos autorais
    • A mensagem aparecia quando a HMI detectava algumas das condições em que o bloqueio deveria ter sido acionado, mas o trem continuava em operação
  • Os trens tinham um dispositivo de telemetria GSM
    • O dispositivo transmitia as condições de bloqueio
    • Em alguns casos, parecia possível bloquear o trem remotamente

1 comentários

 
GN⁺ 2023-12-06
Opiniões no Hacker News
  • Esses trens são usados exclusivamente por um número considerável de empresas ferroviárias regionais na Polônia. A classificação de manutenção vai de P1 até P5, a mais complexa; antigamente, só grandes empresas assumiam P3 ou superior, mas há alguns anos a European Union Agency For Railways abriu o mercado, e concorrentes menores começaram a vencer licitações com preços muito mais baixos
    Tudo começou quando 4 trens que passaram por manutenção na SPS Mieczkowski nem sequer ligavam; a empresa teve de pagar uma multa de €500 mil, e os trens foram devolvidos à Newag. Ao mesmo tempo, trens de outras empresas também pararam de se mover só porque tinham ficado tempo demais em um lugar, embora nem tivessem passado por manutenção. No fim, a SPS Mieczkowski contratou a Dragon Sector para investigar, e foram encontradas várias rotinas separadas que desativavam os trens
    O caso está sendo investigado pelo Central Anti-Corruption Bureau da Polônia, mas é duvidoso que isso cause um grande impacto na Newag. O Office of Rail Transport polonês é uma agência que costumava receber enxurradas de reclamações e emitir ordens até por pequenos erros nos horários dos trens, mas se afastou da intervenção neste caso; e a compra de trens segue um processo licitatório muito rigoroso, então as empresas ferroviárias praticamente não têm margem para se mexer

    • Isto parece claramente um crime de sabotagem nos termos do artigo 254a do Código Penal polonês. O processo licitatório não é importante neste caso; só é preciso um promotor competente
      https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/kodeks-kar...
    • A Internal Security Agency também está investigando, e parece difícil para a Newag escapar de um grande problema. Internamente, eles também estão tratando o assunto como extremamente grave
      Há uma quantidade enorme de provas para demonstrar o que aconteceu, então é muito pouco provável que consigam escapar. Mesmo assim, estão tentando se safar alegando que foram hackeados. A versão seria algo como hackers terem feito flash do firmware dos trens mantidos por uma concorrente para transformá-los em tijolos, mas as coordenadas de GPS dos trechos ferroviários concorrentes estavam literalmente hardcoded
    • O Impuls 2, mais moderno, também é usado fora da Polônia. A FSE italiana opera 11 unidades
      Mas, considerando que a Newag queria continuar se expandindo na Itália, acho que eles não teriam sabotado esses trens também. Claro, talvez tenham achado aceitável queimar até novos clientes
  • Há links para um texto mais longo e detalhes adicionais enterrados nos comentários
    Em polonês:
    https://zaufanatrzeciastrona.pl/post/o-trzech-takich-co-zhak...
    https://wiadomosci.onet.pl/kraj/awarie-pociagow-newagu-haker...
    Em inglês:
    https://zaufanatrzeciastrona-pl.translate.goog/post/o-trzech...
    https://wiadomosci-onet-pl.translate.goog/kraj/awarie-pociag...
    Como contexto adicional, a Polônia é dividida em 16 voivodships e, desde as reformas do início dos anos 2000, praticamente cada região tem sua própria empresa ferroviária regional, que cooperam entre si. Há mais de um ano, basicamente todo mundo já sabia que havia algo suspeito acontecendo com os trens da Newag. As falhas continuavam em trens pertencentes a várias empresas, que usavam prestadores de manutenção terceirizados, não a Newag. Por isso, a oficina contratou hackers, e levou tempo para entender, por meio de engenharia reversa, exatamente o que estava acontecendo

    • Sou polonês, então eu sabia o que województwo significa, mas não sabia que havia o equivalente voivodship em inglês. Achei interessante ler sobre isso na Wikipedia
      https://en.wikipedia.org/wiki/Voivodeship
  • Lembrei do “crash” AARD que a Microsoft usou no passado para praticamente arruinar a concorrência do DR-DOS
    O código AARD era um trecho de código incluído nas versões beta do Microsoft Windows 3.1, feito para detectar se o Windows estava sendo executado não sobre o MS-DOS ou o PC DOS, mas sobre um compatível concorrente como o DR-DOS e, nesse caso, exibir uma mensagem de erro obscura. Esse código em linguagem de máquina, criptografado com XOR, automodificante e deliberadamente ofuscado, usava várias estruturas e funções não documentadas do DOS
    https://en.wikipedia.org/wiki/AARD_code
    https://www.geoffchappell.com/notes/windows/archive/aard/drd...
    https://news.ycombinator.com/item?id=36042213

    • Bem típico da Microsoft. A mesma empresa que disse à Compaq que, se vendesse sequer um PC com OS/2 Warp instalado, nunca mais poderia vender PCs com Windows
      No fim, quem impede as coisas boas de durarem somos nós, humanos. O OS/2 Warp era um excelente sistema operacional
    • O código AARD era um aviso não fatal que não impedia o uso do Windows, e nem chegou a ser lançado de fato. Na versão final, ele foi corrigido para ficar inalcançável, provavelmente por meio de um patch binário para evitar regressões e reduzir os longos tempos de build. Havia também o grande problema de empacotamento de otimizar a disposição em disquetes
      A propósito, o DR-DOS já era um produto sem saída desde o lançamento. Era óbvio demais que pessoas e OEMs não comprariam dois sistemas operacionais juntos: um sistema operacional gráfico e um DOS que funcionava como bootloader desse sistema gráfico. A ideia de que existiria, por um período significativo, um mercado independente para DOS 16 bits somente texto era uma fantasia completa, e o DR-DOS também não era relevante em volume de vendas. Mesmo que o código AARD tivesse entrado nas versões finais reais do Windows 3.x, isso não teria mudado nada
    • Não é exatamente parecido com este caso. O crash AARD foi uma quebra intencional de compatibilidade, enquanto isto se parece mais com obsolescência programada
      Um trem ser desativado se ficar parado por “tempo demais”... acho que até a Microsoft gostaria de ter esse nível de controle sobre a plataforma
    • Segundo o artigo, esse recurso não foi ativado; então fico me perguntando como isso teria sido usado para arruinar a concorrência do DR-DOS
    • US$ 280 milhões em acordo é bem barato em troca de garantir o domínio mundial dos sistemas operacionais por alguns anos
  • As ações da Newag caíram bastante depois que o post foi publicado; será este o primeiro caso de correção de preço causada pelo Mastodon?
    https://g.co/kgs/WVku4C

    • Mesmo assim, ainda estão em +10% no período de 1 mês e +25% no de 3 meses
    • A imprensa polonesa também noticiou, então não foi algo causado só pelo Mastodon
  • Em 21 de novembro de 2022, houve uma situação bem cômica em que outra composição, que nem estava em operação, se recusou a funcionar. O computador reportou falha no compressor, mas, quando os mecânicos verificaram, não havia nenhum problema com o compressor. Ainda assim, o trem não levantava o pantógrafo e, ao analisarem o código do computador, encontraram a condição que forçava a falha
    Era algo como: se o dia for 21 ou maior, o mês for 11 ou maior e o ano for 2021 ou maior, reportar falha no compressor

    • Interpretando com boa vontade, talvez o fabricante do compressor tenha colocado uma data de expiração para garantir a substituição de componentes essenciais. Mas provavelmente é só negócio suspeito mesmo
    • O verdadeiro crime foi não usar uma biblioteca padrão de data/hora e uma comparação simples > 2021-11-21
    • O motivo de terem codificado assim pode ter sido evitar que uma data específica aparecesse diretamente no código compilado
  • Este fabricante não acabou paralisando infraestrutura crítica e literalmente fazendo a Polônia de refém? É um crime ousado a um ponto difícil de acreditar, e não tenho muita certeza de que eles conseguirão simplesmente sair impunes

    • Não é a oficina, é o fabricante. A oficina só venceu a licitação, e o fornecedor decidiu retaliar
  • O mundo é pequeno mesmo. Abri o HN e encontrei uma história digna de filme sobre trens em que já andei várias vezes. É bem possível que eu tenha passado por um dos trens que efetivamente ficaram parados
    De qualquer forma, isso significa que não houve revisão de código, ou que os revisores aceitaram por algum motivo. Não sei bem qual das duas opções é mais assustadora

    • Você quer dizer uma revisão de código por terceiros? Isso costuma acontecer?
      Isto parece ter sido intencional por parte do fabricante do trem, e é bem claro que o fabricante mandou escrever o código. Não parece ser uma situação em que um hacker inseriu algo escondido sem que os administradores soubessem. Fico curioso sobre quem faria que tipo de revisão de código
      Lendo outros comentários, parece que o artigo no topo do HN mudou, e alguns comentários foram escritos com base em um artigo que tinha bem menos informações. Então acho que foi por isso que os comentários ficaram confusos
    • Esse código provavelmente foi revisado corretamente e passou por testes bastante sérios. Dá para inferir isso pelo fato de existir uma geofence com condições adicionais de disparo
  • Infelizmente, os trens da Newag têm qualidade bem melhor que os da outra fabricante polonesa, a Pesa. Devem ser tão confiáveis que foi preciso criar falhas artificiais

  • Fico imaginando quem codificou essas condições maliciosas e quem sabia delas. Será que ninguém pensou em denunciar internamente?
    Para referência, há uma página de avaliações anônimas de funcionários sobre a empresa: https://www.gowork.pl/opinie_czytaj,19587
    Parece um ambiente de trabalho bastante tóxico

    • Como desenvolvedor de software, se me pedissem para fazer algo assim, eu certamente exigiria instruções por escrito
  • Vai ser interessante ver como essa situação afetará o contrato com a empresa europeia de serviços ferroviários Akiem. A Akiem fechou um contrato de 164 milhões de euros com a Newag para serviços e trens destinados à França
    [1] https://biznes.pap.pl/pl/news/all/info/3509606,newag-inks-eu...