Comodo Internet Securityのファイアウォールドライバ「Inspect.sys」に、重大なゼロデイ脆弱性が発見されました。この脆弱性を悪用すると、リモートの攻撃者はたった1つのIPv6パケットを送信するだけで、ファイアウォールのルールを完全に回避しながら標的のWindowsシステムをクラッシュさせることができます。
「ComoDoS」と命名されたこの脆弱性は、Marcus Hutchinsによって独自に発見されたもので、ドライバのIPv6拡張ヘッダパーサにおける整数アンダーフローに起因しています。
根本原因の分析、パッチの推奨事項、概念実証コードを含む責任ある開示が行われたにもかかわらず、Comodoはいかなる連絡にも応答していません。
これはベンダーが対応しないというパターンを踏襲しています。Zero Day Initiative(ZDI)は、別の脆弱性(ZDI-24-953)にパッチを適用させようとして約2年間にわたり失敗し続けた経緯を記録しています。
この脆弱性は、Comodoのカーネルモードファイアウォールドライバ「Inspect.sys」内のIPv6パケットパーサに存在します。
ファイアウォールドライバはルールを適用する前に受信パケットを解析する必要があるため、不正な形式のIPv6パケットは、設定されたルールセットに関わらず、すべてのポートがブロックされている場合でもこのバグをトリガーできます。
根本原因は、IPv6固定ヘッダのペイロード長フィールドにおける未チェックの整数アンダーフローです。パーサはIPv6拡張ヘッダを反復処理し、各ヘッダの長さをpacket_desc->payload_lengthから減算します。
すべての拡張ヘッダ長の合計よりも小さいペイロード長フィールドを持つIPv6パケットを作成することで、符号なし64ビットのpayload_length変数で整数アンダーフローが引き起こされます。
たとえば、ペイロード長を8に設定し、拡張ヘッダの長さを16にすると、値は0xFFFFFFFFFFFFFFF8(約18京バイト)にラップアラウンドします。
Inspect.sysは許可/ブロックの判断を行うためにTCP/IPヘッダを解析しなければならないため、このパース処理はポートベースのルールが適用される前に実行されます。
研究者は、対象ポートの開閉状態に関わらずクラッシュが発生することを確認しており、ファイアウォールのルール設定は緩和策として機能しないことを明らかにしています。
概念実証エクスプロイト「ComoDoS」は非常にコンパクトで、Scapyを使用して悪意のあるパケットを作成します。
研究者は、中間ルーターによってドロップされる可能性が最も低いDestination Options拡張ヘッダ(タイプ60)を意図的に選択しており、インターネット上でパケットが標的に到達できる可能性を最大化しています。
サービス拒否(DoS)への影響にとどまらず、研究者はアンダーフローしたサイズ値によって引き起こされる2つの追加メモリ破損プリミティブを特定しました。
境界外(OOB)読み取りはWebDAV/HTTPアーティファクトスキャナ関数内で発生し、破損したペイロード長が16ビット(約64 KB)に切り捨てられます。
読み取りがカーネルプールの割り当て範囲を超えた場合、DISPATCH_LEVELでのページフォルトが即座にシステムをクラッシュさせます。
memcpyを介した到達可能なOOB書き込みプリミティブも確認されていますが、サイズパラメータは32ビットに切り捨てられるため、コピー操作は約4 GBにわたり、現実的なあらゆる条件下でシステムを確実にクラッシュさせます。
標準的なネットワークパケットは約65 KBに制限されているため、書き込みを正常に完了させるほどアンダーフローしたサイズを縮小する実用的な方法はなく、このバグ単体ではリモートコード実行(RCE)の実現は困難です。
Malwaretechの研究者は、根本原因の分析、パッチの推奨事項、概念実証を含む完全なレポートをComodoのセキュリティチームに提出しましたが、2度のフォローアップを試みたにもかかわらず、いかなる確認応答も得られていません。
完全なPoCはGitHub上で公開されています。エンドポイント保護にComodo Internet Securityを使用しているユーザーは、ベンダーからの最新情報を注視することをお勧めします。
翻訳元: https://cyberpress.org/comodo-internet-security-0-day/