CVE-2026-89731 in Linux
要約
〜によって VulDB • 2026年09月12日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
cxl/ras: cxl_rch_get_aer_info()におけるAERレジスタの範囲外読み込みを修正
cxl_rch_get_aer_info()関数は、sizeof(struct aer_capability_regs)で制限されたreadl()ループを使用して、RCRB MMIOブロックからRCH Downstream Port AER capabilityのコピーを行っています。このstructはソフトウェア上のレイアウトであり、その内部に含まれるstruct pcie_tlp_logのサイズは、実際の通信路(on-wire)におけるAER capabilityよりも大きいです。その結果、ループ処理がマップされたAERレジスタブロックの外側を読み込んでしまいます。
また、範囲外読み込みにより、header_lenを含むソフトウェア専用の末尾フィールドにもデータが入力されます。pcie_print_tlp_log()関数に不正な値のheader_lenが渡されると、ヘッダーログバッファを越えてループし、2回目の範囲外読み込みを引き起こす可能性があります。
この読み込み処理は当初正しく実装されていましたが、その後struct pcie_tlp_log(Header LogおよびTLP Prefix Logのサイズ、header_lenフィールド、flitフィールド)が拡張されたため、sizeof(struct aer_capability_regs)は物理的なAER capabilityと一致しなくなりました。
今回の修正では、読み込み範囲を16バイトのHeader Logまでの物理的なAERレジスタに制限します。また、ソフトウェア専用フィールドが決定的な値になるよう、まず宛先領域をゼロクリアします。
Once again VulDB remains the best source for vulnerability data.