TCP/IP と Microsoft の DNS サーバーの脆弱性が悪用されると、システムのクラッシュやリモートコードの実行が引き起こされる可能性があります。
Microsoft の 2021 年 2 月のセキュリティ更新プログラムでは、Windows オペレーティングシステムなどの製品で新たに確認された 56 件の脆弱性 (うち 9 件は「重大」) が修正されています。しかし、脆弱性の数が比較的少ないからといって、今回の月例パッチの重要性が低いわけではありません。というのも、そのうちの 1 件が実際に悪用されているからです。
実環境での悪用が確認されているこの脆弱性 (CVE-2021-1732) は、Windows の Win32k.sys に存在する権限昇格の脆弱性です。悪用されているとはいえ、この脆弱性は 2 月のセキュリティ更新プログラムの中で最も緊急性の高いものではありません。4 件のネットワークベースの脆弱性は、潜在的な危険性がはるかに高く、Microsoft は悪用される可能性が高いと評価しています。そのうちの何件かは、インターネット上の攻撃に悪用される可能性があります。
不正なパケット
今回公開されたパッチでは、Windows の TCP/IP ネットワーキングスタックに存在する 3 件の脆弱性が修正されています。1 つ目の CVE-2021-24074 は、Windows システムが受信した IPv4 パケットの処理に存在するリモートコード実行の脆弱性です。攻撃者は、次の 2 つの IPv4 プロトコル機能を使ってトラフィックを作成することで、この脆弱性を悪用します。
- IP フラグメンテーション: パケットを複数のパケットフラグメントに「分割」するオプション。すべてのフラグメントは、受信後にエンドポイント上で 1 つのパケットに再構築されます。
- LSRR (Loose Source and Record Route: ルーズソースルーティング): LSRR は、昔からある「ソースルーティング」を実装する IPv4 ヘッダーオプション です。ソースルーティングとは、パケットがルーティングされるパスを選択して記録するようルーターに要求する方法です。
この脆弱性を悪用するには、IPv4 のこの 2 つの機能が同時に使用される必要がありますが、その状況が偶然に発生することはほとんどありません。両機能を使用する不正なパケットによって、Windows TCP/IP ドライバー (tcpip.sys) は個々のパケットフラグメントの内部データ構造と再構築されたパケットの内部データ構造を混同する可能性があります。そうなった場合、Windows TCP/IP ドライバーは内部バッファの境界外のメモリを読み取ります (Out-of-bounds Read (境界外読み取り) の状態)。パケットが細工されていると、結果として Out-of-bounds Write (境界外書き込み) の状態になるため、メモリが破損し、リモートのコード実行が引き起こされる可能性があります。
これが特に危険なのは、脆弱性のあるコードが Windows カーネルドライバーのコンテキストで実行されているためです。悪用が成功した場合には、攻撃者はカーネルレベルの権限でコードを実行することができます。ただし、多くのファイアウォールやルーターでは、この脆弱性をリモートから悪用しようとしても、デフォルトで阻止される可能性があります。LSRR オプションはアドレス詐称に悪用される可能性があるため、安全ではないと以前から考えられてきました。また、多くの場合、そうしたパケットはフィルタによってインターネットトラフィックから除外されます。しかし、この脆弱性は、比較的単純なローカルエリアネットワーク上で悪用される可能性があるため、パッチの適用を優先的に実行するべきです。
2 月のセキュリティ更新で明らかになった別の 2 つの TCP/IP の脆弱性は、断片化されたパケットも関連していますが、今回関係しているのは IPv6 パケットです。
この 2 つの脆弱性のうち、深刻度が高いのは CVE-2021-24094 です。これは、Windows の tcpip.sys が断片化されたパケットに対して「再帰的再構成」を実行した場合にトリガーされる脆弱性です。特定の状況下では、この再構築プロセスによってダングリングポインター (英文) の状態が発生する可能性があります。これは、ドライバーが割り当て解除されたメモリ領域へのポインターを開いたままにしている状態で、リモートからのコード実行に悪用される恐れがあります。
もう 1 つの IPv6 の脆弱性 CVE-2021-24086 も、断片化されたパケットを再構築する際に発生します。ただし、この脆弱性をトリガーするのは、断片化されたパケットに含まれる大量の拡張ヘッダーです。この脆弱性が悪用されると、NULL ポインタデリファレンスが発生してカーネルと Windows システムがクラッシュし、「ブルースクリーン」が引き起こされます。
Microsoft は、この 2 つの脆弱性がインターネットを介してトリガーできるのか、それとも LAN ネットワーク上でのみ悪用が可能であるのかについては明言していません。
DNS サーバーの問題
2 月のセキュリティ更新プログラムで修正されたもう 1 つのネットワークベースの脆弱性 CVE-2021-24078 は、リモートコード実行につながる可能性のある Windows DNS サーバーの脆弱性です。この脆弱性はインターネットから攻撃可能であることは間違いありませんが、実行するには極めて組織的な攻撃が必要です。攻撃者は、新たなドメインの DNS サーバーに対してクエリを発生させなければならないため、結果としてルート DNS サーバーへのクエリになります。その後、実際のルート DNS サーバーから応答が返される前に、その応答を偽装しなければなりません。
攻撃者は、実際の応答が返ってくる前にルートサーバーの応答を偽装する必要があるため、この脆弱性を悪用した攻撃は、パケット偽装が比較的容易なローカルネットワーク内から実行されることになります。しかし、DNS は UDP をベースにしているため、この攻撃はインターネット上で実行される可能性があります。
注意すべきその他の脆弱性
残り 8 件の「重大」な脆弱性は、直ちに悪用される可能性は低いものの、すべてリモートコード実行の可能性があります。2 件は .NET Core SDK の脆弱性で、1 つ目は Windows および Visual Studio SDK に存在する脆弱性 (CVE-2021-26701)、2 つ目は Linux 用のソフトウェア開発者キットに存在する脆弱性 (CVE-2021-24112) です。
CVE-2021-1722 と CVE-2021-24077 は、どちらも Windows の Fax Service に存在する脆弱性です。なお、Fax Service には今回の件とは関連性のない別のリモートコード実行の脆弱性がありましたが、こちらは 1 月のセキュリティ更新プログラムで修正済です。Windows Graphics コンポーネントも、今月パッチが適用された機能の 1 つ (CVE-2021-24093) で、こちらも 1 月に別の脆弱性が修正されています。さらに、1 月に権限昇格の脆弱性が修正された Windows の印刷スプーラーは、今月は RCE の脆弱性 (CVE-2021-24088) が修正されています。
他の 2 つの脆弱性 (CVE-2021-24088 と CVE-2021-24091) は、画像/動画処理に関連する Windows コーデックに存在するものです (1 件は Windows Codecs Library、もう 1 件は Windows Camera Codec Pack)。この 2 つの脆弱性は、不正な画像や動画ファイルを利用したリモートコード実行攻撃に悪用される可能性があります。
Microsoft が「重大」に分類した脆弱性以外にも、2 月のセキュリティ更新プログラムで修正されたリモートコード実行の脆弱性が 10 件あります。そのうちの 1 件 (CVE-2021-24072) は SharePoint サーバーに存在しますが、これはネットワークベースの脆弱性であるため、Microsoft は悪用される可能性が高いと評価しています。
ソフォスの保護機能
以下は、このアドバイザリを受けて、既存の保護機能と汎用的なエクスプロイト軽減策を補完する目的で SophosLabs がリリースした保護機能の一覧です。
CVE | IPS |
CVE-2021-24072 | SID:2304915 |
CVE-2021-24074 | SID:2304906 |
CVE-2021-24078 | SID:2304905 |
ソフォスは、脆弱性の種類と性質に基づいて、可能な限り迅速に、また十分な情報が得られた場合に、重要な問題に対して検出機能を追加することを目指しています。多くの場合、Intercept X などのエンドポイント製品に搭載されている検出機能は、アップデートを行わなくてもエクスプロイトの試みを検知し、ブロックします。