🇰🇷 한글 설명
Linux 커널의 dmaengine qcom-adm 드라이버에서 slave_config 함수가 설정 구조체의 크기 대신 포인터의 크기를 비교하는 잘못된 sizeof 사용으로 인해 crci 값이 무시되고, 이 드라이버를 사용하는 슬레이브 장치에서 커널 패닉이 발생할 수 있습니다. 수정은 포인터 크기가 아닌 구조체 크기와 비교하도록 변경하는 것입니다.
💡 쉬운 설명
Qualcomm 칩의 DMA 드라이버 설정 코드에 계산 실수가 있어, 특정 장치를 연결하면 시스템이 갑자기 멈출 수 있습니다. 개발자가 구조체 크기 대신 포인터 크기를 잘못 비교한 것이 원인입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dmaengine: qcom-adm: fix wrong sizeof config in slave_config
Fix broken slave_config function that uncorrectly compare the
peripheral_size with the size of the config pointer instead of the size
of the config struct. This cause the crci value to be ignored and cause
a kernel panic on any slave that use adm driver.
To fix this, compare to the size of the struct and NOT the size of the
pointer.
📍 영향받는 시스템
Qualcomm ADM(Application Data Mover) DMA 드라이버(qcom-adm)를 사용하는 Linux 커널 설치 환경
⚔️ 공격 벡터
로컬 또는 드라이버 설정 경로를 통해 잘못된 설정값이 전달될 때 커널 패닉을 유발할 수 있으며, 공격 난이도와 권한 요구 수준은 환경에 따라 다릅니다.
🛡️ 대응 방법
커널을 해당 취약점이 수정된 상위 안정 버전으로 업데이트하거나, 배포판 보안 업데이트를 적용하세요.
🔧 검증 코드
출력된 커널 버전을 배포판의 수정 버전과 비교하고, qcom-adm 드라이버가 CONFIG_QCOM_ADM=y 또는 m으로 빌드되어 있는지 확인하세요. 설정이 없으면 이 드라이버는 해당 시스템에 영향을 주지 않습니다.
uname -r && (zgrep -i qcom_adm /proc/config.gz 2>/dev/null || grep -i 'qcom.adm' /boot/config-$(uname -r) 2>/dev/null || echo 'qcom-adm config not found')