🇰🇷 한글 설명
Linux 커널의 batman-adv 모듈에서 tt_buff_len 변수가 s16 타입으로 선언되어 정수 오버플로가 발생할 수 있는 취약점입니다. 값이 32767을 초과할 경우 음수로 변환되어 버퍼 할당 및 데이터 처리 과정에서 초기화되지 않은 메모리 영역이 남게 됩니다.
💡 쉬운 설명
데이터 크기를 저장하는 칸이 너무 작아서 큰 숫자가 들어오면 갑자기 마이너스 숫자로 오해하는 문제입니다. 이로 인해 컴퓨터 메모리의 일부가 제대로 채워지지 않고 비어있는 상태로 남게 되어 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
batman-adv: tt: fix negative tt_buff_len
batadv_orig_node::tt_buff_len was declared as s16, but the field is never
intended to hold a negative value. When a value greater than 32767 is
assigned, it wraps to a negative signed integer.
In batadv_send_other_tt_response(), tt_buff_len is temporarily widened to
s32. The incorrectly negative s16 value propagates into the s32, causing
batadv_tt_prepare_tvlv_global_data() to allocate a full sized buffer but
populates only a small portion of it with the collected changeset. All
remaining bits are kept uninitialized.
Using an u16 avoids this type confusion and ensures that no (negative) sign
extension is performed in batadv_send_other_tt_response().
📍 영향받는 시스템
Linux kernel (batman-adv 모듈을 사용하는 시스템)
⚔️ 공격 벡터
조작된 TT(Topology Transformation) 응답 패킷을 전송하여 메모리 내 미초기화 데이터를 유도
🛡️ 대응 방법
tt_buff_len 변수 타입을 s16에서 u16으로 변경한 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인