こんにちは!ITインフラやセキュリティの現場に飛び込んだばかりの新人エンジニアの皆さん、日々の業務本当にお疲れ様です。「セキュリティ」と言われると、どうしてもピカピカのWebサイトや、スマホアプリを守る話を想像しがちですよね。
でも、私たちの身の回りにある「目に見えない巨大なシステム」――例えば、綺麗な水道水を蛇口から出したり、ビル全体の空調を快適に保ったりしている「制御システム(OT/SCADA)」の世界にも、セキュリティの脅威がひそんでいます。
今回は、サイバーセキュリティの歴史において最も有名であり、かつ最も衝撃を与えたマルウェア「Stuxnet(スタックスネット)」を取り上げます。「なんだか難しそう……」と思うかもしれませんが、大丈夫です!私たちの身近にある「家の鍵」や「泥棒の手口」に例えながら、一歩ずつ分かりやすく紐解いていきましょう。
—
1. 制御システム(SCADA)とPLCってなに?
まずは、今回の舞台である工場やプラントの世界を覗いてみましょう。
工場の巨大な機械や、発電所のタービンを動かすとき、人間がすべて手作業でバルブをひねったりスイッチを押したりしているわけではありません。そこでは、「PLC(プログラマブル・ロジック・コントローラー)」という、産業用の頑丈な「ちっちゃい専用コンピューター」が現場で働いています。
そして、そのPLCたちに「いま温度が上がりすぎているから、バルブを閉めろ!」と全体司令を出すのが、「SCADA(スカダ)」と呼ばれる監視制御システムです。
身近な例え:スマートホームの自動お風呂システム
これを私たちの生活に例えてみましょう。
- SCADA(司令塔): あなたがスマホのアプリで操作する「お風呂の自動給湯リモコン画面」。
- PLC(現場の作業員): お風呂場にいて、リモコンからの命令を受けて実際に蛇口のバルブを「ジーッ」と回す小さな機械。
もし、このPLCの頭脳(プログラム)が悪いやつに乗っ取られたらどうなるでしょうか? お湯を止めるはずのタイミングで全開になり、お風呂があふれて大洪水になってしまいますよね。Stuxnetは、まさにこの「現場の作業員(PLC)」を狙い撃ちした恐ろしいプログラムでした。
—
2. Stuxnetの侵入経路:工場の「合鍵」はどうやって盗まれた?
Stuxnetが狙ったのは、イランのウラン濃縮施設で使われていた、Siemens(シーメンス)社製のPLCです。当時、この施設はインターネットに直接つながっていませんでした。「ネットから切り離されているから安全(エアギャップ)」と言われていた場所です。
では、どうやってマルウェアが入り込んだのでしょうか? 答えは「USBメモリ」です。
身近な例え:ポストに入れられた「見知らぬUSB」
想像してみてください。あなたが絶対に破られない頑丈な金庫(インターネット非接続の工場)の部屋に住んでいます。窓も鍵も完璧です。
しかし、ある日、誰かが郵便受けに「お得な音楽データ入り!」と書かれた可愛いUSBメモリをポロッと入れていきました。気になったあなたが、家のリビングにあるパソコンにそのUSBを挿してしまった……。
Stuxnetは、まさにこの手口を使いました。作業員が何気なく持ち込んだUSBメモリ経由で、厳重に守られた工場の内部へと忍び込んだのです。
—
3. ゼロデイ脆弱性の連鎖:次々と破られる「家の防犯ロック」
Stuxnetが恐ろしいのは、USBで入り込んだ後です。「あ、怪しい動きをするファイルがあるな」とパソコンやセキュリティソフトに気づかれないよう、OS(Windows)の「誰もまだ気づいていないセキュリティの穴(ゼロデイ脆弱性)」をなんと4つも同時に悪用しました。
これは、泥棒が家に侵入するときに、
1. 玄関の鍵の、メーカーすら気づいていない設計ミスを突いて解錠し、
2. 防犯カメラの電源をこっそり切り、
3. さらに警察への自動通報システムを麻痺させる裏ワザを使い、
4. 最後に「自分は家族ですよ」と見せかける偽装パスポートを使う……
これらを一瞬でやってのけるようなものです。セキュリティの世界では、複数のゼロデイを組み合わせる攻撃は非常に高度で、国家レベルの背景があるサイバー攻撃(APT攻撃)の典型例とされています。
—
4. PLCルートキットのメカニズム:嘘の映像を流す「巧妙なサギ」
Stuxnetは、パソコンを踏み台にして、最終目的地であるSiemens製のPLC(S7シリーズ)にたどり着きました。ここでStuxnetが行ったことが、今回のテーマの核心である「ロジック改ざん」と「PLCルートキット」です。
PLCの中には、機械を動かすためのラダーロジック(制御プログラム)が入っています。Stuxnetはこのプログラムをこっそり書き換えました。
身近な例え:防犯カメラに「昔の平和な映像」をループ再生する泥棒
銀行の夜間金庫を想像してください。
泥棒が金庫をこじ開けて中身を盗んでいる最中、警備員のモニターには何が映っているでしょうか? 本来なら「泥棒が侵入しています!」と警告が出るはずです。
しかし、もし泥棒が防犯カメラのシステムをハッキングし、「何も起きていない、平和な夜の映像」をループ再生させていたらどうでしょう? 警備員は「異常なし、今日も平和だな」と思い込んでしまいますよね。
Stuxnetはまさにこれをやりました。
- 物理破壊の実行: PLCに命令して、遠心分離機(ウランを濃縮する機械)の回転数を異常なほど速くしたり、逆に急激に落としたりして、物理的にボロボロに破壊しました。
- 偽装(ルートキット): 同時に、人間がモニターで見ているSCADAの画面には「現在の回転数:正常、トラブルなし」というウソのデータを送り続けました。現場のエンジニアは「機械が壊れ始めていること」に全く気づけなかったのです。
—
5. 私たちはどう備えるべきか?(実務で活かすセキュリティの基本)
Stuxnetのような高度な攻撃を聞くと、「国を狙った話だし、ウチの会社には関係ないや」と思ってしまいがちです。しかし、IoTやスマート工場が当たり前になった現代、中小企業の現場やビル管理システムでも、似たようなリスクが足元まで迫っています。
ここでは、今日から現場で意識できる基本的な対策をコードや設定の視点を交えて見ていきましょう。
対策①:USBポートや周辺機器の無効化(物理セキュリティ)
Stuxnetの侵入経路はUSBでした。現場のPLCとつながるエンジニアリング用PC(メンテナンス用端末)では、不要なUSBポートやCDドライブを物理的・論理的に無効化することが鉄則です。
例えば、Windows環境のレジストリ等でUSBストレージの読み書きを制限する設定(概念的なサンプル)を見てみましょう。
# 【PowerShellサンプル】USBメモリなどの外部ストレージからの読み込みを禁止する設定例
# ※実際の適用時は検証環境で十分にテストを行ってください。
$RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Services\USBSTOR"
# 組織のポリシーとして外部ストレージの利用をシャットダウンする場合、
# "Start" の値を 4 (無効) に設定します。(デフォルトは 3: 有効)
Set-ItemProperty -Path $RegistryPath -Name "Start" -Value 4
Write-Host "USBストレージの自動マウントおよび利用を無効化しました。"
対策②:デバイス間の通信監視(ネットワークのセグメンテーション)
「工場の中だから安全」という考え方を捨て、SCADAやPLCが置かれているOTネットワークと、私たちがメールや資料作成に使うITネットワークは、厳格にファイアウォールで切り離す(ゾーニングする)必要があります。
また、産業用プロトコル(ModbusやS7Commなど)の通信に異常なコマンド(勝手なプログラム書き換え命令など)が流れていないか、IDS(侵入検知システム)で監視する設定も重要です。
{
"security_policy": {
"zone_name": "OT_Control_Network",
"allowed_protocols": ["S7Comm", "Modbus-TCP"],
"action_on_unauthorized_command": "ALERT_AND_BLOCK",
"description": "PLCへの書き込み命令(Program Write)は認証されたメンテナンス端末からの通信のみ許可する"
}
}
—
まとめ:一歩ずつ、確実なセキュリティの目を養おう
Stuxnetの攻撃シーケンスを振り返ると、サイバー空間の攻撃が、いかに現実の「物理世界」を破壊し得るかが見えてきたと思います。
- 侵入のきっかけは、ほんの小さな「USBメモリ」という油断。
- 複数のゼロデイ脆弱性で、システム全体の目をくらます。
- PLCを書き換え、嘘の情報を流しながら物理的な破壊を行う。
難解なサイバー攻撃も、本質を紐解けば「鍵のかけ忘れ」や「見知らぬ怪しいものの排除」といった、私たちが普段の生活で行っている防犯の延長線上にあることが分かります。
新人の皆さん、焦る必要は全くありません。まずは「自分の担当するデバイスやシステムのデータは、どこをどう通ってきているのか?」というデータの流れ(フロー)を意識することから、一歩ずつセキュリティの目を養っていきましょう!
それでは、次回の記事もお楽しみに!
コメント