🇰🇷 한글 설명
Linux kernel의 ti pruss 드라이버에서 pruss_clk_mux_setup() 함수가 메모리 해제 시 of_node_put()을 중복으로 호출하는 double free 취약점입니다. devm_add_action_or_reset()이 등록한 cleanup 핸들러와 함수 내 직접 호출이 동일 객체를 두 번 해제하여 메모리 corruption을 유발합니다.
💡 쉬운 설명
Linux 커널이 메모리를 두 번 해제하려고 시도하여 시스템 충돌 또는 공격자의 악용으로 이어질 수 있습니다. TI 칩셋(ARM 기반)을 사용하는 임베디드 기기와 보드에 영향을 줍니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
soc: ti: pruss: Fix double free in pruss_clk_mux_setup()
In the pruss_clk_mux_setup(), the devm_add_action_or_reset() indirectly
calls pruss_of_free_clk_provider(), which calls of_node_put(clk_mux_np)
on the error path. However, after the devm_add_action_or_reset()
returns, the of_node_put(clk_mux_np) is called again, causing a double
free.
Fix by returning directly, to avoid the duplicate of_node_put().
📍 영향받는 시스템
Linux kernel (특히 ti-pruss 드라이버 사용) - AM64/AM62/K3 계열 SoC 포함 임베디드 및 보드 시스템
⚔️ 공격 벡터
Local privilege escalation via kernel memory corruption; 시스템 접근 권한을 가진 사용자가 커널 메모리를 조작하여 권한 상승
🛡️ 대응 방법
Linux kernel을 최신 패치 버전으로 업그레이드 또는 ti-pruss 드라이버의 pruss_clk_mux_setup() 함수 수정 패치 적용
🔧 검증 코드
현재 kernel 버전 확인 후 해당 버전의 ti-pruss 드라이버가 로드되어 있으면 취약점 영향 검토 필요; 출력이 없으면 드라이버 미사용
uname -r | grep -E '^[0-9]+\.[0-9]+' && grep -r 'pruss_clk_mux_setup' /lib/modules/$(uname -r)/kernel 2>/dev/null | head -1