🇰🇷 한글 설명
Linux 커널의 ASoC meson 드라이버에서 메모리 재할당 실패 시 발생하는 취약점입니다. 두 번의 krealloc() 호출 중 두 번째가 실패할 경우, 이미 해제된 이전 메모리 블록을 가리키는 포인터를 참조하게 되어 Use-After-Free 및 Double Free 오류가 발생합니다.
💡 쉬운 설명
컴퓨터가 데이터를 저장할 공간을 늘리려다 실패했을 때, 이미 버린 공간을 다시 사용하려고 시도하면서 시스템이 충돌하거나 보안 문제가 생길 수 있는 오류입니다. 이로 인해 시스템이 예기치 않게 종료되거나 공격자가 시스템 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ASoC: meson: Keep link pointers valid on realloc failure
meson_card_reallocate_links() grows the DAI link and private data
arrays with two consecutive krealloc() calls and updates the owner
pointers only after both calls have succeeded.
A successful krealloc() may move the data: it frees the old block and
returns a new one. When that happens for the link array and the second
krealloc() then fails, card->dai_link still points to the block that
krealloc() already freed, and the error path frees the new block too.
The probe error path then calls meson_card_clean_references(), which
dereferences card->dai_link and kfree()s it again, resulting in a
use-after-free and a double free.
Commit card->dai_link and card->num_links right after the first
krealloc() succeeds, so the pointer always refers to a valid allocation
that meson_card_clean_references() can walk and free. krealloc() with
__GFP_ZERO zero-initializes the added entries, so walking them on the
error path is safe. With both failure paths reduced to a plain return,
drop the goto labels and the error message.
📍 영향받는 시스템
Linux Kernel (ASoC meson driver 포함 버전)
⚔️ 공격 벡터
메모리 재할당 과정에서 의도적으로 오류를 유도하여 Use-After-Free 및 Double Free 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인