🇰🇷 한글 설명
Linux 커널의 intel-hid 드라이버에서 ACPI 알림 핸들러가 재귀적으로 호출될 때 발생하는 레이스 컨디션 취약점입니다. 태블릿 모드 전환 이벤트가 여러 CPU 코어에서 동시에 발생할 경우, 입력 장치가 중복 등록되어 sysfs 항목이 중복 생성되고 결과적으로 NULL 포인터 역참조가 발생할 수 있습니다.
💡 쉬운 설명
노트북을 태블릿 모드로 바꿀 때 발생하는 신호가 너무 빠르게 여러 번 처리되면서 시스템이 혼란을 겪는 문제입니다. 이 과정에서 시스템이 잘못된 메모리 주소를 참조하게 되어 오류가 발생하거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
platform/x86: intel-hid: Protect ACPI notify handler against recursion
Since commit e2ffcda16290 ("ACPI: OSL: Allow Notify () handlers to run on
all CPUs") ACPI notify handlers like the intel-hid notify_handler() may
run on multiple CPU cores racing with themselves.
On convertibles and detachables (matched by DMI chassis-type 31 and 32 in
dmi_auto_add_switch[]) the SW_TABLET_MODE input device is registered
lazily from notify_handler() on the first tablet-mode event, via
intel_hid_switches_setup(). When two such events race on different CPUs
both can pass the !priv->switches check and register the priv->switches
input device twice, resulting in a duplicate sysfs entry and a subsequent
NULL pointer dereference.
This is the same class of bug fixed by commit e075c3b13a0a ("platform/x86:
intel-vbtn: Protect ACPI notify handler against recursion") for the
sibling intel-vbtn driver.
Protect intel-hid notify_handler() from racing with itself with a mutex
to fix this.
📍 영향받는 시스템
intel-hid 드라이버를 사용하는 x86 기반 Linux 커널 (DMI chassis-type 31, 32 장치)
⚔️ 공격 벡터
물리적인 장치 전환(태블릿 모드 변경)을 통한 레이스 컨디션 유도
🛡️ 대응 방법
intel-hid notify_handler에 뮤텍스(mutex)를 적용하여 재귀 호출을 방지한 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 커밋(e2ffcda16290 이후)을 포함하는지 확인