🇰🇷 한글 설명
Linux 커널의 SEG6 구현에서 IPIP 역캡슐화 시 IPSKB_L3SLAVE 플래그가 적절히 설정되지 않는 취약점이 발견되었습니다. 이로 인해 VRF에 종속된 인터페이스로 들어온 SRv6 패킷이 역캡슐화된 후 로컬 소켓에서 올바르게 수신되지 않는 문제가 발생합니다.
💡 쉬운 설명
네트워크 패킷을 처리하는 과정에서 특정 표시(플래그)를 누락하여, 데이터가 목적지에 도착했음에도 불구하고 컴퓨터가 이를 무시하게 되는 현상입니다. 이로 인해 특정 네트워크 환경에서 데이터 통신이 정상적으로 이루어지지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation
When an SRv6 packet arrives on an interface enslaved to a VRF,
vrf_ip6_rcv() sets IP6SKB_L3SLAVE in IP6CB, but decap_and_validate()
has never set IPSKB_L3SLAVE in IPCB. The bit stayed clear in the
common case, and with CONFIG_IPV6_MIP6 the leftover frag_max_size of
a reassembled outer packet could even set it, with no VRF involved.
Commit 44930446dde4 ("ipv6: seg6: clear IPv4 control block on IPIP
decapsulation") then made the unreliable bit reliably clear.
The effect of the missing flag is visible with End.DX4 when a
delivery to a local address of the node reaches the socket lookup.
For example, a UDP socket bound to the enslaved ingress interface
does not receive any of the decapsulated packets, while an unbound
socket outside the VRF does.
This contradicts Documentation/networking/vrf.rst: by default the
scope of an unbound UDP or TCP socket is limited to the default VRF.
Set IPSKB_L3SLAVE for IPv4 in decap_and_validate(), which already does
the same for IPv6. The socket lookup then matches the decapsulated
packet like any other packet received on that enslaved interface. Such
a packet matches an unbound UDP or TCP socket only when
udp_l3mdev_accept or tcp_l3mdev_accept is set.
📍 영향받는 시스템
Linux kernel (SEG6 및 IPIP 역캡슐화 기능을 사용하는 시스템)
⚔️ 공격 벡터
직접적인 공격보다는 네트워크 설정 오류로 인한 서비스 가용성 저하(데이터 유실) 유발
🛡️ 대응 방법
커널 패치(Commit 44930446dde4 관련 수정 사항 포함)를 적용하여 decap_and_validate() 함수 내 IPSKB_L3SLAVE 설정을 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인하십시오.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux