🇰🇷 한글 설명
Linux 커널의 macvlan 장치가 하위 장치(lowerdev)의 헤드룸 및 테일룸 요구 사항을 제대로 상속받지 못하는 취약점입니다. 이로 인해 패킷 처리 과정에서 공간 부족이 발생하여 메모리 재할당 오버헤드, skb 헤드룸 언더플로우, 또는 KASAN slab-use-after-free 크래시가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 장치가 데이터를 담을 여유 공간을 충분히 확보하지 못해 시스템이 충돌하거나 오류가 발생하는 문제입니다. 특히 보안 통신(IPsec, WireGuard 등)을 사용할 때 데이터 공간 계산 오류로 인해 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
macvlan: inherit needed_headroom and needed_tailroom from lowerdev
macvlan devices inherit hard_header_len from lowerdev during macvlan_init(),
but leave needed_headroom and needed_tailroom set to 0.
When the underlying lowerdev requires extra headroom or tailroom for
headers/trailers (e.g. macsec, ipsec, wireguard, tunnels, or veth with rx
headroom), upper layers calculating packet headroom and tailroom fail to
reserve sufficient space.
This can result in reallocation overhead, skb headroom underflows, or KASAN
slab-use-after-free crashes when dev_hard_header() / macvlan_hard_header()
prepends header data or when lower devices append tailroom.
Fix this by:
1. Inheriting needed_headroom and needed_tailroom from lowerdev in macvlan_init().
2. Propagating needed_headroom and needed_tailroom updates to attached macvlans
in macvlan_device_event() when receiving NETDEV_FEAT_CHANGE events.
📍 영향받는 시스템
Linux kernel (macvlan 모듈을 사용하는 시스템)
⚔️ 공격 벡터
특수하게 구성된 네트워크 패킷을 전송하여 커널 메모리 오류 및 시스템 크래시 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인