🇰🇷 한글 설명
Linux 커널의 ASoC SOF 드라이버 ipc4-topology 모듈에서, 모노 캡처 스트림(예: SmartMic)이 여러 SDW 링크에 걸쳐 집계될 때 채널 수가 장치 수보다 적으면 step 값이 0으로 잘리고 GENMASK 연산에서 범위를 벗어난 시프트(shift-out-of-bounds)가 발생합니다. 해당 케이스를 기존의 동일 채널 마스크 적용 방식으로 처리하도록 수정되었습니다.
💡 쉬운 설명
일부 마이크 장치의 채널 설정 계산에서 잘못된 숫자 연산이 일어나 시스템이 비정상 동작할 수 있는 문제입니다. 커널 드라이버 코드를 수정해 계산 오류를 막도록 고쳐졌습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ASoC: SOF: ipc4-topology: Fix shift-out-of-bounds for aggregated ALH capture
When ch_count is smaller than blob->alh_cfg.device_count (e.g. a mono
capture stream, such as a SmartMic, aggregated across multiple SDW
links), step = ch_count / blob->alh_cfg.device_count truncates to 0.
The subsequent GENMASK(step - 1, 0) then underflows step - 1 (u32) to
UINT_MAX, causing GENMASK()'s internal shift to use an out-of-bounds
exponent:
UBSAN: shift-out-of-bounds in sound/soc/sof/ipc4-topology.c:2363:13
shift exponent 18446744069414584384 is too large for 64-bit type 'long unsigned int'
Treat ch_count < device_count the same way as the existing "channels
equal to output reference channels" case: apply the same ch_mask to
every aggregated device instead of trying to split channels that
can't be evenly divided.
📍 영향받는 시스템
SOF(Sound Open Firmware) ASoC 드라이버를 사용하는 Linux 커널 (IPC4 토폴로지, 집계형 ALH 캡처 구성)
⚔️ 공격 벡터
로컬 권한이 있는 사용자나 특수 구성의 오디오 장치 상태에서 잘못된 채널 구성을 유도하여 커널 UBSAN 경고 또는 비정상 동작을 일으킬 수 있음
🛡️ 대응 방법
패치가 적용된 최신 Linux 커널 버전으로 업데이트하고 배포판의 보안 업데이트를 설치
🔧 검증 코드
커널 버전을 확인한 뒤 소스에 패치 로직이 있으면 1 이상이 출력되고, 소스가 없으면 결과가 비어 있으므로 배포판 패키지 changelog에서 CVE-2026-99182 수정 여부를 직접 확인해야 합니다.
uname -r && grep -c 'ch_count < device_count' /usr/src/linux-$(uname -r)/sound/soc/sof/ipc4-topology.c 2>/dev/null