LinuxのLinux Kernelにおける配列インデックスの検証に関する脆弱性
タイトル LinuxのLinux Kernelにおける配列インデックスの検証に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。net: usb: cdc_ncmでは、NDP16のnframes境界チェックにndpoffsetを追加しました。cdc_ncm_rx_verify_ndp16()はNDPヘッダーとそのDPEエントリがskb内に収まっているかを検証します。最初のチェックはndpoffsetを正しく考慮しています:if ((ndpoffset + sizeof(struct usb_cdc_ncm_ndp16)) skb_in-len)。しかし、2つ目のチェックはこれを省略しています:if ((sizeof(struct usb_cdc_ncm_ndp16) + ret * (sizeof(struct usb_cdc_ncm_dpe16))) skb_in-len)。これはNDPがオフセット0にあるかのようにDPE配列サイズをskb全体の長さと比較しており、実際にはndpoffsetにあるべきです。NDPがNTBの末尾近く(大きなwNdpIndex)に配置されると、DPEエントリはskbデータバッファを越えてしまい、チェックを通過してしまいます。その結果、cdc_ncm_rx_fixup()はDPE配列を反復処理する際にバッファ外のメモリを読み取ってしまいます。この問題を解決するために、nframesの境界チェックにndpoffsetを追加し、struct_size_t()を使用してNDPとDPE配列のサイズをより明確に表現するように修正しました。

想定される影響 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年4月3日0:00
登録日 2026年5月22日10:58
最終更新日 2026年5月22日10:58
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 3.8 以上 6.6.130 未満
Linux Kernel 6.13 以上 6.18.20 未満
Linux Kernel 6.19 以上 6.19.10 未満
Linux Kernel 6.7 以上 6.12.78 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月22日]
  掲載
2026年5月22日10:58

NVD脆弱性情報
CVE-2026-23448
概要

In the Linux kernel, the following vulnerability has been resolved:

net: usb: cdc_ncm: add ndpoffset to NDP16 nframes bounds check

cdc_ncm_rx_verify_ndp16() validates that the NDP header and its DPE
entries fit within the skb. The first check correctly accounts for
ndpoffset:

if ((ndpoffset + sizeof(struct usb_cdc_ncm_ndp16)) > skb_in->len)

but the second check omits it:

if ((sizeof(struct usb_cdc_ncm_ndp16) +
ret * (sizeof(struct usb_cdc_ncm_dpe16))) > skb_in->len)

This validates the DPE array size against the total skb length as if
the NDP were at offset 0, rather than at ndpoffset. When the NDP is
placed near the end of the NTB (large wNdpIndex), the DPE entries can
extend past the skb data buffer even though the check passes.
cdc_ncm_rx_fixup() then reads out-of-bounds memory when iterating
the DPE array.

Add ndpoffset to the nframes bounds check and use struct_size_t() to
express the NDP-plus-DPE-array size more clearly.

公表日 2026年4月4日1:16
登録日 2026年4月15日11:24
最終更新日 2026年4月7日22:21
関連情報、対策とツール
共通脆弱性一覧