🇰🇷 한글 설명
Linux 커널의 net 서브시스템에서 XLAT를 통해 프로토콜 변환이 수행된 GRO 패킷을 전달할 때, frag_list GSO 세그멘테이션 처리에 오류가 발생하는 취약점입니다. XLAT가 헤더만 변환하고 frag_list 내의 skb들을 변환하지 않아 프로토콜 불일치와 성능 저하가 발생할 수 있습니다. 이를 해결하기 위해 SKB_GSO_DODGY 플래그를 설정하여 안전한 세그멘테이션 방식인 skb_segment를 사용하도록 수정되었습니다.
💡 쉬운 설명
인터넷 연결 방식이 바뀌는 과정에서 데이터 패킷의 형식이 제대로 맞춰지지 않아 인터넷 속도가 느려지거나 연결이 불안정해질 수 있는 문제입니다. 시스템이 패킷을 처리할 때 데이터의 일관성을 확인하는 절차를 강화하여 이를 해결했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: fix segmentation of forwarding fraglist GRO
This patch enhances GSO segment handling by properly checking
the SKB_GSO_DODGY flag for frag_list GSO packets, addressing
low throughput issues observed when a station accesses IPv4
servers via hotspots with an IPv6-only upstream interface.
Specifically, it fixes a bug in GSO segmentation when forwarding
GRO packets containing a frag_list. The function skb_segment_list
cannot correctly process GRO skbs that have been converted by XLAT,
since XLAT only translates the header of the head skb. Consequently,
skbs in the frag_list may remain untranslated, resulting in protocol
inconsistencies and reduced throughput.
To address this, the patch explicitly sets the SKB_GSO_DODGY flag
for GSO packets in XLAT's IPv4/IPv6 protocol translation helpers
(bpf_skb_proto_4_to_6 and bpf_skb_proto_6_to_4). This marks GSO
packets as potentially modified after protocol translation. As a
result, GSO segmentation will avoid using skb_segment_list and
instead falls back to skb_segment for packets with the SKB_GSO_DODGY
flag. This ensures that only safe and fully translated frag_list
packets are processed by skb_segment_list, resolving protocol
inconsistencies and improving throughput when forwarding GRO packets
converted by XLAT.
📍 영향받는 시스템
XLAT(IPv4/IPv6 변환) 기능을 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
직접적인 공격보다는 특정 네트워크 환경(IPv6 전용 업스트림을 사용하는 핫스팟 등)에서 데이터 처리 효율 저하 및 프로토콜 불일치 유발
🛡️ 대응 방법
해당 패치가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인