CVE-2024-12254: CPython Flaw Could Lead to Memory Exhaustion in asyncio Applications
2024/12/09 SecurityOnline — Python プログラミング言語のリファレンス実装である CPython に、深刻度の高い脆弱性 CVE-2024-12254 (CVSSv4:8.7) が発見された。この脆弱性は、バージョン 3.12.0 以降に影響を及ぼすものであり、asyncio モジュールを用いるアプリケーションにおいてメモリ不足を引き起こす可能性がある。

この脆弱性は、asyncio._SelectorSocketTransport.writelines() メソッドの欠陥に起因する。特定の条件下において、このメソッドは書き込みを “pause” できず、また、バッファ容量が限界に達したときに排出するための、プロトコルを用いた信号の送信ができない。それにより、メモリが無制限に増加し、アプリケーション/システム全体がクラッシュし得る。
この脆弱性には、重大度の高いスコアが割り当てられているが、その一方では、限定的な影響を及ぼすだけとも思われる。また、この脆弱性の対象となる範囲は、macOS/Linux システム上で Python 3.12.0 以降を実行しているアプリのみとなる。さらに言うと、そのアプリのプロトコルで asyncio モジュールが利用され、Python 3.12.0 で導入された新たな zero-copy-on-write ビヘイビアで、 .writelines() メソッドを使用する必要がある。
影響は限定的だが、開発者とシステム管理者に強く推奨されるのは、Python アプリケーションを評価し、脆弱性の有無を判断することだ。前述の条件が満たされている場合には、Python の最新バージョンへと更新することを強く推奨する。
この脆弱性は、Python 3.12.0 での writelines() メソッド・ビヘイビアの変更により発生する。以前のバージョンでは、このメソッドは書き込みに “pause” をかけ、また、特定のしきい値に達した場合には、バッファを空にするための信号を送っていた。しかし、Python 3.12.0 で導入された zero-copy-on-write ビヘイビアにより、この “pause” メカニズムが誤って削除されてしまった。
その結果として、書き込みバッファが無制限に大きくなり、システム・メモリの枯渇に至る恐れが生じていた。それにより、アプリケーション・クラッシュや、サービス拒否、さらには、システムの不安定化につながる可能性が生じている。
すでに Python 開発チームは、最新の Python 3.12 をリリースし、この脆弱性に対処している。このリスクを軽減するために、ユーザーに対して強く推奨されるのは、Python を最新バージョンに更新することだ
CPython ですが、日本語の Wikipedia で確認してみたところ、「Pythonのリファレンス実装である。CPython は C言語で記述されている。CPython 以外に、製品としての品質をもつ Python 実装は Java で記述された Jython、共通言語ランタイム 用に記述された IronPython の2つがあり、また、いくつかの実験的な実装もある」と記されていました。CPython を ご利用のチームは、ご注意ください。よろしければ、Python で検索も、ご参照ください。
You must be logged in to post a comment.