URL: https://linuxfr.org/news/pratiques-dans-l-industrie-ferroviaire-un-train-de-retard Title: Pratiques dans l'industrie ferroviaire : un train de retard... Authors: Andre Rodier Ysabeau đ§¶, BAud, L'intendant zonard, martoni, FrancoisA30, bobble bubble et BenoĂźt Sibaud Date: 2023ćčŽ12æ15æ„T19:10:20+01:00 License: CC By-SA Tags: ccc, ransomware, train, droit_de_rĂ©parer, pologne, newag et 37c3 Score: 69 Une histoire, comme il en est tant, hĂ©las, de pratiques anticoncurrentielles dans lâindustrie. Oubliez les imprimantes et les tracteurs, cette fois-ci, nous passons Ă une Ă©tape supĂ©rieure : les trains. Oui, oui, les trains, vous avez bien lu. _Si_ les faits se confirment, un constructeur de train polonais aurait Ă©tĂ© pris en flagrant dĂ©lit de pratiques anti-concurrentielles. ---- ---- # Les faits Au printemps 2022, le premier des onze trains du modĂšle _Newag Impuls 45WE_, exploitĂ©s par la compagnie rĂ©gionale Koleje DolnoĆlÄ skie en Basse-SilĂ©sie, est en fin de vie. Leur maintenance est gĂ©rĂ©e par la sociĂ©tĂ© _Serwis PojazdĂłw Szynowych_, (_SPS_), qui a remportĂ© lâappel dâoffre, pour un prix total dâenviron 5,1 millions dâeuros (22 millions de zĆoty). Cette inspection est obligatoire, aprĂšs un million de kilomĂštres. Le constructeur Ă lâorigine des trains, la sociĂ©tĂ© _Newag_, a Ă©galement participĂ© Ă lâappel dâoffres, mais leur prix Ă©tait supĂ©rieur dâenviron 696 000 ⏠(3 millions de zĆoty). Lâentretien dâun train est une affaire complexe : chaque piĂšce doit ĂȘtre dĂ©montĂ©e et envoyĂ©e aux fabricants concernĂ©s pour ensuite ĂȘtre rĂ©-assemblĂ©es Ă leur retour. SPS effectue lâinspection conformĂ©ment au manuel fourni, dâenviron vingt mille pages. Une fois le premier train remontĂ©, lâordinateur de bord indique le succĂšs de lâopĂ©ration et la conformitĂ© de lâensemble. Cependant, les onduleurs ne fournissent pas de tension aux moteurs et le train nâavance pas, sans que personne ne comprenne. Les techniciens de service recherchent, vĂ©rifient et re-vĂ©rifient les composants, parcourent les instructions â et ne trouvent aucune rĂ©ponse. Koleje DolnoĆlÄ skie dispose de onze trains _Impuls_ et, selon le calendrier, un autre est en cours de maintenance. Tandis que le premier est toujours immobilisĂ©, le deuxiĂšme train arrive, subit la mĂȘme rĂ©vision, avec malheureusement, le mĂȘme rĂ©sultat. Tout fonctionnait parfaitement avant la maintenance, mais les moteurs refusent de dĂ©marrer une fois celle-ci terminĂ©e. Pour empirer la situation, le constructeur refuse dâaider. Nous avons maintenant deux trains Ă lâarrĂȘt dans lâatelier. Le troisiĂšme rate lâinspection en raison dâune panne de batterie, et un quatriĂšme train est envoyĂ© Ă sa place. La sociĂ©tĂ© dĂ©cide dâutiliser la quatriĂšme pour remorquer une des locomotives en panne. Cependant, une fois connectĂ©e Ă lâune dâentre elle, la nouvelle locomotive sâarrĂȘte Ă©galement, mais la raison semble diffĂ©rente et totalement inconnue. Pendant ce temps, dans un autre atelier, Ă _Szczecin_, une autre locomotive Impuls tombe en panne, dans des circonstances trĂšs similaires : elle ne redĂ©marre pas aprĂšs la maintenance. Le problĂšme devient si grave que les mĂ©dias sâen mĂȘlent et relatent lâaffaire. Les six trains les plus longs de Koleje DolnoĆlÄ skie Ă©tant hors service, les horaires doivent ĂȘtre rĂ©duits, des trains de remplacement doivent ĂȘtre envoyĂ©s, et les passagers sâentassent dans des trains trop courts. Newag explique que les trains sont bloquĂ©s par un « systĂšme de sĂ©curitĂ© », mais rien nâest mentionnĂ© dans les pages du manuel. Chaque journĂ©e dâun train immobilisĂ© dans lâatelier coĂ»tant plusieurs milliers de zlotys en pĂ©nalitĂ©s contractuelles, et avec plusieurs trains en attente, la tension chez SPS augmente. Le problĂšme nâĂ©tant identifiĂ© ni par les mĂ©caniciens ni par les Ă©lectriciens, quelquâun finit rechercher des hackers polonais, et contacte le groupe _Dragon Sector_. SPS prend donc contact avec eux, dont les reprĂ©sentants incrĂ©dules finissent par signer le contrat. Le projet est entrepris par des membres de Dragon Sector, spĂ©cialement ceux connus pour avoir hackĂ©s le BIOS de portables Toshiba -- MichaĆ Â« Redford » Kowalczyk et Sergiusz « q3k » BazaĆski. Kuba « PanKleszcz » StÄpniewicz, qui a de lâexpĂ©rience dans lâautomatisation industrielle, se joint Ă©galement Ă lâĂ©quipe. LâĂ©quipe se met rapidement au travail et Kuba part en voyage Ă lâatelier. Une fois sur place, ils reçoivent un train qui ne roule pas, deux ordinateurs de rechange et les fichiers SDK du fabricant de lâordinateur. Ils commencent par Ă©couter le bus de donnĂ©es CAN (Controller Area Network), mais sans information sur les protocoles, la tĂąche sâavĂšre ardue. Ils tentent de tĂ©lĂ©charger le microcode de lâordinateur de bord, mais la documentation du SDK permet uniquement les mises Ă jour, pas dâinspecter la version installĂ©e. La premiĂšre tentative dâutilisation dâune ancienne version du micrologiciel, sur un ordinateur de rechange se solde par un Ă©chec : lâordinateur ne rĂ©pond plus. Ils trouvent finalement lâinterface de dĂ©bogage sur le dernier ordinateur de rechange, et octet par octet, en extraient la mĂ©moire. Lâordinateur est basĂ© sur lâarchitecture Infineon TriCore, souvent utilisĂ©e dans lâindustrie automobile, et les chercheurs finissent enfin par examiner le code en utilisant une version modifiĂ©e de Ghidra. Les travaux avancent doucement, mais lâĂ©chĂ©ance approche et les trains tombent toujours en panne. Dos au mur, Koleje DolnoĆlÄ skie, dĂ©cide de coopĂ©rer avec Newag sur lâentretien des trains en panne, y compris ceux qui, selon lâappel dâoffres initial, devaient ĂȘtre entretenus uniquement par SPS. Le contrat devant ĂȘtre rĂ©siliĂ© dâici une semaine, les chercheurs se mettent Ă travailler de plus belle. Le groupe est enfin en possession de tous les micro-logiciels des trains, autant ceux en Ă©tat de marche que ceux en panne. Chacun des trains ayant des fonctionnalitĂ©s particuliĂšres et une version diffĂ©rente du logiciel, lâanalyse est difficile, mais ils commencent Ă identifier une piste. Entre un ordinateur en Ă©tat de marche et un autre en panne, certaines plages de mĂ©moire diffĂšrent. Une fois corrigĂ©es sur un ordinateur en panne, celui-ci dĂ©marre enfin. Le test Ă©tant effectuĂ© sur un ordinateur isolĂ© sur un bureau, il sâarrĂȘte dĂšs que le logiciel dĂ©tecte quâil manque le reste du train, mais il est prĂȘt Ă faire fonctionner les onduleurs. Moins de 24 heures avant la date fatidique, les chercheurs identifient des paramĂštres supplĂ©mentaires pour faire dĂ©marrer le train. Malheureusement, le condensateur du dernier ordinateur de bord en Ă©tat de marche brĂ»le pendant les expĂ©riences. AprĂšs un nouveau brainstorming et de nombreuses tentatives pour combiner deux ordinateurs endommagĂ©s en un seul, le premier est rĂ©parĂ©, et Ă 2 heures du matin, la veille de lâheure apocalyptique, les chercheurs configurent lâordinateur qui fera dĂ©marrer le train. Un de nos hĂ©ros monte Ă bord dâun train (dâune autre compagnie) pour rejoindre lâatelier avec un ordinateur probablement en Ă©tat de marche devant les reprĂ©sentants des chemins de fer de Basse-SilĂ©sie, qui ont annoncĂ© leur visite pour 9h30. Malheureusement, le train que prend le chercheur pour se rendre sur place est en retard. Finalement, dans la matinĂ©e, un chercheur Ă©quipĂ© dâun ordinateur arrive sur les lieux et le connecte au train en panne. Et celui-ci ne bouge pas... Un autre brainstorming identifie le dernier drapeau oubliĂ© et Ă 8h42 le train parvient enfin Ă dĂ©marrer ! La dĂ©lĂ©gation de Koleje DolnoĆlÄ skie, voyant Ă 9h30 que les trains ont une chance de reprendre vie, ne rĂ©silie pas le contrat avec SPS. ## Pourquoi le train est tombĂ© en panne ? DĂ©terminer comment faire dĂ©marrer le train ne reprĂ©sentait quâune petite partie du problĂšme. Il fallait maintenant dĂ©couvrir pourquoi il Ă©tait tombĂ© en panne. Des mois dâanalyse et de rĂ©tro-ingĂ©nierie ont permis de rĂ©vĂ©ler des conditions extrĂȘmement intĂ©ressantes inscrites dans le code logiciel de diffĂ©rents trains fournis par Newag. AprĂšs des centaines dâheures passĂ©es Ă Ă©tudier les codes Ă©mis par des dizaines de trains, il a Ă©tĂ© possible dâidentifier des mĂ©canismes provoquant des pannes soudaines dans les trains. Les valeurs numĂ©riques 53,13845 et 17,99011 trouvĂ©es dans le code informatique semblaient familiĂšres Ă premiĂšre vue. Il sâest rapidement avĂ©rĂ© quâil sâagissait de coordonnĂ©es GPS, indiquant les environs de la gare de Bydgoszcz GĆĂłwna, ou, plus prĂ©cisĂ©ment, le centre de service PESA situĂ© juste Ă cĂŽtĂ©. BientĂŽt, les coordonnĂ©es dâautres services susceptibles dâeffectuer des rĂ©parations et des inspections de trains en Pologne ont Ă©galement Ă©tĂ© trouvĂ©es. Ci-dessous, nous montrons le pseudo-code de lâalgorithme : ```c check1 = 53.13845 < lat && lat < 53.13882 && 17.99011 < long && long < 17.99837 ; check2 = 53.14453 < lat && lat < 53.14828 && 18.00428 < long && long < 18.00555 ; check3 = 52.17048 < lat && lat < 52.17736 && 21.53480 < long && long < 21.54437 ; check4 = 49.60336 < lat && lat < 49.60686 && 20.70073 < long && long < 20.70840 && (this->lock_function_test & 1) ; check5 = 53.10244 < lat && lat < 53.10406 && 18.07817 < long && long < 18.08243 ; check6 = 50.12608 < lat && lat < 50.12830 && 19.38411 < long && long < 19.38872 ; check7 = 52.77292 < lat && lat < 52.77551 && 18.22117 < long && long < 18.22724 ; ``` Les paires de coordonnĂ©es dĂ©finissent les zones dâatelier. Il existe une condition inscrite dans le code informatique qui exige que le train soit dĂ©sactivĂ© sâil passe au moins dix jours dans lâun de ces ateliers. Lâun des ateliers appartient Ă Newag lui-mĂȘme - mais une condition logique diffĂ©rente a Ă©tĂ© dĂ©finie pour ses coordonnĂ©es, probablement Ă des fins de test. Dâautres surprises furent bientĂŽt dĂ©couvertes. Il sâagissait notamment du blocage du train lorsquâun de ses composants (vĂ©rifiĂ© par son numĂ©ro de sĂ©rie) Ă©tait remplacĂ©. Une option permettant dâannuler le verrouillage a Ă©galement Ă©tĂ© dĂ©couverte -- cela ne nĂ©cessitait pas de dĂ©finir des indicateurs au niveau de la mĂ©moire de lâordinateur, mais uniquement la sĂ©quence appropriĂ©e de clics sur les boutons dans la cabine et sur lâĂ©cran de lâordinateur de bord. Lorsque les informations sur le lancement rĂ©ussi des trains Impuls sont parvenues aux mĂ©dias, les trains ont reçu une mise Ă jour logicielle qui supprimait cette possibilitĂ© de « rĂ©paration ». Un code a Ă©tĂ© trouvĂ© sur un autre train lui indiquant de « casser » aprĂšs avoir parcouru un million de kilomĂštres. ## VĂ©rifier la date... Une situation assez cocasse a Ă©tĂ© rencontrĂ©e dans une autre escouade qui a refusĂ© de dĂ©marrer, le 21 novembre 2022, alors quâelle nâĂ©tait pas sur place Ă ce moment-lĂ . Lâordinateur signale une panne du compresseur, les mĂ©caniciens nâont, pourtant, identifiĂ© aucune panne sur le compresseur. Les [pantographes](https://fr.wikipedia.org/wiki/Pantographe_(transport)) ne fonctionnant toujours pas, lâanalyse du code informatique a dĂ©tectĂ© une condition de crash suivante, qui signalait une panne de compresseur : ```txt si le jour est supĂ©rieur ou Ă©gal au 21 et si le mois est supĂ©rieur ou Ă©gal Ă 11 et si lâannĂ©e est supĂ©rieure ou Ă©gale Ă 2021 ``` La situation Ă©tait amusante, car le train devait ĂȘtre inspectĂ© en novembre 2021 (un an avant la panne), mais par coĂŻncidence, la condition nâa pas fonctionnĂ©. Le train a Ă©tĂ© entretenu un instant plus tĂŽt et nâa Ă©tĂ© relancĂ© quâen janvier 2022 - et cette date ne rĂ©pondait plus Ă la condition logique sophistiquĂ©e dĂ©crite ci-dessus. Câest probablement lâincapacitĂ© de lâauteur du logiciel Ă Ă©crire correctement des conditions qui a obligĂ© Ă attendre le 21 novembre 2022 pour que lâon puisse constater lâeffet prĂ©vu. ## Surprise matĂ©rielle Les surprises ne se cachent pas seulement dans les logiciels informatiques. Dans lâun des dĂ©pĂŽts, les chercheurs ont dĂ©couvert un dispositif signĂ© comme « convertisseur UDP / CAN », permettant vraisemblablement une communication Ă distance avec le train. Le supprimer nâa pas empĂȘchĂ© quoi que ce soit de fonctionner. Lâanalyse a montrĂ© que lâordinateur de bord envoyait des informations sur lâĂ©tat du verrouillage Ă cet appareil et que lâappareil lui-mĂȘme Ă©tait connectĂ© Ă un modem GSM. ## Pas seulement Ă WrocĆaw Lâinformation selon laquelle le service SPS avait rĂ©ussi Ă rĂ©parer les trains Newag « cassĂ©s » est rapidement parvenue Ă dâautres services. Cela sâest avĂ©rĂ© ĂȘtre un problĂšme assez courant. Ă WrocĆaw, ils ont analysĂ© 13 rames Impuls, mais celles qui circulaient Ă Koleje Mazowieckie sont Ă©galement tombĂ©es en panne (une unitĂ©), deux Ă Opole, quatre Ă Cracovie, une Ă Zielona GĂłra, quatre Ă Szczecin et une Ă SKM. Heureusement, chacune a Ă©tĂ© rĂ©parĂ©e Ă lâaide dâun outil dĂ©veloppĂ© par nos chercheurs, qui supprime les verrous logiciels de lâordinateur de bord. Au total, nos collĂšgues ont analysĂ© le logiciel de 29 trains, et seulement cinq ont trouvĂ© des surprises allant au-delĂ des instructions dâexploitation officielles. ## La suite Nous laissons lâĂ©valuation des solutions utilisĂ©es par le fabricant aux lecteurs et clients de cette entreprise. Il est intĂ©ressant de noter que, mĂȘme si des poursuites judiciaires sont en cours, il est difficile de trouver en Pologne une institution qui ferait autre chose quâexprimer un intĂ©rĂȘt amical dans cette affaire. Nous nâavons connaissance dâaucune mesure prise par « lâOffice de la protection des consommateurs et de la concurrence », ni par « lâOffice du transport ferroviaire », qui semble pourtant appropriĂ©e. Cette derniĂšre Ă pour rĂŽle de surveiller les pratiques des sociĂ©tĂ©s qui travaillent avec les organisations gouvernementales locales. Que des voyageurs aient subi des dĂ©sagrĂ©ments ou forcĂ©s Ă utiliser des transports alternatifs pendant des mois semble pourtant Ă©ligible Ă un dĂ©dommagement. La seule institution connue Ă avoir pris des mesures est le CERT Polska, qui a Ă©tĂ© informĂ© de la dĂ©couverte par les chercheurs. Le commentaire que nous avons reçu montre que CERT Polska a informĂ© les « autoritĂ©s compĂ©tentes » et que lâaffaire est traitĂ©e par les autoritĂ©s chargĂ©es de lâapplication de la loi. Nous fĂ©licitons les meilleurs hackers polonais pour leur dĂ©couverte intĂ©ressante et lâexĂ©cution professionnelle de la commande. DĂ©cidĂ©ment rien nâest plus motivant quâune date limite demain matin. Lâarticle ci-dessus nâest quâun bref rĂ©sumĂ© de la prĂ©sentation donnĂ©e lors de la confĂ©rence _Oh My H@ck_ le 5 dĂ©cembre 2023 par les membres de lâĂ©quipe : Jakub StÄpniewicz, Sergiusz BazaĆski et MichaĆ Kowalczyk. Lâarticle a omis de nombreux dĂ©tails et une grande partie technique de lâanalyse -- nous ne pouvons quâespĂ©rer que cela motivera les auteurs de lâĂ©tude Ă rĂ©diger et publier son cours. Mis Ă jour le 05/12/2023 Ă 16h00 # RĂ©ponse de lâOffice des transports ferroviaires (UTK) Nous avons reçu la position officielle de lâOffice des transports ferroviaires (UTK), que nous citons intĂ©gralement ci-dessous :>Le prĂ©sident de lâUTK est au courant de lâaffaire et a vĂ©rifiĂ© les informations concernant les analyses effectuĂ©es sur les logiciels des vĂ©hicules ferroviaires et coopĂšre Ă©galement avec les services compĂ©tents Ă ce sujet. En collaboration avec CERT Polska (une Ă©quipe créée pour rĂ©pondre aux incidents violant la sĂ©curitĂ© Internet), une rĂ©union avec le constructeur ferroviaire a Ă©tĂ© organisĂ©e. Les vĂ©hicules rĂ©pondent aux exigences essentielles prĂ©cisĂ©es dans les dispositions des directives europĂ©ennes. Câest la personne qui commande le vĂ©hicule qui dĂ©termine les conditions de service et de garantie dans le cadre de la libertĂ© contractuelle. Ces exigences sont incluses dans les contrats dâachat de trains. Toute limitation des capacitĂ©s de service, y compris les limitations introduites dans le logiciel, peut constituer un Ă©ventuel litige civil entre le client et le fabricant. Le prĂ©sident de lâUTK nâest pas lâautoritĂ© compĂ©tente en la matiĂšre. >ConformĂ©ment Ă lâart. 41 alinĂ©a 2 de la loi du 5 juillet 2018 relative au systĂšme national de cybersĂ©curitĂ© (texte consolidĂ© : Journal des lois de 2023, articles 913, 1703), lâautoritĂ© chargĂ©e de la cybersĂ©curitĂ© du secteur des transports (hors sous-secteur du transport par eau) est lâautoritĂ© compĂ©tente en matiĂšre de cybersĂ©curitĂ©. Ministre chargĂ© des questions de transports. ## Liens - [Newag_Impuls](https://pl.wikipedia.org/wiki/Newag_Impuls) (pl) - [Infineon_TriCore](https://en.wikipedia.org/wiki/Infineon_TriCore) (en) - [Ghidra](https://en.wikipedia.org/wiki/Ghidra) (en) - [CERT Polska](https://en.wikipedia.org/wiki/CERT_Polska) (en) - [journal LinuxFr.org](https://linuxfr.org/users/chocolatineflying/journaux/devoir-hacker-un-train) - BadCyber [Dieselgate, but for trains â some heavyweight hardware hacking](https://badcyber.com/dieselgate-but-for-trains-some-heavyweight-hardware-hacking/) (en) - 404media [Polish Hackers Repaired Trains the Manufacturer Artificially Bricked. Now The Train company is threatening them](https://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/) (en) - [lâhistoire par un ses hackers](https://social.hackerspace.pl/@q3k/111528162462505087) (en) - HackADay [The Deere Disease Spreads To Trains](https://hackaday.com/2023/12/06/the-deere-disease-spreads-to-trains/) (en)