| 概要 |
GNU Cライブラリのバージョン2.30から2.42において、memalignスイートの関数(memalign、posix_memalign、aligned_alloc)に非常に大きなアライメントを渡すと、整数オーバーフローが発生し、それによりヒープ破損が生じる可能性があります。攻撃者はmemalign関数のサイズ引数とアライメント引数の両方を制御できる必要があります。サイズパラメータはPTRDIFF_MAXに十分近く、かつ大きなアライメント引数とともにsize_tのオーバーフローを引き起こす必要があります。これにより、memalignのアライメントに対する悪意のある入力は[162 + 1, 163]の範囲に制限され、posix_memalignとaligned_allocについては正確に163となります。通常、この種の関数に渡されるアライメント引数は既知の制約された値(例えばページサイズ、ブロックサイズ、構造体サイズ)であり、攻撃者によって制御されることはなく、実際にはこの脆弱性を悪用するのは容易ではありません。アプリケーションのバグにより、別のバッファオーバーフローやアプリケーションや依存ライブラリ内の整数オーバーフローによって入力アライメントが大きくなりすぎる可能性がありますが、典型的なアライメントのソースを考慮すると、これはまれな使用パターンです。
|