🇰🇷 한글 설명
Linux 커널 HID 드라이버의 implement() 함수에서 불필요한 WARN_ON() 호출을 제거하는 패치입니다. 출력 리포트의 작은 필드에 값을 쓸 때 Syzkaller가 트리거하는 거짓 경고를 억제합니다.
💡 쉬운 설명
Linux 커널의 입력장치 드라이버에서 불필요한 경고 메시지를 제거합니다. 실제 보안 위협이 아닌 테스트 중 발생하는 거짓 경고를 줄이는 유지보수 개선입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
HID: core: remove unnecessary WARN_ON() in implement()
Syzkaller hit a warning [1] in a call to implement() when trying
to write a value into a field of smaller size in an output report.
Since implement() already has a warn message printed out with the
help of hid_warn() and value in question gets trimmed with:
...
value &= m;
...
WARN_ON may be considered superfluous. Remove it to suppress future
syzkaller triggers.
[1]
WARNING: CPU: 0 PID: 5084 at drivers/hid/hid-core.c:1451 implement drivers/hid/hid-core.c:1451 [inline]
WARNING: CPU: 0 PID: 5084 at drivers/hid/hid-core.c:1451 hid_output_report+0x548/0x760 drivers/hid/hid-core.c:1863
Modules linked in:
CPU: 0 PID: 5084 Comm: syz-executor424 Not tainted 6.9.0-rc7-syzkaller-00183-gcf87f46fd34d #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
RIP: 0010:implement drivers/hid/hid-core.c:1451 [inline]
RIP: 0010:hid_output_report+0x548/0x760 drivers/hid/hid-core.c:1863
...
Call Trace:
<TASK>
__usbhid_submit_report drivers/hid/usbhid/hid-core.c:591 [inline]
usbhid_submit_report+0x43d/0x9e0 drivers/hid/usbhid/hid-core.c:636
hiddev_ioctl+0x138b/0x1f00 drivers/hid/usbhid/hiddev.c:726
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:904 [inline]
__se_sys_ioctl+0xfc/0x170 fs/ioctl.c:890
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
...
📍 영향받는 시스템
Linux 커널 6.9-rc7 이전 버전의 HID (Human Interface Device) 드라이버
⚔️ 공격 벡터
ioctl 명령을 통해 hiddev 인터페이스의 hid_output_report 함수 호출 중 트리거
🛡️ 대응 방법
Linux 커널을 6.9 정식 버전 이상으로 업그레이드하여 HID 드라이버 패치 적용
🔧 검증 코드
커널 버전이 6.9 이상이면 패치가 적용되어 있고, 6.9-rc7 이하이면 취약한 버전입니다.
uname -r | awk -F. '{if($1>6 || ($1==6 && $2>=9)) print "Patched"; else print "Vulnerable"}'