QuickJS が不正な形式のバイトコード処理で境界外書き込みを起こし、ヒープの破壊とサービス停止に至る
本脆弱性は、バイトコードの復元関数がクロージャ変数の個数フィールドを解析する際の符号拡張の処理に欠陥があることに起因します。攻撃者は悪意をもって直列化されたバイトコードを組み立てて符号付き整数のあふれを発火させ、後続のメモリ割り当ての計算結果を異常に小さくできます。ホスト環境が公開された復元インターフェースからこの不正なデータを読み込むと、下層のヒープ割り当て器は誤った大きさで過小な領域を確保し、続く関数ヘッダー構造の充填とメモリ複製の処理で境界外書き込みが発生します。この欠陥はネットワーク到達性を持ち認証を必要とせず、成立するとプロセスのヒープ配置を直接破壊して、対象サービスの異常終了や制御の乗っ取りの危険を招きます。
- 外部のデータ構造を解析する際は厳格な境界検証の機構を実施し、長さと個数のフィールドを符号なしの型で統一的に扱い、メモリ割り当ての演算を行う前にあふれの検出処理を加えることを推奨します。あわせて暗黙の型強制に代えて安全な整数変換の関数を導入し、割り当て要求の値と実際の書き込み要求が一致するようにして、算術の巻き戻りによる境界外アクセスの芽を根本から断ってください。


