🇰🇷 한글 설명
Linux 커널의 ASoC qcom: q6apm-lpass-dais 구성 요소에서 소스 그래프를 여는 데 실패할 경우 NULL 포인터 역참조가 발생하는 취약점입니다. 오디오 토폴로지 오류 등으로 인해 그래프가 닫히면 NULL 값이 할당되지만, 이후 준비 과정에서 이를 확인하지 않고 접근하여 커널 패닉을 유발합니다.
💡 쉬운 설명
오디오 장치를 준비하는 과정에서 오류가 발생했을 때, 시스템이 잘못된 메모리 주소를 참조하여 컴퓨터가 갑자기 멈추거나 재부팅될 수 있는 문제입니다. 오디오 설정 오류가 시스템 전체의 불안정으로 이어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ASoC: qcom: q6apm-lpass-dais: Fix NULL pointer dereference if source graph failed
If earlier opening of source graph fails (e.g. ADSP rejects due to
incorrect audioreach topology), the graph is closed and
"dai_data->graph[dai->id]" is assigned NULL. Preparing the DAI for sink
graph continues though and next call to q6apm_lpass_dai_prepare()
receives dai_data->graph[dai->id]=NULL leading to NULL pointer
exception:
qcom-apm gprsvc:service:2:1: Error (1) Processing 0x01001002 cmd
qcom-apm gprsvc:service:2:1: DSP returned error[1001002] 1
q6apm-lpass-dais 30000000.remoteproc:glink-edge:gpr:service@1:bedais: fail to start APM port 78
q6apm-lpass-dais 30000000.remoteproc:glink-edge:gpr:service@1:bedais: ASoC: error at snd_soc_pcm_dai_prepare on TX_CODEC_DMA_TX_3: -22
Unable to handle kernel NULL pointer dereference at virtual address 00000000000000a8
...
Call trace:
q6apm_graph_media_format_pcm+0x48/0x120 (P)
q6apm_lpass_dai_prepare+0x110/0x1b4
snd_soc_pcm_dai_prepare+0x74/0x108
__soc_pcm_prepare+0x44/0x160
dpcm_be_dai_prepare+0x124/0x1c0
📍 영향받는 시스템
Linux kernel (ASoC qcom: q6apm-lpass-dais 관련 모듈 사용 시스템)
⚔️ 공격 벡터
잘못된 오디오 토폴로지 설정을 유도하여 커널의 NULL 포인터 예외를 발생시키는 방식 (로컬/하드웨어 제어 필요)
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전 이상인지 확인하십시오.