🇰🇷 한글 설명
Linux 커널의 ASoC wm_adsp 구성 요소에서 펌웨어 컨트롤을 제거할 때 NULL 포인터 역참조가 발생하는 취약점이 발견되었습니다. cs_dsp가 컨트롤 리스트를 파괴하는 과정에서 priv 포인터가 NULL인지 확인하지 않고 정리 작업을 시도하여 문제가 발생합니다.
💡 쉬운 설명
컴퓨터의 소리 관련 기능을 정리하는 과정에서, 존재하지 않는 데이터(NULL)를 지우려고 시도하다가 시스템이 충돌하거나 멈출 수 있는 오류입니다. 특정 조건에서 소리 제어 기능이 꺼질 때 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ASoC: wm_adsp: Fix NULL dereference when removing firmware controls
In wm_adsp_control_remove() check that the priv pointer is not NULL
before attempting to cleanup what it points to.
When cs_dsp creates a control it calls wm_adsp_control_add_cb() so that
wm_adsp can create its own private control data. There are two cases
where private data is not created:
1. The control is a SYSTEM control, so an ALSA control is not created.
2. The codec driver has registered a control_add() callback that
hides the control, so wm_adsp_control_add() is not called.
When cs_dsp_remove destroys its control list it calls
wm_adsp_control_remove() for each control. But wm_adsp_control_remove()
was attempting to cleanup the private data pointed to by cs_ctl->priv
without checking the pointer for NULL.
📍 영향받는 시스템
Linux Kernel (ASoC wm_adsp 구성 요소 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 오디오 컨트롤을 생성 및 제거하는 과정을 통해 시스템 충돌(DoS) 유도 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 wm_adsp_control_remove() 함수의 NULL 체크 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인