🇰🇷 한글 설명
Linux 커널의 xfrm:iptfs 구성 요소에서 패킷 재조립 시 발생하는 취약점입니다. 공격자가 조작된 짧은 내부 패킷 길이를 전송하면 커널 메모리 언더플로우가 발생하여 시스템 패닉(DoS)을 유발할 수 있습니다.
💡 쉬운 설명
잘못된 크기의 데이터 패킷을 보내 컴퓨터의 핵심 시스템(커널)을 강제로 멈추게 만드는 오류입니다. 이를 통해 공격자는 시스템을 마비시켜 서비스를 중단시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfrm: iptfs: fix runt reassembly panic from short inner tot_len
When the start of an inner packet is split across two outer packets
such that fewer than 4 bytes land at the end of the first one,
__input_process_payload() saves those bytes as a runt and skips the
iplen/iphlen validation performed for in-place packets. When the
continuation packet arrives, iptfs_reassem_cont() only requires the
declared inner length to be >= sizeof(ra_runt) (6) before allocating
the reassembly skb with that attacker-controlled length.
However, __iptfs_iphlen() always returns the fixed minimum IP header
size (20 for IPv4, 40 for IPv6), so for an inner IPv4 tot_len in
[6, 19] the header-completion copy writes past the declared packet
length, and the subsequent "ipremain -= copylen" underflows to ~4GB,
leaving the payload copy length bounded only by blkoff (up to 64KB).
At runtime the skb_put() tailroom check turns this into
skb_over_panic(), i.e. an unprivileged kernel panic (DoS), reachable
locally via userns+netns IPTFS SAs and remotely against IPTFS VPN
gateways when the decrypted outer skb is linear (e.g. AF_PACKET taps,
tun/tap delivery).
Align the runt path with the normal path by requiring the declared
inner length to cover at least the IP header size. This also subsumes
the previous >= sizeof(ra_runt) check, since the minimum IP header
is always larger than the runt buffer.
This issue was found by the autokbug dynamic kernel fuzzer at
Tencent Yunding Lab.
📍 영향받는 시스템
Linux kernel (xfrm/iptfs module 사용 환경)
⚔️ 공격 벡터
로컬 사용자(userns/netns 사용) 또는 원격 IPTFS VPN 게이트웨이를 통한 조작된 패킷 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux