未来を形作るテクノロジーの深掘り記事。

ハッカーが冷凍庫を解凍する日:OTセキュリティから学ぶ教訓

ハッカーがヨーロッパのスーパーの冷凍庫を遠隔で解凍。産業制御システム(OT)が破られ続ける理由と、その守り方を解説します。

夜のスーパーの冷凍食品売り場。霜が溶けており、制御盤では赤い警報ランプが点灯している。
午前3時に除霜コマンドが届いても、被害が出てしまうまで気づく人は誰もいません。

想像してください。あなたはリヨンのスーパーで夜勤のマネージャーです。午前3時、夜間スタッフが冷凍食品ケースに付いた霜が溶けているのに気づきます。そのうちコンプレッサーの警報が鳴り始めます。しかも一つの売り場だけではなく、店舗全体です。原因がわかったころには、業務用冷凍庫が遠隔操作で除霜モードに入れられており、数千ユーロ分の冷凍在庫が廃棄基準の温度へとじわじわ近づいていました。今年、フランスのスーパーチェーンの冷蔵設備コントローラーが攻撃された際に起きたのは、ざっとこんなことでした。「OT(オペレーショナルテクノロジー)セキュリティなんて他人事だ」と考えている人にとっては、よい警鐘になるはずです。

今回の攻撃は、ハリウッド映画に出てくるような高度なエクスプロイトの連鎖ではありませんでした。報道によれば、攻撃者はインターネットから到達可能な業務用冷凍機のコントローラー(大手産業機器ベンダーの製品)に対して自動除霜サイクルを起動させ、被害は複数の国の店舗に広がりました。同じ時期には、ベルギーとオランダにまたがる食品流通グループが、ITシステムの一部をオフラインにせざるを得なくなり、配送にも支障が出ています。偶然か連携した攻撃かはわかりませんが、結果は同じでした。デジタルの世界を通じて、物理的な世界がハッキングされたのです。

そもそも冷凍庫がインターネットに繋がっているのはなぜ?

この話題にはどこでも「なぜ冷蔵庫をわざわざインターネットに繋ぐのか」という趣旨のコメントが殺到しました。修辞的な問いのように聞こえますが、ちゃんとした理由があります。それを無視し続けるから、数年ごとに同じ議論を繰り返すことになるのです。

業務用冷蔵設備は、家庭用の冷蔵庫とはまったく別物です。中規模のスーパーでは、ディスプレイケース、ウォークインの冷蔵庫や冷凍庫、コンプレッサーのラック、凝縮器などが分散した熱システムとして動いており、温度とエネルギーコストのバランスを取るコントローラーがそれらを統括しています。遠隔接続には、きちんとしたビジネス上の理由があります。

  • 遠隔診断。数百店舗を担当する冷蔵設備の保守業者は、故障の数日前にコンプレッサーの異常の兆候を把握できます。定期的な除霜のために技術者を現地に派遣して物理ボタンを押してもらうには実費がかかりますが、遠隔コマンドならコストはほぼゼロです。
  • エネルギー最適化。スーパーは床面積あたりのエネルギー消費量が特に多い建物の一つです。チェーン各社は全店舗のケース温度や除霜スケジュールを調整しており、中には送電網の逼迫時に電力会社へ負荷を落とすことで報酬を得るデマンドレスポンスに参加している店舗もあります。
  • コンプライアンスのログ記録。食品安全規制では温度記録を継続的に残すことが求められています。ネットワーク接続されたコントローラーなら、自動的に監査証跡が残ります。紙に手書きする必要も、紙の記録を改ざんする余地もありません。
  • フリート全体の比較。2,000店舗を運営しているなら、ある店舗のコンプレッサーが同業他店より15%多く電力を消費していると気づけます。これが分かれば、冷媒の漏れを数万ドル規模の修理費に膨らむ前に見つけられるのです。

