【活用ガイド】

JVNDB-2024-030004

Debian等の複数ベンダの製品における初期化されていないリソースの使用に関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。nsh:nsh_gso_segment()関数で外側ヘッダーのskb-{protocol, data, mac_header}を正しく復元しなかった問題です。syzbotは、VIRTIO_NET_HDR_GSO_UDPで階層化された以下のプロトコルを持つ細工されたGSOパケットにより、様々なクラッシュ([0]およびリンク参照)を引き起こしました。対象のプロトコルはETH_P_8021AD + ETH_P_NSH + ETH_P_IPV6 + IPPROTO_UDPです。NSHはIPv4、IPv6、イーサネット、NSH、およびMPLSをカプセル化できます。内側のプロトコルがイーサネットの場合、NSHのGSOハンドラであるnsh_gso_segment()はskb_mac_gso_segment()を呼び出して内側プロトコルのGSOハンドラを起動します。nsh_gso_segment()はskb_mac_gso_segment()を呼び出す前に元のskbに対して以下の処理を行います。1. skb-network_headerをリセットする。2. 元のskbの{mac_header, mac_len}をローカル変数に保存する。3. NSHヘッダーをプルする。4. skb-mac_headerをリセットする。5. 内側プロトコルのためにskb-mac_lenとskb-protocolを設定する。segmented skbに対しては以下の処理を行います。6. ntohs(ETH_P_NSH)をskb-protocolにセットする。7. NSHヘッダーをプッシュする。8. skb-mac_headerを復元する。9. skb-mac_header + mac_lenをskb-network_headerにセットする。10. skb-mac_lenを復元する。6-7および8-9の段階に二つの問題が存在します。(a) 6および7の後、skb-dataはNSHヘッダーを指すため、skbがnetdevから送信される際に外側ヘッダー(この場合はETH_P_8021AD)が剥がされます。また、NSHがNSH+Ethernet(NSH-Ethernet-NSH)でカプセル化されている場合、最初のnsh_gso_segment()のskb_pull()でskb-dataが外側NSHまたはイーサネットヘッダーの途中を指してしまいます。これは2回目のnsh_gso_segment()でイーサネットヘッダーがプルされないために起こります。(b) 8および9でskb-{mac_header, network_header}を復元する際、nsh_gso_segment()は線形バッファ内のデータシフトを考慮していません。しかし、udp6_ufo_fragment()はデータをシフトし、syzbotで示されたようにskb-mac_headerを変更する可能性があります。これが起こると、復元したskb-mac_headerが外側ヘッダーの途中を指すことになります。これまでnsh_gso_segment()は外側ヘッダーと連携して動作していませんでした。nsh_gso_segment()の最後には、NSHヘッダーではなく、細分化されたskbの外側ヘッダーが復元される必要があります。そのために、内側ヘッダーからの相対位置で外側ヘッダーの位置を計算し、skb-{data, mac_header, protocol}を適切に設定します。[0]: BUG: KMSAN: uninit-value in ipvlan_process_outbound drivers/net/ipvlan/ipvlan_core.c:524 [inline] 以下略。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Debian
  • Debian GNU/Linux 10.0
Linux
  • Linux Kernel 4.14 以上 4.19.314 未満
  • Linux Kernel 4.20 以上 5.4.276 未満
  • Linux Kernel 5.11 以上 5.15.159 未満
  • Linux Kernel 5.16 以上 6.1.91 未満
  • Linux Kernel 5.5 以上 5.10.217 未満
  • Linux Kernel 6.2 以上 6.6.31 未満
  • Linux Kernel 6.7 以上 6.8.10 未満
  • Linux Kernel 6.9

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

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

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

Debian NetApp
CWEによる脆弱性タイプ一覧  CWEとは?

  1. 初期化されていないリソースの使用(CWE-908) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2024-36933
参考情報

  1. National Vulnerability Database (NVD) : CVE-2024-36933
  2. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bbccf0caef2fa917d6d0692385a06ce3c262a216)
  3. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/37ed6f244ec5bda2e90b085084e322ea55d0aaa2)
  4. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/5a4603fbc285752d19e4b415466db18ef3617e4a)
  5. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/46134031c20fd313d03b90169d64b2e05ca6b65c)
  6. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4b911a9690d72641879ea6d13cce1de31d346d79)
  7. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/29a07f2ee4d273760c2acbfc756e29eccd82470a)
  8. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/696d18bb59727a2e0526c0802a812620be1c9340)
  9. 関連文書 : nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a7c2c3c1caabcb4a3d6c47284c397507aaf54fe9)
更新履歴

  • [2026年01月27日]
      掲載