🇰🇷 한글 설명
Linux 커널의 IPv6 네트워크 스택에서 MAC 헤더 재구축 시 헤드룸 공간이 부족하여 발생하는 취약점입니다. 특정 VLAN 장치를 통과하는 패킷 처리 과정에서 잘못된 오프셋 계산으로 인해 메모리 범위를 벗어난 쓰기 작업이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터 패킷을 처리할 때 필요한 공간을 충분히 확보하지 못해 컴퓨터 메모리의 엉뚱한 곳에 데이터를 쓰는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ipv6: keep room for the mac header in dst_dev_overhead()
The seg6, ioam6 and rpl lwtunnels size their skb_cow_head() request as
the length they are about to push plus dst_dev_overhead(), then push the
new headers and rebuild the mac header below them with
skb_mac_header_rebuild(). That rebuild needs skb->mac_len of headroom,
but dst_dev_overhead() leaves LL_RESERVED_SPACE() of the egress device,
16 bytes for plain Ethernet.
Where the mac header is longer than that, as it is on ingress through a
VLAN device with reorder_hdr off, the rebuild runs out of room:
skb_set_mac_header(skb, -skb->mac_len) computes a negative offset,
stores it unchecked in the u16 skb->mac_header, and the memmove that
follows writes skb->mac_len bytes about 64 KB past skb->head.
Forwarding plain ping6 traffic through such a device reproduces it on
all five seg6 encapsulation modes and on the rpl and ioam6 inline paths;
skb->mac_header comes back as 65534 on a 704-byte head.
Return the larger of the two. The helper already returns skb->mac_len
when it has no dst, so this only makes the other branch agree, and it
covers every caller rather than each call site in turn.
📍 영향받는 시스템
Linux kernel (seg6, ioam6, rpl lwtunnels 관련 IPv6 기능 사용 시)
⚔️ 공격 벡터
특정 VLAN 설정을 거치는 IPv6 패킷(seg6, ioam6, rpl 등)을 전송하여 메모리 오버플로우 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.