つまり、接続すること自体が愚かなわけではありません。愚かなのは実装のほうです。初期の報道によると、多くのコントローラーがインターネットから直接到達できる状態だったようです。中には専用のセルラーモデムとSIMカードを内蔵し、パブリックIPアドレス空間に置かれたまま、VPNもゲートウェイもアクセス許可リストもないものもありました。認証についても、広く共有されたある報告によると、ユーザー名はadmin、パスワードは現在の日付から導き出せるものでした。これはもはや攻撃対象領域ではなく、歓迎マットの敷かれた開けっ放しの扉です。

これが実際のOT攻撃の姿

ソフトウェアエンジニアがサイバー攻撃と聞いて思い浮かべるのは、たいてい情報の窃取でしょう。データベースの流出、認証情報の漏えい、ランサムウェアの脅迫文などです。OT攻撃は規模の違いだけでなく、性質がまったく異なります。狙われるのは情報ではなく物理プロセスです。ペイロードは暗号化ではなく、誰であれ接続してくる相手を信用する機器に送られる、正当に見えるコマンドなのです。

今回の除霜攻撃がいかにスマートだったか考えてみてください。攻撃者はマルウェアを書く必要も、権限を昇格させる必要も、プロトコルを完全に理解する必要さえもありませんでした。除霜サイクルは、コントローラーの正常かつ正当な機能です。蒸発器のコイルに霜がつくと定期的に溶かす必要があり、そのために存在しています。攻撃者はそれを予定外のタイミングで、大規模に呼び出しただけです。コントローラーの立場では異常な要求は何も来ていないため、安全インターロックも作動しませんでした。これはOTにおける「混乱した代理人」問題の典型です。デバイスは、本来受け取るべきでないコマンドを忠実に実行してしまうのです。

このパターンは、嫌になるほどあちこちに当てはまります。浄水場では、誰かが薬品注入のスライダーを動かしたことで「攻撃」を受けた例があります。ビル管理システムは、空調機器ベンダーの遠隔アクセス経由で乗っ取られたこともあります。ほぼすべての場合で、危険な機能はバグではなく仕様です。本来触れられてはいけない人が、そこに到達できてしまうのです。だからこそ、解決策はより良いコードレビューではなく、アーキテクチャなのです。

最も危険なOTの脆弱性は、メモリ破壊のバグではありません。正当な機能が、正当でない呼び出し元に公開されていることなのです。

誰も適用しなかったパッチ

セキュリティエンジニアを震え上がらせるはずの詳細があります。これらのコントローラーの根本的な脆弱性は、数か月前にベンダーとの調整された手順を経て、すでに公開されていたのです。セキュリティ研究者が詳細なレポートを公表し、少なくとも一部の機種にはパッチも存在していました。それでも攻撃は起きてしまったのです。

これが産業機器のパッチ適用における暗黙の問題です。企業のITでは、私たちは恵まれています。重大なCVEが公開されると、数日のうちに資産管理ツールが通知し、修正を準備し、展開してくれます。OTはそのようには動きません。スーパーの冷凍ケースにあるコントローラーは15年も稼働し続けることがあります。所有者は店舗、保守は外部の冷蔵設備業者、製造はベンダー、設定は6年前に会社を辞めた設置業者が行ったものです。では、2,400の拠点、9か国にまたがるファームウェア更新を一体誰が適用するのでしょうか。実際には、誰もいないのです。

さらに悪いことに、ベンダーは修正版を出荷したものの、それがセキュリティ上重要であることを明確に示していなかったようです。実際の故障機器を大量に抱えた保守業者にとって、「ファームウェア更新あり」は後回しにしてよい雑用に見えてしまいます。これは技術の問題と同じくらい、コミュニケーションの失敗です。国中の食品を見知らぬ誰かが凍らせられるような脆弱性へのパッチであれば、リリースノートには、施設管理者が絶対に見落とさない言葉で明記すべきです。仕様と実装のギャップは、単にバグを生むだけでなく、運用者が脆弱であることすら知らない、パッチ未適用の機器群を丸ごと生み出してしまうのです。

