Windows Defenderの奇妙な脆弱性「RedSun」とは
インシデントレスポンスの現場でログを追いかけていると、時折、モニターの前で頭を抱えながら乾いた笑いを漏らしてしまうことがある。システムを破壊した真犯人が、高度な技術を持ったハッカー集団でも、未知のゼロデイ・マルウェアでもなく、システムを守るために導入されたはずのセキュリティ・ソフトウェア自身だったというケースだ。強固な鎧が自らの首を絞めるような皮肉なインシデントは、ITの歴史において決して珍しいものではない。しかし、現在セキュリティ界隈の片隅で静かな波紋を呼んでいる「RedSun」と呼ばれる脆弱性は、その中でも群を抜いて滑稽で、かつ深刻な構造的欠陥を突いている。
アンチウイルスがマルウェアを「復元」する日
セキュリティリサーチャーであるNightmare-Eclipse氏が公開したPoC(概念実証)リポジトリは、普段ならひっそりとコードだけを置いておくスタイルの同氏が、わざわざ長文の皮肉を添えて公開したことで注目を集めた。対象となっているのは、世界中で最も稼働台数が多いであろうエンドポイント保護機能、Windows Defenderである。
マルウェア対策ソフトの基本動作は、悪意のあるファイルを検知し、隔離または削除することだ。これはIT業界に属さない一般ユーザーであっても疑いようのない常識だろう。しかしRedSunが暴き出したのは、Defenderが特定の条件を満たした悪意のあるファイルに対して行う、理解に苦しむ奇妙な振る舞いだった。
Defenderがマルウェアを検知した際、そのファイルに「クラウドタグ」が付与されていると、なぜかそのファイルを元の場所へ再び書き戻してしまうというのだ。隔離するのではなく、わざわざ同じ場所に上書き保存をする。この挙動の隙を突き、巧妙にシンボリックリンクなどを操ることで、本来なら権限がなくて触れないはずの重要なシステムファイルを、マルウェア自身のファイルで上書きさせてしまうのがRedSunの手口である。結果として、攻撃者は極めて容易に管理者権限(特権昇格)を奪取できてしまう。
複雑化する防御ロジックの盲点
なぜ天下のMicrosoftが、このような奇天烈なバグを埋め込んでしまったのか。その背景には、現代のエンドポイントセキュリティが抱える「過剰な複雑化」があると考えられる。
かつてのアンチウイルスは、ローカルにあるシグネチャ(定義ファイル)と対象ファイルを突き合わせるだけのシンプルなものだった。しかし現在では、振る舞い検知、ヒューリスティック分析、そしてクラウド上の脅威インテリジェンスとのリアルタイム同期など、幾重もの高度なロジックが絡み合っている。「クラウドタグが付いている場合の特別な処理ルート」はおそらく、誤検知からの復旧プロセスや、クラウド側での詳細解析を待つ一時的な保留処理など、何らかの善意と合理性に基づいて実装されたはずだ。しかし、数百万行に及ぶコードの中で条件分岐が複雑に交差した結果、「悪意のあるファイルをシステム領域に上書きしてしまう」という最悪のバイパスが開通してしまったのである。
完璧な防壁という幻想
Nightmare-Eclipse氏はREADMEの中で、「マルウェア対策ソフトは悪意のあるファイルを削除するものであって、そこにあることを『確実にする』ためのものではないと思うんだけど」と辛辣なジョークを飛ばしている。この一言は、現代のセキュリティアーキテクチャに対する鋭い警鐘だ。
私たちは今、クラウドとAIの力でセキュリティ製品がますます賢くなっていると信じている。しかし、システムが賢く、巨大で、複雑になるほど、開発者でさえ全容を把握できないブラックボックスが生まれる。良かれと思って追加した機能が、最もプリミティブな「ファイルを消す」という大前提を壊してしまう危険性を、RedSunは雄弁に物語っている。
守るべき盾が厚くなりすぎたとき、そこには新たな死角が生まれる。セキュリティに銀の弾丸など存在しないという事実を、これほどまでに皮肉な形で突きつけてくる脆弱性はそう多くない。
参考リポジトリ: Nightmare-Eclipse/RedSun