サイバー攻撃と防御の実務
2020年12月に発覚したSolarWinds社の事件では、IT管理用のソフトウェアのビルドの環境に攻撃者が入り込み、正規の更新プログラムに不正なコードが混ぜられた。この更新は、開発元の正規のコード署名が付いた状態で配布された。この事件から得られる教訓として、最も適切なものはどれか。
- Aコード署名が正しい更新プログラムには不正なコードが含まれないので、利用者は署名を確かめれば十分である
- B更新プログラムは危険なので、セキュリティの修正も含めて、ソフトウェアは一切更新しないようにする
- Cコード署名は誰が署名したかと署名後の改ざんの有無を示すだけなので、開発元はビルドの環境を守り、利用者は信頼するソフトウェアの振る舞いも監視する
答えと解説を見る
正解:C. コード署名は誰が署名したかと署名後の改ざんの有無を示すだけなので、開発元はビルドの環境を守り、利用者は信頼するソフトウェアの振る舞いも監視する
コード署名は、署名した者が誰かと、署名の後に内容が変えられていないことを確かめる仕組みで、署名の前に混ぜられた不正なコードは見分けられません。ソフトウェアのサプライチェーン攻撃の代表例であるSolarWinds社の事件では、ビルドの途中で不正なコードが加えられたため、署名付きの正規の更新として多くの組織に届きました。2024年3月に発覚したxz-utilsのバックドアでも、長い期間をかけて開発者として信頼を得た人物が、配布用のファイルに不正なコードを紛れ込ませていました。開発元はビルドの環境を分離して守り、ソースからビルドまでの来歴を記録して検証し、利用者は信頼しているソフトウェアでも、不審な通信や振る舞いをEDRなどで監視することが大切です。
- A. 署名は、署名の前に混ぜられた不正なコードを見分けられません。この事件の更新も、正規の署名付きでした。
- B. 更新をやめると、既知の脆弱性が残り続け、かえって危険が大きくなります。
- C. 正しい。署名で確かめられることの限界を理解し、ビルドの環境の保護と振る舞いの監視を組み合わせます。