🇰🇷 한글 설명
Linux 커널의 rpmsg 구성 요소에서 driver_override_show() 함수가 device_lock을 보유하지 않은 상태로 문자열을 읽어 발생하는 레이스 컨디션 취약점입니다. 이로 인해 store 함수가 문자열을 수정하거나 해제하는 동안 읽기 작업이 수행되어 Use-After-Free(UAF) 오류가 발생할 수 있습니다.
💡 쉬운 설명
데이터를 읽는 도중에 다른 프로그램이 그 데이터를 삭제해버려 시스템이 혼란에 빠지는 문제입니다. 이 과정에서 메모리 오류가 발생하여 시스템이 멈추거나 해킹에 악용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rpmsg: core: fix race in driver_override_show() and use core helper
The driver_override_show function reads the driver_override string
without holding the device_lock. However, the store function modifies
and frees the string while holding the device_lock. This creates a race
condition where the string can be freed by the store function while
being read by the show function, leading to a use-after-free.
To fix this, replace the rpmsg_string_attr macro with explicit show and
store functions. The new driver_override_store uses the standard
driver_set_override helper. Since the introduction of
driver_set_override, the comments in include/linux/rpmsg.h have stated
that this helper must be used to set or clear driver_override, but the
implementation was not updated until now.
Because driver_set_override modifies and frees the string while holding
the device_lock, the new driver_override_show now correctly holds the
device_lock during the read operation to prevent the race.
Additionally, since rpmsg_string_attr has only ever been used for
driver_override, removing the macro simplifies the code.
📍 영향받는 시스템
Linux kernel (rpmsg driver 포함 버전)
⚔️ 공격 벡터
로컬 사용자가 rpmsg 드라이버의 driver_override 속성을 조작하여 레이스 컨디션을 유발함
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 rpmsg 관련 수정 사항을 반영함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.