LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
タイトル LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。usb: usblp: LPGETSTATUS ioctlを介した初期化されていないヒープリークの問題です。このドライバの以前の問題と同様に、usblp_ctrl_msg()はusb_control_msg()の戻り値である実際に転送されたバイト数を破棄し、0またはエラーコード(-errno)に折り畳みます。本来はその短いコマンドを検出してエラーを返すべきですが、多くのプリンタが「不正な」応答を返すため、それはできません。statusbufはプローブ時にkmalloc(8)で割り当てられ、最初のLPGETSTATUS ioctlの前に一度も初期化されていません。usblp_read_status()は1バイトの要求を行います。悪意のあるプリンタが0バイトで応答した場合、*statusbufはstaleなkmallocヒープの1バイトとなり、それがローカルのint型変数であるstatusに符号拡張され、LPGETSTATUS経路を通じて直接ioctl呼び出し元にcopy_to_user()されます。この問題は、プローブ時にメモリバッファをゼロクリアすることで修正されました。後の呼び出しで短い読み取りが発生しても、デバイスが最後に送信したものと同一であるため、情報の漏洩は発生しません。

想定される影響 ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
対策

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

公表日 2026年5月28日0:00
登録日 2026年6月11日16:22
最終更新日 2026年6月11日16:22
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 2.6.12
Linux Kernel 2.6.12.1 以上 5.10.258 未満
Linux Kernel 5.11 以上 5.15.209 未満
Linux Kernel 5.16 以上 6.1.175 未満
Linux Kernel 6.13 以上 6.18.30 未満
Linux Kernel 6.19 以上 7.0.7 未満
Linux Kernel 6.2 以上 6.6.140 未満
Linux Kernel 6.7 以上 6.12.88 未満
Linux Kernel 7.1
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年06月11日]
  掲載
2026年6月11日16:22

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

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

usb: usblp: fix uninitialized heap leak via LPGETSTATUS ioctl

Just like in a previous problem in this driver, usblp_ctrl_msg() will
collapse the usb_control_msg() return value to 0/-errno, discarding the
actual number of bytes transferred.

Ideally that short command should be detected and error out, but many
printers are known to send "incorrect" responses back so we can't just
do that.

statusbuf is kmalloc(8) at probe time and never filled before the first
LPGETSTATUS ioctl.

usblp_read_status() requests 1 byte. If a malicious printer responds
with zero bytes, *statusbuf is one byte of stale kmalloc heap,
sign-extended into the local int status, which the LPGETSTATUS path then
copy_to_user()s directly to the ioctl caller.

Fix this all by just zapping out the memory buffer when allocated at
probe time. If a later call does a short read, the data will be
identical to what the device sent it the last time, so there is no
"leak" of information happening.

公表日 2026年5月28日19:16
登録日 2026年5月29日4:13
最終更新日 2026年6月2日2:17
関連情報、対策とツール
共通脆弱性一覧