製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
Title LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
Summary

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()されます。この問題は、プローブ時にメモリバッファをゼロクリアすることで修正されました。後の呼び出しで短い読み取りが発生しても、デバイスが最後に送信したものと同一であるため、情報の漏洩は発生しません。

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

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

Publication Date May 28, 2026, midnight
Registration Date June 11, 2026, 4:22 p.m.
Last Update June 11, 2026, 4:22 p.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
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 (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月11日]
  掲載
June 11, 2026, 4:22 p.m.

NVD Vulnerability Information
CVE-2026-46167
Summary

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.

Publication Date May 28, 2026, 7:16 p.m.
Registration Date May 29, 2026, 4:13 a.m.
Last Update June 2, 2026, 2:17 a.m.
Related information, measures and tools
Common Vulnerabilities List