🇰🇷 한글 설명
Linux 커널의 i3c 마스터 드라이버에서 레이스 컨디션으로 인한 Use-After-Free(UAF) 취약점이 발견되었습니다. 모듈 제거 시 작업(work)이 취소되기 전에 메모리가 해제되어, 이미 해제된 메모리 영역에 접근을 시도할 수 있는 문제입니다.
💡 쉬운 설명
컴퓨터 부품을 관리하는 프로그램이 종료되는 과정에서, 이미 삭제된 데이터를 다시 사용하려고 시도하여 시스템 오류나 보안 문제가 발생할 수 있는 결함입니다. 작업이 완전히 끝난 것을 확인하지 않고 메모리를 먼저 비워버려서 생기는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
i3c: master: svc: Fix use after free vulnerability in svc_i3c_master Driver Due to Race Condition
In the svc_i3c_master_probe function, &master->hj_work is bound with
svc_i3c_master_hj_work, &master->ibi_work is bound with
svc_i3c_master_ibi_work. And svc_i3c_master_ibi_work can start the
hj_work, svc_i3c_master_irq_handler can start the ibi_work.
If we remove the module which will call svc_i3c_master_remove to
make cleanup, it will free master->base through i3c_master_unregister
while the work mentioned above will be used. The sequence of operations
that may lead to a UAF bug is as follows:
CPU0 CPU1
| svc_i3c_master_hj_work
svc_i3c_master_remove |
i3c_master_unregister(&master->base)|
device_unregister(&master->dev) |
device_release |
//free master->base |
| i3c_master_do_daa(&master->base)
| //use master->base
Fix it by ensuring that the work is canceled before proceeding with the
cleanup in svc_i3c_master_remove.
📍 영향받는 시스템
Linux kernel (i3c: master: svc 드라이버 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 조건에서 모듈을 제거하거나 레이스 컨디션을 유도하여 메모리 오염 및 권한 상승 시도 가능
🛡️ 대응 방법
커널 패치를 적용하여 svc_i3c_master_remove 함수 내에서 메모리 해제 전 작업(work)을 반드시 취소하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인