Check Pointの研究者が、リモートコード実行(RCE)や情報漏えいを可能にするGraphics Device Interface(GDI)の脆弱性を発見したことを受け、Windowsユーザーは今年、重要なグラフィックス関連の修正を3件受け取った。
GDIは、Windowsやサードパーティー製アプリケーションで、グラフィックスやサムネイルの描画、印刷ジョブの処理に広く使われている。
多くのシステムが画像を自動的にプレビューまたは描画するため、GDIの欠陥は、ユーザーの操作なしにコード実行やデータ漏えいを引き起こす、ドライブバイ形式のファイル処理を通じて悪用される可能性がある。
Microsoftは複数のパッチリリースで問題に対処したが、組織は依然としてパッチの適用範囲を検証し、信頼できない画像コンテンツを解析するシステムを強化する必要がある。
CVE-2025-30388について、Check Pointの研究者は「この脆弱性により、特別に細工されたEMF+メタファイルを使って、リモートの攻撃者が範囲外のメモリ読み取りまたは書き込み操作を実行できる可能性がある」と述べた。
GDIの3つの欠陥がもたらす重大なリスク
Check Pointの研究者は、Windows Graphics Device Interface(GDI)において、WindowsによるEnhanced Metafile(EMF+)および関連する画像形式の処理方法に影響する、3つの異なる脆弱性を発見した。
CVE-2025-30388
最初の脆弱性であるCVE-2025-30388は、悪用される可能性がより高いと判断されたもので、EmfPlusDrawString、EmfPlusFillRects、およびEmfPlusFillClosedCurveなどの関数でEMF+を処理する際に、範囲外の読み取り/書き込みが発生する。
この欠陥は、EmfPlusSetTSClipレコードを通じて無効な矩形(RECT)データが入り込み、後続のレコード処理時にメモリが破壊されることに起因する。
この脆弱性は、ScanOperation::AlphaMultiply_sRGB()(GdiPlus.dll)などの関数に存在し、不適切な検証によって範囲外アクセスが可能になっていた。
レコードの順序によっては、攻撃者がメモリ破壊や情報漏えいを引き起こす可能性があった。
Microsoftはこの問題に対処し、不正なRECTが処理されないよう、新たな検証ルーチンであるValidateAndSet()およびIsRectValid()を導入した。
CVE-2025-53766
2つ目の脆弱性であるCVE-2025-53766は、ScanOperation::AlphaDivide_sRGB()関数における範囲外書き込みが原因のリモートコード実行(RCE)脆弱性である。
この問題は、特別に細工されたEmfPlusDrawRectsレコードによって引き起こされる可能性があり、スキャンライン処理を操作して対象ビットマップの境界を超えさせる。
攻撃者はこの状態を悪用し、制限されたメモリ領域に任意のデータを書き込んで、RCEを達成できる可能性がある。
Microsoftは緩和し、EpScanBitmap::NextBuffer()関数を変更してスキャンラインの要求を画像の高さまでに制限し、バッファーオーバーランや範囲外アクセスを防止することで、この弱点に対処した。
CVE-2025-47984
最後のCVE-2025-47984は、EMR_STARTDOCレコードハンドラーにおける範囲外読み取りに起因する。
根本的な原因はStringLengthWorkerW()関数にあり、文字列オフセットの検証が適切に行われていなかったため、入力文字列にヌル終端文字がない場合、割り当て済みバッファーの外側まで読み取ることが可能になっていた。
この欠陥は、過去の問題に対する不完全なパッチであるCVE-2022-35837に関連していた。
Microsoftは修正し、MRSTARTDOC::bPlay()におけるオフセット計算を変更した。これにより、ポインターの検証が実際に参照されるデータと一致し、以前の修正作業をすり抜けて残っていた抜け穴がふさがれた。
これらの問題は総じて、Webコンテンツや文書、印刷経路を通じて配布された、特別に細工されたEMF/EMF+ファイルを使って攻撃者が引き起こせる、メモリ破壊と保護機構の不備に分類される。
攻撃の複雑さは中程度だが、解析経路が広く存在するため、特にサムネイルを描画したり、信頼できないグラフィックスを処理したりするシステムでは、さらされるリスクが高まる。
攻撃対象領域を縮小する
Windows GDIの脆弱性によるリスクを低減するには、組織は直ちに多層的な対策を講じるべきだ。
以下の緩和策は、パッチ管理、アクセス制御、監視、ユーザー啓発を組み合わせ、悪用のリスクと潜在的な影響の双方を最小限に抑える。
- パッチを適用し、修正を検証する:WindowsおよびOffice環境全体に最新のセキュリティ更新プログラムをすべて適用し、システムが完全に更新されていることを確認する。
- 自動描画を制限する:高リスクのワークフローでは、自動プレビューやサムネイル生成、旧式のグラフィックス機能を無効化または制限する。
- 印刷とファイル処理を強化する:印刷およびファイル操作へのアクセスを制限し、関連サーバーを分離するとともに、ユーザーとサービスに最小権限を適用する。
- 実行制御を強化する:許可されていないソフトウェアの実行をブロックし、メモリ攻撃を防ぐためシステムレベルのエクスプロイト緩和策を有効にする。
- 検知と隔離を強化する:異常なグラフィックス活動を監視し、クラッシュを分析するとともに、信頼できないファイルやメディアを安全な環境で隔離する。
- フィルタリングと啓発:ゲートウェイで危険な画像形式をフィルタリングし、定期的に脆弱性スキャンを実施し、疑わしい添付ファイルを見分けられるようユーザーを訓練する。
これらの緩和策を組み合わせることで、組織は悪用される可能性を低減し、全体的なサイバーレジリエンスを強化できる。
古いコードが生む新たなリスク
これらの脆弱性は、ソフトウェアセキュリティにおける課題を浮き彫りにしている。すなわち、レガシーなグラフィックス形式、自動的なファイル解析、過去の不完全な修正が組み合わさることで、最初の発見から長い時間が経過した後にメモリ安全性の欠陥が再び現れる可能性がある。
防御側へのメッセージは明確だ。信頼できないコンテンツを扱うシステムでは、厳格なパッチ管理に加え、欠陥が再発した場合の被害を抑える多層防御を強化しなければならない。
これらの脆弱性は、サイバーセキュリティにおける基本的な真理――信頼は決して自動的に与えてはならないという原則が、ゼロトラストの根幹にあることを改めて示している。





