🇰🇷 한글 설명
Linux 커널의 ip_tunnel 모듈에서 iptunnel_xmit_stats() 함수가 NETDEV_PCPU_STAT_DSTATS 통계를 잘못 처리합니다. vxlan과 geneve 터널 프로토콜에서 사용되는 UDP 함수가 영향을 받으며, pcpu_sw_netstats와 pcpu_dstats 구조의 서로 다른 오프셋으로 인해 32비트 커널에서 메모리 손상이나 시스템 정지가 발생할 수 있습니다.
💡 쉬운 설명
Linux 커널의 네트워크 터널링 기능에서 통계 정보를 저장할 때 메모리 위치를 잘못 계산하여 시스템 충돌이나 데이터 손상이 발생합니다. VPN이나 터널링 프로토콜(vxlan, geneve)을 사용하는 서버가 특히 위험합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ip_tunnel: adapt iptunnel_xmit_stats() to NETDEV_PCPU_STAT_DSTATS
Blamed commits forgot that vxlan/geneve use udp_tunnel[6]_xmit_skb() which
call iptunnel_xmit_stats().
iptunnel_xmit_stats() was assuming tunnels were only using
NETDEV_PCPU_STAT_TSTATS.
@syncp offset in pcpu_sw_netstats and pcpu_dstats is different.
32bit kernels would either have corruptions or freezes if the syncp
sequence was overwritten.
This patch also moves pcpu_stat_type closer to dev->{t,d}stats to avoid
a potential cache line miss since iptunnel_xmit_stats() needs to read it.
📍 영향받는 시스템
Linux kernel 모든 버전 (32-bit 아키텍처 우선 영향, vxlan/geneve 프로토콜 활성화 시스템)
⚔️ 공격 벡터
vxlan 또는 geneve 터널을 통해 트래픽을 송수신하여 취약한 iptunnel_xmit_stats() 코드 경로 트리거
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트 (iptunnel_xmit_stats 오프셋 패치 포함된 버전 필요)
🔧 검증 코드
커널 버전을 확인하고, vxlan/geneve가 enabled(=y)인 경우 해당 배포판 보안 권고사항에서 패치된 커널 버전으로 업데이트 필요
uname -r && grep -i 'vxlan\|geneve' /boot/config-$(uname -r) 2>/dev/null