CVE-2026-90011 in Linux
要約
〜によって VulDB • 2026年09月16日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
scsi: target: iscsi: ログインペイロード用のターミネータバイトを確保する
iscsi_target_check_login_request()は、DataSegmentLengthがMAX_KEY_VALUE_PAIRSを超えるログインPDUを拒否しますが、そのテスト条件は「>」であり、login->req_bufには正確にMAX_KEY_VALUE_PAIRSバイトが割り当てられています。isctit_get_login_rx()はpayload_length + paddingバイトのペイロードを受け取ります。ここで
padding = ((-payload_length) & 3);
です。したがって、8189から8192までの任意のpayload_length値で、8192バイトのバッファ全体が埋め尽くされます。書き込みは境界内に行われますが、NULターミネータ用のバイトが残されません。
このバッファはその後C文字列として消費されます。CHAPパスでは、chap_check_algorithm()がkstrdup(a_str)を呼び出し、extract_param()がstrstr(in_buf, pattern)に続いてstrlen_semi()を呼び出しますが、これらはいずれも長さを受け取りません。convert_null_to_semi()はさらに、埋め込まれたすべてのNULを「;」に書き換えるため、適切に形成されたNUL区切りのkey=valueレコードで構成されるペイロードであってもターミネータがありません。これらの処理はオブジェクトの末尾を超えて隣接するslabメモリへと読み込みます。これはCHAP用に設定されたポータルに対して認証されていないinitiatorから到達可能です。認証が不要な場合、iscsi_login_zero_tsih_s2()はAuthMethodをNoneに書き換え、CHAPパスには決して入りません。
1バイト余分に割り当てます。kzalloc()はその領域をゼロで埋め、すべてのライターは最大MAX_KEY_VALUE_PAIRSバイトまでオフセット0へコピーするため、このメモリ領域は一切書き込まれません。これによりバッファは常にターミネートされます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.