- 2024年8月13日、Windowsの通信処理に重大な「脆弱性(バグ)」が見つかりました。
- ユーザーが何も操作しなくても、悪意のあるデータを受信すると悪意のあるコードを実行されてしまう、「ゼロクリック攻撃」の危険性があります。
- すでに Windows Updateでセキュリティ更新(KB5041571など)が提供されているので、早めにアップデートしておきましょう。
要は「Windowsのセキュリティ面でバグがあったことがわかった」というのを、どうして「脆弱性(vulnerability)」なんて難しく言うんだろう。
1. 2024年8月のWindows Updateは早めに
Microsoftは2024年8月13日、Windowsの重大な脆弱性(CVE-2024-38063)を公表しました。
すでに、2024年8月の月例セキュリティ更新プログラム(月例パッチ)で修正されているので、早急な対策が求められています。
WindowsのTCP/IP処理に不具合があり、悪意のあるコードを受信するとユーザーが何も操作しなくても攻撃を受ける可能性があるからです。
インターネット通信の「基本」となる仕組みに問題が見つかったので、対策が必要なのです。
このような複雑な攻撃手法が可能なのは、低レベルのネットワーク処理において、入力値の検証が不十分であったり、エラー処理が適切でなかったりするためです。
1-1. リモート攻撃の危険度は9.8(CVSS)
この脆弱性の危険度を表す指標であるCVSSスコアは9.8。
これは、非常に高い値です。
その理由は:
- ユーザーが何もしなくても攻撃される可能性がある
- 攻撃が成功する可能性が高い
- 攻撃者がパソコンを完全に制御できる可能性がある
1-2. 過去の重大な脆弱性の例
「重大」な脆弱性の問題は、過去にも大きなニュースがいくつもありました。
実際にスパイウェアやランサムウェアに悪用されたケースもあります。
- Heartbleed (CVE-2014-0160)
CVSSスコア: 10.0
OpenSSLの暗号化ライブラリに存在した深刻な脆弱性。
暗号化された通信から機密情報を盗み取ることが可能でした。 - EternalBlue (CVE-2017-0144)
CVSSスコア: 9.8
Microsoft WindowsのSMBプロトコルの脆弱性。
WannaCryランサムウェア攻撃に悪用され、世界中で大規模な被害をもたらしました。 - Microsoft Edgeのメモリ破損の脆弱性(CVE-2021-31204)
CVSSスコア: 9.6
Microsoft Edge(Chromiumベース)のメモリ破損の脆弱性。
リモートコード実行のリスクがありました。 - iOSのゼロクリック脆弱性(CVE-2021-30860)
CVSSスコア: 9.8
Pegasusスパイウェアに悪用され、デバイスを完全に制御される可能性がありました。
Pegasusスパイウェアとか、Heartbleedは聞いたことがある気がする。
1-3. 見つかった不具合は更新で修正される
「脆弱性」といっても、「プログラムの軽微なミス」です。
問題が特定されれば、比較的 短期間に修正されます。
Microsoftは、2024年8月の定期更新プログラムでこの問題を修正しています。
Windowsの更新プログラムを適用すれば、基本的に対応は完了です。
セキュリティの問題が見つかった時、すぐに公表せずに修正が完了したタイミングで発表することが多いです。
これは、問題が公にするだけで対策が用意できていないと、一般の利用者は何をしたらよいかわからないです。
さらに、悪意ある人々がそれを悪用しようとする危険も広げてしまいます。
何らかの事情ですぐにWindow Updateが実行できない場合は、パソコンのIPv6機能を無効にすれば一時的な対策になります。
定期的にWindowsの更新プログラムを適用していれば、大丈夫なんだね。
2. TCP/IP処理における「整数アンダーフロー」
この問題を発見したXiaoWei氏によると、悪用されるリスクもあるとのことです1。
そのため、詳しい内容は公開されていません。
「整数アンダーフロー」、TCP/IP処理、IPv6、リモート攻撃、というキーワードから、バグの概要を説明します。
2-1. 「整数アンダーフロー」という些細な問題が引き起こす
この脆弱性は、IPv6が有効になっているWindowsシステムに影響します。
逆に言うと IPv6を無効にしている場合は、この脆弱性の影響を受けません。
これは、WindowsのTCP/IP処理に内に「整数アンダーフロー」を引き起こす不具合が紛れ込んでいたからです。
「整数アンダーフロー」とは、コンピューターが扱う数値が、想定される最小値を下回ってしまい誤動作を起こす現象です。
たとえば、8ビットの符号なし整数(0から255まで表現可能)の型の場合、
0から1を引こうとすると、結果は255になってしまいます。
-1を表現できないため、255に「巻き戻る」ためです。
車の走行距離計が99999kmから0kmに戻ってしまうようなものなんだね。
2-2. IPv6パケットの数値フィールド
攻撃者は、Windowsの処理に混乱を引き起こす特殊なデータが含んだ IPv6パケットをWindowsパソコンに繰り返し送信します。
IPv6パケットには、様々なフィールドがあります。
その中には、パケットの長さやデータの量を示す数値フィールドが含まれています。
これらのフィールドは通常、固定されたビット数で表現されます。
例えば、攻撃者はパケットの長さを示すフィールドに、実際のデータ量よりも小さな値を設定するようなことを試みます。
通常は、不正なパケットを適切に処理するようにシステムは設計されています。
しかし、今回のWindowsのTCP/IP処理ではその部分がうまく処理できていなかったようです。
例えば、パケットの長さフィールドに基づいてメモリを確保する際に、整数アンダーフローが発生しWindowsは予期せぬ動作をするような可能性があります。
実際には大きなデータに対して小さなメモリしか確保しないといった状況が起こると、プログラムのコードを破壊することができてしまいます。
- メモリの不正アクセス:
確保したメモリ領域を超えてデータを書き込んでしまう - バッファオーバーフロー:
本来のデータ領域を超えて、隣接するメモリ領域を上書きしてしまう - プログラムの制御フローの変更:
不正なメモリアクセスにより、プログラムの実行パスが変わってしまう
これらの予期せぬ動作を利用して、攻撃者は任意のコードを実行したり、システムの権限を奪取したりする可能性があります。
つまり、パソコンを完全に制御下に置くことができてしまうのです。
2-3. 「ゼロクリック攻撃」のリスクと防御
この脆弱性の特に危険な点は、「ゼロクリック攻撃」が可能なことです。
「ゼロクリック攻撃」とは、ユーザーが何も操作しなくても攻撃が成立する手法を指します。
パソコンで何も操作していなくても、突然見知らぬプログラムが実行されてしまうようなものなんだね。
一般的には、ユーザーが不審なリンクをクリックしたり、怪しいファイルを開いたりすることで、リスクにさらされます。
しかし、残念ながら、これはリスクの一部に過ぎません。
TCP/IP通信のパケットの場合は、相手から送られたり、通常の通信に混入させられるおそれがあります。
攻撃者があなたのIPアドレスを知れば、直接パケットを送信することもできます。
もし、ファイアウォールなどの保護がない場合、これらのパケットがあなたのパソコンに到達する可能性があります。
また、攻撃者が通信経路上に位置し、正当なトラフィックに悪意のあるパケットを挿入する可能性もあります。
とはいえ、ファイアウォールや通信の暗号化で、ある程度はリスクを減らせています。
(補足)
- : 「MSRC fixed a RCE bug in TCPIP module. I found the bug several months ago. Its score is 9.8 and exploitation is more likely. Please apply the patch immediately. 」- weiさん / X