🇰🇷 한글 설명
Linux 커널의 IPv6 SIT 터널링 구현에서 GSO 오프로드 처리 시 내부 IPv6 헤더 포인터를 적절히 갱신하지 않는 취약점이 발견되었습니다. 이로 인해 메모리 재할당 후에도 이전의 잘못된 헤더 포인터를 참조하게 되어, 해제된 메모리 영역을 읽는 Use-After-Free 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 컴퓨터가 이미 사용이 끝나서 버린 메모리 주소를 계속 참조하여 발생하는 오류입니다. 공격자가 이를 악용하면 시스템의 중요한 정보를 훔쳐보거나 시스템을 불안정하게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ipv6: sit: reload inner IPv6 header after GSO offloads
ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function
entry and continues using it after iptunnel_handle_offloads().
For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone().
When the skb header is cloned, skb_header_unclone() can call
pskb_expand_head(), which may move the skb head. The pskb_expand_head()
contract requires pointers into the skb header to be reloaded after the
call.
If the later skb_realloc_headroom() branch is not taken, SIT uses the
stale iph6 pointer to read the inner hop limit and DS field. That can
read from a freed skb head after the old head's remaining clone is
released.
Reload iph6 after the offload helper succeeds and before subsequent
reads from the inner IPv6 header. Keep the existing reload after
skb_realloc_headroom(), since that branch can also replace the skb.
📍 영향받는 시스템
GSO 오프로드 기능이 활성화된 IPv6 SIT 터널링을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특수하게 조작된 IPv6 패킷을 전송하여 커널의 메모리 관리 오류를 유도하는 방식
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 보안 패치 버전인지 배포판의 보안 공지를 통해 확인하십시오.