🔍 CVE-2026-31504

7.8
CVSS Score
HIGH
2026-04-22
2026-10-19 19:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 packet_release() 함수에서 NETDEV_UP 이벤트 발생 시 발생하는 Use-After-Free(UAF) 취약점입니다. 경합 조건(Race Condition)으로 인해 소켓이 팬아웃 그룹에 중복 등록되면서 dangling pointer가 생성되어 메모리 오류를 유발할 수 있습니다.

💡 쉬운 설명

네트워크 장치가 켜지는 순간과 소켓이 닫히는 순간이 겹치면서, 이미 사라진 데이터의 주소를 시스템이 계속 참조하게 되는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 공격에 노출될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net: fix fanout UAF in packet_release() via NETDEV_UP race `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`. The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window. This bug was found following an additional audit with Claude Code based on CVE-2025-38617.

📍 영향받는 시스템

Linux Kernel (CVE-2025-38617 관련 감사 이후 발견된 특정 버전 포함)

⚔️ 공격 벡터

네트워크 인터페이스 상태 변화(NETDEV_UP)와 소켓 해제 동작을 정밀하게 타이밍을 맞춰 실행하는 경합 조건 공격

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 packet_release() 내 bind_lock 구간에서 po->num을 0으로 설정해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel