🇰🇷 한글 설명
Linux 커널의 batman-adv 모듈에서 네트워크 인터페이스의 MTU가 너무 작아지면 로컬 translation table 재조정 시 무한 루프가 발생합니다. Timeout이 0으로 수렴되어 테이블 축소가 불가능해지며, VLAN 개수나 NOPURGE 항목이 많으면 패킷 크기 부족으로 동일한 문제가 발생합니다.
💡 쉬운 설명
메시 네트워크 기능에서 네트워크 크기 제한이 너무 작아지면 시스템이 같은 작업을 계속 반복하며 응답하지 않게 됩니다. 호환되지 않는 네트워크 설정에서 발생하는 시스템 행(hang) 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
batman-adv: Avoid infinite loop trying to resize local TT
If the MTU of one of an attached interface becomes too small to transmit
the local translation table then it must be resized to fit inside all
fragments (when enabled) or a single packet.
But if the MTU becomes too low to transmit even the header + the VLAN
specific part then the resizing of the local TT will never succeed. This
can for example happen when the usable space is 110 bytes and 11 VLANs are
on top of batman-adv. In this case, at least 116 byte would be needed.
There will just be an endless spam of
batman_adv: batadv0: Forced to purge local tt entries to fit new maximum fragment MTU (110)
in the log but the function will never finish. Problem here is that the
timeout will be halved all the time and will then stagnate at 0 and
therefore never be able to reduce the table even more.
There are other scenarios possible with a similar result. The number of
BATADV_TT_CLIENT_NOPURGE entries in the local TT can for example be too
high to fit inside a packet. Such a scenario can therefore happen also with
only a single VLAN + 7 non-purgable addresses - requiring at least 120
bytes.
While this should be handled proactively when:
* interface with too low MTU is added
* VLAN is added
* non-purgeable local mac is added
* MTU of an attached interface is reduced
* fragmentation setting gets disabled (which most likely requires dropping
attached interfaces)
not all of these scenarios can be prevented because batman-adv is only
consuming events without the the possibility to prevent these actions
(non-purgable MAC address added, MTU of an attached interface is reduced).
It is therefore necessary to also make sure that the code is able to handle
also the situations when there were already incompatible system
configuration are present.
📍 영향받는 시스템
Linux 커널 batman-adv 모듈 적용된 메시 네트워킹 시스템 (특히 IoT, 드론, 스마트 네트워크 장비)
⚔️ 공격 벡터
batman-adv 활성화 시스템의 인터페이스 MTU 감소 또는 VLAN/non-purgeable MAC 대량 추가로 메모리 부족 상황 강제 유발
🛡️ 대응 방법
최신 Linux 커널 업데이트 적용 (4.19.302+, 5.4.254+, 5.10.191+ 이상) 또는 batman-adv 모듈 재컴파일; 인터페이스 MTU 최소 500 이상 유지
🔧 검증 코드
version 정보 표시 시 모듈 설치 확인 완료, 커널 버전과 비교하여 CVE 패치 적용 여부 판단
modinfo batman_adv 2>/dev/null | grep version || echo 'batman_adv not loaded'