同じ形をした産業用制御ボックスが延々と並ぶ棚。更新されたばかりの一台だけが光っている。
組み込みコントローラーの群れは、誰がパッチ適用の責任を明確に負うこともないまま、15年間稼働し続けることがあります。

フェイルセーフのデフォルト設定:最悪の日に備えた設計

良い設計とは何かを考えてみましょう。ここで挙げる原則は特別なものではありません。安全性が重要なソフトウェアで私たちが普段から適用している防御的な設計思想と同じものですが、OTの世界ではほとんど徹底されていないだけです。以前にも破滅を防ぐ防御的エンジニアリングについて書きましたが、冷蔵設備のコントローラーはその教科書的な例です。

危険な状態変更にレート制限をかける

除霜サイクルは、たまに実行する分には物理的に安全ですが、継続的に実行すると破壊的です。だからこそ、物理法則をファームウェアに組み込むべきです。除霜が完了したら、遠隔コマンドの内容に関係なく、一定時間は次の除霜を拒否します。除霜リクエストを一回送れる攻撃者は、千回送ることもできます。しかしデバイスは、物理法則が許す以上の要求には応じるべきではありません。これには数行のコードとタイマーが一つ必要なだけで、どんな制御プレーンの侵害であっても被害範囲を抑えられます。

ローカルのインターロックは、遠隔操作の権限に勝る

ケース内の温度がすでに閾値を超えている場合や、製品センサーが温かい値を示している場合、遠隔からの除霜コマンドは拒否し、大きくログを残すべきです。コントローラーは、そのコマンドが非常識であると判断するためのセンサーデータを持っています。だから、そのデータを使わせるべきです。既知の危険な状態へシステムを押し込むようなコマンドは、もはやコマンドではなく、エラーなのです。

パスワードではなく署名付きコマンド

組み込み機器のパスワードは、もはや救いようがありません。デフォルトのままだったり、複数の機器で共有されたり、付箋に書かれていたり、日付から導き出されていたりします。より強固なモデルは非対称鍵です。コントローラーは、プロビジョニング時に書き込まれたベンダーまたは運用者の公開鍵を使って、遠隔コマンドのすべてに付けられた署名を検証します。こうすれば、パスワードを盗んでも役に立ちません。必要なのは署名鍵であり、それは2,400台の冷凍ケースではなく、運用センターのHSMに保管されています。もちろん、これには鍵管理、ローテーション、失効の仕組みが必要です。それでも価値はあります。ソフトウェアアップデートについては10年前にこの問題を解決しています。コマンドチャネルも同じ扱いを受けるべきです。

ネットワークは敵対的だと想定する

セルラーモデムとデフォルトの認証情報を備えた機器は、導入から数週間のうちに、公開されたデバイスを探す検索エンジンに載ってしまいます。確実な対策は、それが避けられないものとして設計することだけです。受信接続はデフォルトで拒否し、テレメトリーはブローカーへの送信専用にし、管理プレーンには相互認証されたトンネル経由でのみ到達できるようにします。「インターネットに公開しないこと」は助言にすぎません。「公開されても耐えられるようにすること」こそがエンジニアリングです。

分離は任意ではない:正しいセグメンテーション

IEC 62443、NISTのガイダンス、古典的なPurdueモデルなど、OTのセキュリティフレームワークはどれも同じことを言っています。制御システムをフラットなネットワークに置いてはいけない、と。それなのに、冷凍ケースに載ったセルラーモデムは、まさにその典型的なアンチパターンです。企業のファイアウォールを完全に迂回し、セキュリティチームが存在すら知らないかもしれない、監視されていない個別にアドレス可能な侵入口を何千個も生み出してしまうのです。

