🇰🇷 한글 설명
Linux 커널의 stm32: dcmi 드라이버 내 probe() 함수에서 오류 처리 로직의 결함이 발견되었습니다. 이로 인해 DMA 채널 할당 실패 시 메모리 누수가 발생하거나, 할당되지 않은 포인터를 참조하여 NULL 포인터 역참조로 인한 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
장치를 초기화하는 과정에서 오류가 발생했을 때, 사용하던 자원을 제대로 정리하지 못해 컴퓨터 메모리가 낭비되거나 시스템이 갑자기 멈출 수 있는 문제입니다. 드라이버가 실수로 비어있는 주소를 참조하려고 시도할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: stm32: dcmi: fix some error handling bugs in probe()
There are a few issues here:
1) After we assign:
chan = dma_request_chan(&pdev->dev, "tx");
Then the error paths need to clean up before returning. The first
error path does a direct return.
2) The error paths check "dcmi->mdma_chan" but that is not assigned
until later so it results in memory leaks. Test "mdma_chan"
instead.
3) The error handling calls dma_release_channel(dcmi->dma_chan) before
"dcmi->dma_chan" has been assigned which leads to a NULL pointer
dereference. Use the "chan" variable instead.
I also moved the call to dma_release_channel() after the call to
dma_release_channel() so it mirrors the allocation code better.
📍 영향받는 시스템
Linux kernel (stm32: dcmi 드라이버를 사용하는 환경)
⚔️ 공격 벡터
로컬 공격자가 특정 하드웨어 초기화 실패 상황을 유도하여 시스템 충돌(DoS)을 일으킬 수 있음
🛡️ 대응 방법
해당 오류가 수정된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 릴리스 버전인지 확인하십시오.