LinuxのLinux Kernelにおける境界外読み取りに関する脆弱性
タイトル LinuxのLinux Kernelにおける境界外読み取りに関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。hwmonの(pmbus/q54sj108a2) debugfs読み取り時に発生するスタックバッファオーバーフローの問題です。q54sj108a2_debugfs_read関数は、bin2hex()に誤った引数を渡していたため、スタックバッファオーバーフローが発生していました。この関数では現在、'data'を出力先、'data_char'を入力元として渡しています。bin2hex()は入力バイトごとに2つの16進文字を生成するため、32バイトのブロック読み取りで64バイトの出力となります。しかし、'data'は34バイト(I2C_SMBUS_BLOCK_MAX + 2)のサイズしかなく、そのためバッファの末端から30バイト分がスタック上に書き込まれてしまいます。さらに、引数の順序が逆であったため、初期化済みのゼロの'data_char'から読み込み、'data'に書き込んでおり、実際のI2C読み取りに関係なく全てゼロが出力されていました。これを修正するために、以下の対応を行いました。1. 'data_char'のサイズを66バイトに拡張し、16進出力を安全に格納可能にしました。2. bin2hex()の引数の順序を正しくし、実際の読み取りバイト数を使用しました。3. 最終的なsimple_read_from_bufferの呼び出しで正しい出力バッファを指すポインタを使用しています。

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

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

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

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

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

hwmon: (pmbus/q54sj108a2) fix stack overflow in debugfs read

The q54sj108a2_debugfs_read function suffers from a stack buffer overflow
due to incorrect arguments passed to bin2hex(). The function currently
passes 'data' as the destination and 'data_char' as the source.

Because bin2hex() converts each input byte into two hex characters, a
32-byte block read results in 64 bytes of output. Since 'data' is only
34 bytes (I2C_SMBUS_BLOCK_MAX + 2), this writes 30 bytes past the end
of the buffer onto the stack.

Additionally, the arguments were swapped: it was reading from the
zero-initialized 'data_char' and writing to 'data', resulting in
all-zero output regardless of the actual I2C read.

Fix this by:
1. Expanding 'data_char' to 66 bytes to safely hold the hex output.
2. Correcting the bin2hex() argument order and using the actual read count.
3. Using a pointer to select the correct output buffer for the final
simple_read_from_buffer call.

公表日 2026年5月9日0:16
登録日 2026年5月9日4:14
最終更新日 2026年5月12日23:10
関連情報、対策とツール
共通脆弱性一覧