🇰🇷 한글 설명
Linux 커널의 stmmac 드라이버에서 irq_set_affinity_hint() 함수에 스택 변수인 cpu_mask의 포인터를 전달하여 발생하는 취약점입니다. 함수가 반환된 후 해당 포인터는 유효하지 않은 상태(dangling pointer)가 되며, procfs를 통해 노출된 이 포인터를 참조할 경우 커널 패닉이 발생하거나 커널 데이터가 유출될 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제(커널)가 이미 사용이 끝난 메모리 주소를 계속 가리키고 있어 발생하는 오류입니다. 이를 악용하면 시스템이 갑자기 멈추거나 중요한 내부 정보가 밖으로 새 나갈 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: stmmac: Fix accessing freed irq affinity_hint
In stmmac_request_irq_multi_msi(), a pointer to the stack variable
cpu_mask is passed to irq_set_affinity_hint(). This value is stored in
irq_desc->affinity_hint, but once stmmac_request_irq_multi_msi()
returns, the pointer becomes dangling.
The affinity_hint is exposed via procfs with S_IRUGO permissions,
allowing any unprivileged process to read it. Accessing this stale
pointer can lead to:
- a kernel oops or panic if the referenced memory has been released and
unmapped, or
- leakage of kernel data into userspace if the memory is re-used for
other purposes.
All platforms that use stmmac with PCI MSI (Intel, Loongson, etc) are
affected.
📍 영향받는 시스템
PCI MSI를 사용하는 stmmac 드라이버 기반 플랫폼 (Intel, Loongson 등)
⚔️ 공격 벡터
권한이 없는 로컬 사용자가 procfs를 통해 잘못된 메모리 주소에 접근하여 커널 오류 유도 또는 데이터 유출
🛡️ 대응 방법
stmmac 드라이버의 irq_set_affinity_hint() 호출 방식을 수정하여 스택 변수가 아닌 유효한 메모리를 참조하도록 커널 업데이트 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.