実際に機能するアーキテクチャは次のような形になります。

  1. コントローラーは専用のOT VLANに置く。インターネットへのルートも、企業ITへのルートも持たせません。通信できるのは単一のゲートウェイだけにします。
  2. ゲートウェイでプロトコルのアクセス許可リストを強制する。コントローラーはゲートウェイに対してのみModbusまたはベンダー独自のプロトコルで通信し、それ以外は許しません。ここでの異常は強いシグナルになります。正常な通信は退屈で予測可能だからです。
  3. 遠隔アクセスは踏み台ホスト経由にする。多要素認証、セッション記録、期間限定の認証情報を組み合わせます。冷蔵設備業者には、施設全体への常設VPNではなく、特定の店舗に対する4時間のアクセス権だけを与えます。
  4. テレメトリーは送信専用にする。ベンダーのクラウドが温度データを必要とする場合は、ゲートウェイが送信します。内部から何かが引き出されることはありません。
  5. すべてを棚卸しする。存在を知らないものは分離できません。冷凍ケースのセルラーモデムは、まさに棚卸しから漏れがちな「野良の接続」です。Shodanに先に見つけられてしまうまでのことですが。

これらはどれも、代替案と比べて非現実的でも高額でもありません。難しいのは技術的な側面ではなく、組織的な側面です。施設管理チーム、ITセキュリティチーム、ベンダーが、誰が何に責任を持つかで合意する必要があります。多くの小売業では、OTは両チームの隙間に落ちがちです。ITにとっては物理的すぎ、施設管理にとってはネットワーク的すぎるのです。その曖昧さこそが本当の脆弱性であり、クラウド認証ログの死角で見たように、クラウドの認証の穴を見えない侵害に変えてしまうのと同じ問題です。テレメトリーを誰も所有していなければ、攻撃も誰にも見えないのです。

同心円状の城壁と、一つだけ光る天守を持つ城の上空写真。ネットワークセグメンテーションの比喩。
OTにおける多層防御とは、外部世界と制御プレーンの間に、狭く監視された一本の経路を設けることです。

ソフトウェアエンジニアが持ち帰るべきこと

冷蔵設備のコントローラーに触れることはないかもしれません。しかし、ここにある故障モードは、接続されたあらゆるシステムの故障モードであり、それは年々あなたの問題になりつつあります。ITとOTの境界は溶け続けています。倉庫のロボット、オフィスの空調、研究室の計測機器、スマートビルは、どれも組み込みLinuxで動作し、クラウドと通信しています。今では、サブスクリプションの残高がなくなるとテストを実行しなくなる病院の検査機器すらあります。つまり、インターネットに接続された課金の障害や侵害によって、医療診断が止まりかねないのです。私たちは、便利な機能を一つずつ積み重ねて、そんな世界を作ってしまったのです。

だから、ここから得られる教訓はそのまま他にも当てはまります。自分の露出範囲を棚卸ししてください。何が待ち受けているかわからなければ、誰かが見つけます。「通常の機能」であっても、危険な操作は特権として扱ってください。制御プレーンに到達した攻撃者は、あなたの機能を逆手に取るからです。重要なものには署名し、それ以外には有効期限を設けてください。障害時の状態は安全側に設計してください。接続を失ったコントローラーは、キューに溜まったコマンドをすべて信頼するのではなく、冷却を続けるべきです。そして、セキュリティ修正を出荷したら、大きな声で伝えてください。誰も適用しないパッチは、パッチがないのと変わらないのですから。

このスーパーの除霜攻撃は、主にそのばかばかしさで記憶されるでしょう。ハッカー対冷凍エンドウ豆です。しかし次の攻撃は、アイスクリームを狙わないでしょう。同じ種類の、露出していて、パッチが当てられておらず、認証の弱いコントローラーを狙うはずです。例えば、低温保管の医薬品倉庫、データセンターの冷却設備、あるいは自治体の水道システムです。ハードウェアは同じで、認証情報も同じくらいお粗末です。変わるのは、誰かがその日のパスワードを入力したときに、何が温まり、溢れ、停止するかだけなのです。