🇰🇷 한글 설명
Linux kernel의 netfilter nf_conntrack_h323 모듈에서 DecodeQ931() 함수가 패킷의 길이값을 제대로 검증하지 않아 정수 언더플로우가 발생합니다. 길이가 0일 때 1을 감소시키면 음수로 래핑되어 메모리 범위 밖의 영역을 읽게 됩니다.
💡 쉬운 설명
프로그램이 데이터 크기를 음수로 해석하는 버그로 인해 메모리를 잘못 읽을 수 있습니다. 공격자가 특수한 네트워크 패킷을 보내면 커널이 의도하지 않은 메모리 내용을 노출하거나 시스템을 중단시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()
In DecodeQ931(), the UserUserIE code path reads a 16-bit length from
the packet, then decrements it by 1 to skip the protocol discriminator
byte before passing it to DecodeH323_UserInformation(). If the encoded
length is 0, the decrement wraps to -1, which is then passed as a
large value to the decoder, leading to an out-of-bounds read.
Add a check to ensure len is positive after the decrement.
📍 영향받는 시스템
h323 netfilter 모듈이 컴파일된 Linux kernel 모든 버전 (패치 미적용)
⚔️ 공격 벡터
h.323 프로토콜을 사용하는 특수 제작된 네트워크 패킷을 원격으로 전송하여 대상 호스트의 netfilter 모듈 트리거
🛡️ 대응 방법
Linux kernel을 최신 버전으로 업데이트하고, 불필요하면 h323 netfilter 모듈 제거 또는 비활성화
🔧 검증 코드
'potentially vulnerable'이 출력되면 모듈이 활성화된 상태이므로 커널 업데이트 필요, 'safe'면 취약점이 없음
grep -E 'CONFIG_NF_NAT_H323|CONFIG_NF_CONNTRACK_H323' /boot/config-$(uname -r) | grep -q '=y' && echo 'potentially vulnerable' || echo 'safe'