🔍 CVE-2026-31503

5.5
CVSS Score
MEDIUM
2026-04-22
2026-11-05 22:18
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 UDP 소켓 바인딩 과정에서 해시 테이블 충돌 검사 로직에 결함이 발견되었습니다. 특정 조건(hslot->count > 10)에서 와일드카드 주소(0.0.0.0 또는 [::])를 바인딩할 때 기존 소켓과의 충돌을 제대로 감지하지 못하는 문제입니다.

💡 쉬운 설명

특정 포트를 이미 사용 중임에도 불구하고, 시스템이 이를 확인하는 방식의 오류로 인해 중복된 포트 연결이 허용될 수 있는 보안 결함입니다. 이는 네트워크 서비스의 혼선이나 예상치 못한 동작을 유발할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: udp: Fix wildcard bind conflict check when using hash2 When binding a udp_sock to a local address and port, UDP uses two hashes (udptable->hash and udptable->hash2) for collision detection. The current code switches to "hash2" when hslot->count > 10. "hash2" is keyed by local address and local port. "hash" is keyed by local port only. The issue can be shown in the following bind sequence (pseudo code): bind(fd1, "[fd00::1]:8888") bind(fd2, "[fd00::2]:8888") bind(fd3, "[fd00::3]:8888") bind(fd4, "[fd00::4]:8888") bind(fd5, "[fd00::5]:8888") bind(fd6, "[fd00::6]:8888") bind(fd7, "[fd00::7]:8888") bind(fd8, "[fd00::8]:8888") bind(fd9, "[fd00::9]:8888") bind(fd10, "[fd00::10]:8888") /* Correctly return -EADDRINUSE because "hash" is used * instead of "hash2". udp_lib_lport_inuse() detects the * conflict. */ bind(fail_fd, "[::]:8888") /* After one more socket is bound to "[fd00::11]:8888", * hslot->count exceeds 10 and "hash2" is used instead. */ bind(fd11, "[fd00::11]:8888") bind(fail_fd, "[::]:8888") /* succeeds unexpectedly */ The same issue applies to the IPv4 wildcard address "0.0.0.0" and the IPv4-mapped wildcard address "::ffff:0.0.0.0". For example, if there are existing sockets bound to "192.168.1.[1-11]:8888", then binding "0.0.0.0:8888" or "[::ffff:0.0.0.0]:8888" can also miss the conflict when hslot->count > 10. TCP inet_csk_get_port() already has the correct check in inet_use_bhash2_on_bind(). Rename it to inet_use_hash2_on_bind() and move it to inet_hashtables.h so udp.c can reuse it in this fix.

📍 영향받는 시스템

Linux Kernel (UDP hash2 전환 로직이 포함된 버전)

⚔️ 공격 벡터

특정 포트에 다수의 소켓을 바인딩하여 해시 테이블 임계치를 넘긴 후, 와일드카드 주소로 중복 포트 바인딩 시도

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel