Python Vulnerability Enables Out-of-Bounds Write on Windows
2026/04/24 gbhackers — Python の “asyncio” モジュールに存在する、深刻なセキュリティ脆弱性 CVE-2026-3298 が発見された。この不備を突く攻撃者は、割り当てられたメモリバッファ境界を超えてデータを書き込む可能性がある。この脆弱性は、2026年04月21日に 公式 Python Security アナウンス・メーリングリストで、Python のセキュリティ開発者 Seth Larson により公開された。

この脆弱性は、非同期 I/O 操作に使用される Windows 固有のイベントループ実装である、”asyncio.ProactorEventLoop” の sock_recvfrom_into() メソッドに存在する。
根本的な原因は、オプション・パラメータ nbytes 使用時における、データバッファの境界チェック欠如である。事前割り当てられたバッファサイズをネットワーク・レスポンスが超えた場合に、この脆弱性によりサイズの制限が適用されず、余剰データが隣接メモリ領域を書き換えてしまう。
この種の不備は out-of-bounds (OOB) 書き込みと呼ばれ、メモリ破壊/アプリケーション・クラッシュに加えて、上書き対象メモリを介した任意のコード実行につながる可能性があり、きわめて危険である。
なお、この脆弱性は Windows に限定される。Linux/macOS/Unix 系プラットフォームは、異なるイベントループ・バックエンド (SelectorEventLoop) を使用するため影響を受けない。
“asyncio” ベースのネットワーク処理を利用する Python アプリケーションを、 Windows 上で実行しているユーザーの、sock_recvfrom_into() を nbytes 引数付きで使用する環境がリスクに晒される。
特に以下の環境で、影響が大きい:
- Windows 上で稼働する Python Web サーバおよび API バックエンド
- UDP ソケット処理を使用する非同期ネットワーク・アプリケーション
- 可変長ネットワーク・データを固定長バッファで受信するサービス
Python Security チームは、この脆弱性の深刻度を High と評価している。OOB 書き込みの不備は、メモリ破壊攻撃で頻繁に悪用されている。広く利用される標準ライブラリの “asyncio” に存在する脆弱性であるため、本番環境におけるリスクが高まっている。
すでに GitHub は、Pull Request #148809 を CPython リポジトリへ提出し、この問題に対処している。このパッチは、不足していた境界チェックを追加し、受信データが nbytes パラメータで定義されたバッファサイズを超えないことを保証する。
Windows 環境の Python ユーザーは、以下を実施すべきである:
- “cve.org/CVERecord?id=CVE-2026-3298” で公式 CVE 情報と修正バージョンを確認する。
- 修正済み Python リリースが公開され次第、速やかに適用する
- パッチ適用までの間、信頼できないネットワーク環境では、 sock_recvfrom_into() の nbytes 使用を回避する。
“asyncio.ProactorEventLoop” は、Python 3.8 以降の Windows におけるデフォルトイベント・ループであるため、この脆弱性は広範な Python 環境に影響する。
Windows 上でネットワーク公開アプリケーションを開発する開発者は、このパッチ適用を最優先とすべきである。
訳者後書:この問題の根本的な原因は、Python の非同期通信を担う asyncio モジュールの特定の機能 (sock_recvfrom_into) において、受け取るデータの大きさを正しく制限する仕組みが欠落していたことにあります。具体的には CVE-2026-3298 として識別されており、あらかじめ用意したメモリの枠 (バッファ) を超えるデータが届いた際も、その枠をはみ出して隣のデータを書き換えてしまう “境界外書き込み” (OOB 書き込み) が発生します。これにより、プログラムが異常終了したり、本来動くはずのない悪意ある命令が実行されたりするリスクが生じます。ご利用のチームは、ご注意ください。よろしければ、Python での検索結果も、ご参照ください。
You must be logged in to post a comment.