1 ポイント 投稿者 GN⁺ 2023-12-06 | 1件のコメント | WhatsAppで共有
  • ポーランドの NEWAG Impuls EMU 列車がサードパーティ整備工場での整備後に停止する問題について、研究者3人が約1年かけてPLCコードをリバースエンジニアリングした
  • メーカーは原因を 整備ミス に帰し、自社での整備を主張していたが、コードには特定条件で偽のエラーにより列車をロックするロジックが含まれていた
  • 一部のコントローラーバージョンは GPS座標 でサードパーティ整備工場を識別しようとしており、文書化されていない運転室のキー組み合わせでロックを解除できた
  • その後のPLCソフトウェアではキー組み合わせによる解除はなくなったが、ロックロジック は残り、特定のアップデート後にはHMIが著作権侵害の警告まで表示した
  • 列車の GSMテレメトリ装置 はロック条件を送信しており、一部の事例ではリモートロックの可能性も示された

NEWAG Impuls EMU PLCコードのリバースエンジニアリング

  • q3k、redford、mrtickは約1年にわたり、NEWAG Impuls EMU 列車のPLCコードをリバースエンジニアリングした
  • 問題の列車は サードパーティ整備工場 で整備を受けた後、任意の理由でロックされる症状を示していた
  • メーカーはサードパーティ整備工場の整備ミスが原因だとして、サードパーティではなくメーカーで整備すべきだと主張した

コードに含まれていたロック条件

  • PLCコードには、列車を 偽のエラーコード とともにロックするロジックが含まれていた
    • 特定の日付以降にロックが発生する可能性があった
    • 一定時間運行していない場合にもロックがかかる可能性があった
  • あるコントローラーバージョンには GPS座標 が含まれており、この動作をサードパーティ整備工場に限定するために使われていた

文書化されていない解除方法とその後の変更

  • 運転室の操作部で特定の キー組み合わせ を押すと、列車のロックを解除できた
  • この解除方法は文書化されていなかった
  • より新しいPLCソフトウェアバージョンではキー組み合わせによる解除が削除されたが、ロックロジック はそのまま残っていた

HMI警告とGSMテレメトリ

  • NEWAGの特定アップデート後には、運転室の操作部が 著作権侵害 に関する警告メッセージを表示した
    • HMIが、ロックがかかるはずだった条件の一部を検知したにもかかわらず、列車が運行を続けている場合にメッセージが表示された
  • 列車には GSMテレメトリ装置 が搭載されていた
    • この装置はロック条件を送信していた
    • 一部の場合には、リモートで列車をロックできるように見えた

