🇰🇷 한글 설명
Linux 커널의 batman-adv 모듈에서 멀티캐스트 TVLV 오프셋이 표현 가능한 범위를 벗어나는 경우를 검증하지 않아 발생하는 취약점입니다. 잘못된 오프셋 설정으로 인해 skb 데이터 범위를 초과하는 메모리 접근이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터의 위치를 나타내는 숫자가 너무 커서 컴퓨터가 엉뚱한 메모리 영역을 읽게 만드는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
batman-adv: reject unrepresentable multicast TVLV offsets
The network and transport header fields in struct sk_buff are 16-bit
offsets from skb->head, and U16_MAX is reserved as the unset transport
header value. batadv_tvlv_call_handler() sets both fields from a received
multicast TVLV without checking whether the TVLV end is representable.
If the end offset exceeds the field's range, skb_set_transport_header()
truncates it so that the transport header precedes the network header.
The negative difference is then returned by skb_network_header_len() as
a large u32. batadv_mcast_forw_packet() consequently accepts an oversized
multicast tracker and accesses memory beyond the skb data.
Add skb_set_transport_header_careful(), an offset-aware counterpart to
skb_reset_transport_header_careful(), which validates the final
head-relative offset before assigning it. Use the new helper in
batadv_tvlv_call_handler() and reject unrepresentable TVLVs before
setting the network header.
📍 영향받는 시스템
Linux kernel (batman-adv 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 멀티캐스트 TVLV 패킷을 전송하여 메모리 범위를 초과하는 접근 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인