🇰🇷 한글 설명
Linux 커널의 x86-android-tablets 플랫폼에서 보조 fwnode 해제 시 장치 참조를 적절히 유지하지 못하는 취약점이 발견되었습니다. 이로 인해 드라이버 해제 과정에서 참조 카운트 불일치가 발생하여 Use-After-Free(UAF) 취약점이 유발될 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 관리하는 소프트웨어가 부품을 정리하는 과정에서, 이미 사라진 부품을 다시 사용하려고 시도할 수 있는 오류입니다. 이 오류를 이용하면 시스템이 멈추거나 보안 공격에 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
platform/x86: x86-android-tablets: hold device reference for secondary fwnode teardown
In gpio_secondary_fwnode_init(), acpi_bus_find_device_by_name() returns a
device reference, but the local dev variable is declared with
__free(put_device), dropping the reference at the end of each iteration.
Meanwhile, devm_add_action_or_reset() saves the dev pointer for
gpio_secondary_unset() without incrementing its reference count, which
could lead to a use-after-free during driver teardown if the device is
released in the interim.
Acquire an explicit device reference with get_device() when registering
the devres action, and drop it with put_device() inside
gpio_secondary_unset().
📍 영향받는 시스템
Linux kernel (platform/x86: x86-android-tablets 관련 모듈 포함 버전)
⚔️ 공격 벡터
드라이버 해제(teardown) 과정 중 특정 타이밍에 장치 참조를 조작하여 메모리 오류 유도
🛡️ 대응 방법
커널 패치를 통해 devm_add_action_or_reset() 호출 시 get_device()로 참조 카운트를 명시적으로 증가시키고, 해제 시 put_device()를 호출하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인