1件のコメント

 
GN⁺ 2023-12-06
Hacker News の意見
  • これらの列車は、ポーランドでかなり多くの地域鉄道会社が独占的に使っている。整備等級は P1 から最も複雑な P5 までの5段階で、以前は大手企業だけが P3 以上を担当していたが、数年前から European Union Agency For Railways が市場を開放したことで、より小規模な競合企業がはるかに低い価格で入札を勝ち取り始めた。
    SPS Mieczkowski が整備した列車4編成が起動すらしなくなったことから始まり、同社は 50万ユーロの罰金を支払わなければならず、列車は Newag に戻された。同時に、整備に入ってすらいなかったにもかかわらず、ある場所に長く留まりすぎたという理由だけで、別会社の列車も動かなくなった。結局 SPS Mieczkowski が Dragon Sector を雇って調査し、列車を無効化する別個のルーチンが複数見つかった。
    この事件はポーランドの Central Anti-Corruption Bureau が調査中だが、Newag に大きな打撃が及ぶかは疑問だ。ポーランドの Office of Rail Transport は、列車ダイヤの小さなミスにも苦情を浴びせ、命令を出していた機関だが、この事件への介入からは手を引いたし、列車購入は入札手続きが非常に厳格なので、鉄道会社が動ける余地もほとんどない。

    • これはポーランド刑法 254a条のサボタージュ犯罪に明確に見える。入札手続きはこの事件では重要ではなく、有能な検察官が必要なだけだ。
      https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/kodeks-kar...
    • Internal Security Agency も調査中で、Newag が大きな問題を避けるのは難しそうだ。内部でもこの件を極めて深刻に受け止めている。
      何が起きたのかを立証する証拠が膨大にあるので、逃げ切れる可能性はほとんどない。それでも、ハッキングされたと主張して逃れようとしている。ハッカーが競合他社の整備した列車のファームウェアを書き換えて列車を文鎮化した、という筋書きだが、競合する鉄道路線の GPS 座標が文字どおりハードコードされていた。
    • より新しい Impuls 2 はポーランド国外でも使われている。イタリアの FSE が11編成を運行中だ。
      ただし Newag がイタリアでの拡大を引き続き望んでいたことを考えると、それらの列車までサボタージュしたとは思えない。もちろん、新規顧客まで燃やしてしまっても構わないと考えていた可能性もある。
  • コメントの中に、より長い記事と追加の詳細へのリンクが埋もれている。
    ポーランド語:
    https://zaufanatrzeciastrona.pl/post/o-trzech-takich-co-zhak...
    https://wiadomosci.onet.pl/kraj/awarie-pociagow-newagu-haker...
    英語:
    https://zaufanatrzeciastrona-pl.translate.goog/post/o-trzech...
    https://wiadomosci-onet-pl.translate.goog/kraj/awarie-pociag...
    背景を補足すると、ポーランドは16の voivodship に分かれており、2000年代初頭の改革以降、ほぼ各地域が独自の地域鉄道会社を持ち、互いに協力している。1年以上にわたって Newag の列車に不審なことが起きていることは、実質的に誰もが知っていた。複数の会社が所有する列車で故障が相次ぎ、それらは Newag ではなく第三者の整備業者を使っていた。そのため整備業者がハッカーを雇い、リバースエンジニアリングで正確に何が起きているのかを理解するのに時間がかかった。

    • ポーランド人なので województwo が何を意味するかは知っていたが、英語に voivodship という対応語があるとは知らなかった。Wikipedia で読んでみると興味深かった。
      https://en.wikipedia.org/wiki/Voivodeship
  • Microsoft がかつて DR-DOS との競争を実質的に台無しにするために使った AARD “crash” を思い出した
    AARD コードは Microsoft Windows 3.1 ベータリリースに含まれていたコード片で、Windows が MS-DOS や PC DOS ではなく DR-DOS のような競合互換品の上で実行されているかを判定し、その場合に難解なエラーメッセージを出すようになっていた。この XOR 暗号化、自己書き換え、意図的に難読化された機械語コードは、文書化されていない DOS の構造体や関数をいくつも使っていた
    https://en.wikipedia.org/wiki/AARD_code
    https://www.geoffchappell.com/notes/windows/archive/aard/drd...
    https://news.ycombinator.com/item?id=36042213

    • Microsoft ならやりそうだ。Compaq に OS/2 Warp 入りの PC を1台でも売ったら、Windows 入りの PC は二度と売れないようにすると言った、まさにその会社なのだから
      良いものを長く享受できなくするのは、結局は人間だ。OS/2 Warp は素晴らしい OS だった
    • AARD コードは Windows の使用を妨げない 非致命的な警告で、実際にはリリースもされなかった。最終リリースでは到達不能になるようパッチされていたが、おそらく回帰を避け、長いビルド時間を短縮するためのバイナリパッチだったのだろう。フロッピーディスクの配置最適化という大きなパッキング問題もあった
      ちなみに DR-DOS は発売時点から袋小路の製品だった。人々や OEM が、グラフィカル OS と、そのグラフィカル OS のブートローダーのように動く DOS という2つの OS を一緒に買うはずがないことは明白だった。スタンドアロンのテキスト専用 16bit DOS 市場が意味のある期間存在するという考えは完全な幻想で、DR-DOS は販売量の面でも重要ではなかった。AARD コードが実際に Windows 3.x の最終版に入っていたとしても、何も変わらなかっただろう
    • 今回のケースとはあまり同じではない。AARD のクラッシュは意図的な 互換性破壊で、これは計画的陳腐化に近い
      列車を「長く」止めすぎると無効化されるとは、Microsoft もプラットフォームをそのくらい支配したかったのだろう
    • 記事によればその機能は有効化されていなかったというが、だとするとそれがどうやって DR-DOS との競争を台無しにするのに使われたというのか疑問だ
    • 数年間にわたって世界の OS 支配を確保した代償として 2億8000万ドルの和解金なら、かなり安いものだ
  • 投稿後に Newag の株価がかなり下がったが、これは Mastodon 発の価格調整の最初の例だろうか?
    https://g.co/kgs/WVku4C

    • それでもまだ1カ月では +10%、3カ月では +25% だ
    • ポーランドのメディアも報じているので、Mastodon だけが原因で起きたわけではない
  • 2022年11月21日、運行中ですらなかった別の列車編成が動作を拒否するという、かなり笑える状況があった。コンピューターはコンプレッサー故障を報告したが、整備士たちが確認したところコンプレッサーには何の問題もなかった。それでも列車はパンタグラフを上げず、コンピューターコードを解析すると故障を強制的に発生させる条件が見つかった
    日が21日以上、月が11月以上、年が2021年以上なら コンプレッサー故障を報告せよ、という具合だった

    • 好意的に解釈すれば、コンプレッサーメーカーが重要部品の交換を保証するために 有効期限を入れておいたのかもしれない。だが、おそらくは単に怪しい商売だろう
    • 本当の犯罪は、標準の日付/時刻ライブラリと単純な > 2021-11-21 比較を使わなかったことだ
    • そのようにコーディングした理由は、コンパイル済みコードに特定の日付がそのまま現れないようにするためかもしれない
  • このメーカーは重要インフラを麻痺させて、ポーランドを文字どおり 人質に取った ことになるのではないか? 信じがたいほど大胆な犯罪で、このまま逃げ切れるかはあまり確信がない

    • 整備工場ではなく メーカー だ。整備工場は入札を勝ち取っただけで、サプライヤーが報復することにしたのだ
  • 世界は本当に狭い。HN を開いたら、何度も乗ったことのある列車についての映画のような話が出てきた。実際に止められたその列車のうち1本に乗って通過したことがある可能性もある
    いずれにせよ コードレビュー がなかったか、レビュー担当者が何らかの理由で受け入れたということだ。どちらの方が怖いのかはよく分からない

    • 第三者がコードレビューをするという意味なのか? 普通そんなことがあるのか?
      これは列車メーカーが意図し、メーカーがコード作成を指示したことは明らかに見える。ハッカーが管理者にも知られずこっそり入れた状況ではなさそうだ。誰がどんなコードレビューをするというのか気になる
      他のコメントを読んでみると、HN のトップ記事が変わっていて、一部のコメントは情報がずっと少なかった記事を前提に書かれていたようだ。だからコメントが混乱していたらしい
    • そのコードはおそらくきちんとレビューされ、かなり真剣なテストも経ていたのだと思う。追加のトリガー条件が付いた ジオフェンス が存在する点から推測できる
  • 残念ながら Newag の列車は、別のポーランドメーカーである Pesa より品質がかなり良い方だ。信頼性が高すぎて、人為的な故障を作る必要があったようだ

  • 誰がこれらの悪意ある条件をコーディングし、誰が知っていたのか気になる。内部告発を考えた人は誰もいなかったのだろうか?
    参考までに、同社に関する匿名の従業員評価ページがある: https://www.gowork.pl/opinie_czytaj,19587
    かなり 有害な職場環境 に見える

    • ソフトウェア開発者としてこういうことを指示されたら、必ず 書面での指示 を求めるべきだ
  • この状況が欧州の鉄道サービス会社 Akiem との契約にどんな影響を与えるのか興味深い。Akiem はフランス向けサービスと列車のために Newag と1億6400万ユーロの契約を結んでいる
    [1] https://biznes.pap.pl/pl/news/all/info/3509606,newag-inks-eu...