Pythonの脆弱性がWindows上での境界外書き込みを可能にする

Windowsのpythonのasynxioモジュールで重大度の高いセキュリティ脆弱性が発見され、攻撃者が割り当てられたメモリバッファの範囲外にデータを書き込む可能性がある。

CVE-2026-3298として追跡されたこの欠陥は、2026年4月21日にPythonセキュリティ開発者Seth Larsonによって公式Pythonセキュリティアナウンスメーリングリストを通じて公開された。

この脆弱性は、非同期I/O操作に使用されるWindows固有のイベントループ実装であるasynxio.ProactorEventLoopのsock_recvfrom_into()メソッドに存在する。

根本原因は、オプションのnbytesパラメータを使用する場合、データバッファにおける境界チェックの欠落である。

ネットワークレスポンスが事前割り当てバッファサイズを超える場合、Pythonはサイズ制限を適用することに失敗し、余分なデータが隣接するメモリ領域を上書きすることを許容する。

このクラスのバグは境界外(OOB)書き込みとして知られており、メモリ破損、アプリケーションクラッシュ、または上書きされるメモリに応じて任意のコード実行の可能性につながる可能性があるため、特に危険である。

この脆弱性はWindowsのみである。Linux、macOS、およびその他のUnixベースのプラットフォームは異なるイベントループバックエンド(SelectorEventLoop)を使用しており、完全に影響を受けない。

asyncioベースのネットワーキングに依存するPythonアプリケーションを実行しているWindowsユーザー、特にnbytesパラメータを指定してsock_recvfrom_into()を使用しているものは危険にさらされている。

この脆弱性は特に以下に関連している:

  • WindowsでホストされているpythonウェブサーバーとAPIバックエンド
  • UDPソケット操作を使用する非同期ネットワークアプリケーション
  • 可変長ネットワークデータを固定サイズバッファに受け取るあらゆるサービス

Pythonセキュリティチームはこの脆弱性をHIGH重大度として評価した。境界外書き込みのバグはメモリ破損攻撃で頻繁に悪用され、asyncioのような広く使用されている標準ライブラリコンポーネント内に存在することは、本番Windowsデプロイメントのリスクプロフィールを大幅に上昇させる。

修正は既にGitHub Pull Request #148809を通じてCPythonリポジトリに提出されている。パッチは欠落している境界チェックを導入し、受け取ったデータがnbytesパラメータで定義されたバッファサイズを超えることができないことを保証する。

Windows上のPythonユーザーは以下を行うべきである:

  • cve.org/CVERecord?id=CVE-2026-3298の公式CVEレコードを監視してパッチされたバージョンの詳細を確認
  • 更新されたPythonリリースが利用可能になったらすぐに適用
  • パッチが適用されるまで、信頼されていないネットワーク環境ではnbytesパラメータを指定してsock_recvfrom_into()の使用を一時的に回避

asyncio.ProactorEventLoopはPython 3.8以来Windowsでのデフォルトイベントループであり、この脆弱性を広範な現代的なPythonデプロイメント全体に関連させている。

Windows上でネットワーク向けアプリケーションを構築する開発者は、このパッチを優先するよう強く推奨される。

翻訳元: https://gbhackers.com/python-vulnerability-enables-out-of-bounds/

ソース: gbhackers.com