🇰🇷 한글 설명
리눅스 커널의 OPP(Operating Performance Points) 테이블 관리 과정에서 프로브 지연(probe deferral) 발생 시 사용 후 해제(Use-After-Free) 취약점이 존재합니다. 오류 경로에서 해제된 OPP 테이블을 전역 lazy_opp_tables 리스트에서 제거하지 않아, 이후 관련 리소스 접근 시 커널 크래시가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 성능을 조절하는 설정 파일이 제대로 정리되지 않은 상태로 메모리에 남아 있어 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 꺼지는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
opp: Fix use-after-free in lazy_opp_tables after probe deferral
When dev_pm_opp_of_find_icc_paths() in _allocate_opp_table() returns
-EPROBE_DEFER, the opp_table is freed again, to wait until all the
interconnect paths are available.
However, if the OPP table is using required-opps then it may already
have been added to the global lazy_opp_tables list. The error path
does not remove the opp_table from the list again.
This can cause crashes later when the provider of the required-opps
is added, since we will iterate over OPP tables that have already been
freed. E.g.:
Unable to handle kernel NULL pointer dereference when read
CPU: 0 PID: 7 Comm: kworker/0:0 Not tainted 6.4.0-rc3
PC is at _of_add_opp_table_v2 (include/linux/of.h:949
drivers/opp/of.c:98 drivers/opp/of.c:344 drivers/opp/of.c:404
drivers/opp/of.c:1032) -> lazy_link_required_opp_table()
Fix this by calling _of_clear_opp_table() to remove the opp_table from
the list and clear other allocated resources. While at it, also add the
missing mutex_destroy() calls in the error path.
📍 영향받는 시스템
Linux Kernel (6.4.0-rc3 및 관련 OPP 드라이버 사용 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 하드웨어 드라이버의 초기화 지연을 유도하여 커널 메모리 오류를 일으킴
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 _of_clear_opp_table() 및 mutex_destroy() 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인합니다.