【活用ガイド】

JVNDB-2025-025440

LinuxのLinux KernelにおけるNULL ポインタデリファレンスに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました: can: gs_usb: タイムスタンプカウンタの初期化の修正です。gs_usbデバイスドライバがインターフェースの停止前にアンロード(またはバインド解除)されると、USBスタックは最初にstruct usb_driver::disconnectを呼び出し、その後struct net_device_ops::ndo_stopコールバックを呼び出します。gs_usb_disconnect()では、すべての保留中のバルクURBが終了されます。つまり、USBデバイスからホストへ受信されたCANフレームは送信されなくなります。その後、gs_can_close()によって各CANチャネルにリセット制御メッセージが送信され、コントローラがCANバスから除去されます。この競合状態の間に、USBデバイスは依然としてCANフレームをバスから受信して内部的にキューイングし、ホストへ送信しようとします。現行のcandlelightファームウェアの少なくとも現バージョンでは、リセットコマンド中に受信したCANフレームのキューは空になりません。gs_usbドライバのロード(またはバインド)後に、struct net_device_ops::ndo_openコールバックで新しいURBが送信され、candlelightファームウェアは既にキューにあるCANフレームの送信をホストへ開始します。しかし、このシナリオはハードウェアタイムスタンプ機能の実装時には考慮されていませんでした。サイクルカウンタおよびタイムカウンタのインフラはUSBのURB送信後(gs_usb_timestamp_init())にセットアップされるため、timecounter_cyc2time()(呼び出し経路: gs_usb_receive_bulk_callback() - gs_usb_set_timestamp() - gs_usb_skb_set_timestamp())が早すぎるタイミングで呼ばれるとNULLポインターデリファレンスが発生します。この問題を修正するために、gs_usb_timestamp_init()をURB送信前に移動しました。包括的な解決策として、複数チャネルを持つgs_usbデバイスを考慮する必要があります。サイクルカウンタおよびタイムカウンタのインフラはチャネル単位でセットアップされますが、RX URBはデバイス単位です。一つのチャネルのgs_can_open()が呼ばれてURBが送信されると、gs_usb_receive_bulk_callback()は全チャネル(まだ動作していないチャネルも含む)で呼ばれる可能性があります。サイクルカウンタおよびタイムカウンタがセットアップされていないため、再びNULLポインターデリファレンスが発生します。サイクルカウンタおよびタイムカウンタの機能を「チャネル単位」から「デバイス単位」に変更し、URB送信前にセットアップします。さらにgs_usb_receive_bulk_callback()内では、開始されていないCANチャネルのURBは処理せず、単にURBを再送信するだけに変更しました。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 6.1 以上 6.4.7 未満
  • Linux Kernel 6.5

想定される影響

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

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

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

  1. NULL ポインタデリファレンス(CWE-476) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2023-53523
参考情報

  1. National Vulnerability Database (NVD) : CVE-2023-53523
  2. 関連文書 : can: gs_usb: fix time stamp counter initialization - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/5886e4d5ecec3e22844efed90b2dd383ef804b3a)
  3. 関連文書 : can: gs_usb: fix time stamp counter initialization - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/210a8cffc9c1b044281c0a868485c870c9c11374)
更新履歴

  • [2026年01月28日]
      掲載