🇰🇷 한글 설명
Linux 커널의 rxrpc procfs 헬퍼 함수에서 소켓 주소를 저장하는 스택 버퍼의 크기가 충분하지 않아 발생하는 취약점입니다. 특정 IPv6 주소 형식이 50바이트를 초과할 경우 버퍼 오버플로우가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 주소를 적어두는 메모리 공간이 실제 주소 길이보다 작아서 정보가 넘쳐흐를 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rxrpc: proc: size address buffers for %pISpc output
The AF_RXRPC procfs helpers format local and remote socket addresses into
fixed 50-byte stack buffers with "%pISpc".
That is too small for the longest current-tree IPv6-with-port form the
formatter can produce. In lib/vsprintf.c, the compressed IPv6 path uses a
dotted-quad tail not only for v4mapped addresses, but also for ISATAP
addresses via ipv6_addr_is_isatap().
As a result, a case such as
[ffff:ffff:ffff:ffff:0:5efe:255.255.255.255]:65535
is possible with the current formatter. That is 50 visible characters, so
51 bytes including the trailing NUL, which does not fit in the existing
char[50] buffers used by net/rxrpc/proc.c.
Size the buffers from the formatter's maximum textual form and switch the
call sites to scnprintf().
Changes since v1:
- correct the changelog to cite the actual maximum current-tree case
explicitly
- frame the proof around the ISATAP formatting path instead of the earlier
mapped-v4 example
📍 영향받는 시스템
Linux kernel (rxrpc module 사용 시스템)
⚔️ 공격 벡터
특수하게 조작된 긴 IPv6 주소를 procfs를 통해 노출시켜 버퍼 오버플로우 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인