🇰🇷 한글 설명
Linux 커널의 seg6 lwtunnel에서 입력 및 출력 경로가 하나의 dst_cache를 공유하여 발생하는 취약점입니다. 이로 인해 서로 다른 라우팅 컨텍스트가 캐시를 무분별하게 재사용함으로써 보안 정책이나 라우팅 규칙을 우회할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 주고받을 때 사용하는 '길 찾기 기록장'을 두 경로가 같이 쓰면서 발생하는 문제입니다. 한쪽에서 잘못된 길을 기록하면 다른 쪽도 이를 그대로 따라가게 되어 보안 규칙을 어길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
seg6: separate dst_cache for input and output paths in seg6 lwtunnel
The seg6 lwtunnel uses a single dst_cache per encap route, shared
between seg6_input_core() and seg6_output_core(). These two paths
can perform the post-encap SID lookup in different routing contexts
(e.g., ip rules matching on the ingress interface, or VRF table
separation). Whichever path runs first populates the cache, and the
other reuses it blindly, bypassing its own lookup.
Fix this by splitting the cache into cache_input and cache_output,
so each path maintains its own cached dst independently.
📍 영향받는 시스템
Linux Kernel (seg6 lwtunnel 기능이 활성화된 버전)
⚔️ 공격 벡터
서로 다른 라우팅 규칙(VRF, IP rules 등)을 가진 환경에서 캐시 오염을 통한 라우팅 우회
🛡️ 대응 방법
입력용(cache_input)과 출력용(cache_output) 캐시를 분리하는 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인