CVE-2024-40974 in Linux
要約
〜によって VulDB • 2026年05月11日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
powerpc/pseries: hcall結果バッファの有効性とサイズの強制
plpar_hcall()、plpar_hcall9()、および関連関数は、呼び出し元が特定の最小サイズを持つ有効な結果バッファを提供することを前提としています。現在、この要件はコード内のコメントを通じてのみ伝えられており、コンパイラはこれを認識していません。
例えば、以下のようなバグを書いた場合:
long retbuf[PLPAR_HCALL_BUFSIZE]; // PLPAR_HCALL9_BUFSIZEであるべき
plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...);
これは診断メッセージなしでコンパイルされますが、plpar_hcall9()が配列の末尾を超えて結果を保存する際に、実行時にスタックの破損を引き起こす可能性があります。(明確にするために、これは人為的な例であり、実際の事例はまだ見つかっていません。)
この種のエラーをより発生しにくくするために、hcall APIの宣言においてポインタの代わりに明示的なサイズの配列パラメータを使用します。-Warray-bounds[1]を指定してコンパイルすると、上記のコードは以下のような診断メッセージを生成するようになりました:
error: array argument is too small; is of size 32, callee requires at least 72 [-Werror,-Warray-bounds]
60 | plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, | ^ ~~~~~~
[1] 現在、LLVMビルドでは有効化されていますが、GCCでは有効化されていません。コミット 0da6e5fd6c37 ("gcc: disable '-Warray-bounds' for gcc-13 too") および関連する変更を参照してください。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.