
CVE-2025-40271에 대한 기술 분석, Linux 커널의 /proc 파일 시스템에서 발견된 치명적인 Use-After-Free 취약점으로, 근본 원인, 재현 단계 및 패치 세부 정보를 포함합니다.
🔴 CVE-2025-40271: 리눅스 커널의 치명적인 Use-After-Free 취약점
CVE-2025-40271은 리눅스 커널의 /proc 파일 시스템에 영향을 미치는 치명적인 Use-After-Free (UAF) 취약점입니다. 이 결함은 /proc 내의 디렉토리 내용을 나열하는 역할을 하는 proc_readdir_de() 함수에 있습니다.
**디렉토리 엔트리 (PDE)**가 **rb_erase()**를 통해 이진 트리(rbtree)에서 제거될 때, 커널은 노드를 비어 있음으로 표시하지 않았습니다. 이로 인해 위험한 시나리오가 발생합니다:
/proc/pid/net/dev_snmp6/) 다른 프로세스가 네트워크 인터페이스를 제거하면(tun 장치 등), 포인터가 이미 해제된 메모리를 가리키게 될 수 있습니다.커널 개발 팀은 노드 처리를 **RB_CLEAR_NODE()**로 대체하는 중요한 패치를 구현했습니다. 이는 다음을 보장합니다:
NULL을 반환합니다.패치는 이미 다음 안정 브랜치에서 사용할 수 있습니다:
패치의 정확한 코드를 확인하려면 다음 커밋을 참조하십시오:
"리눅스 커널에서 다음 취약점이 해결되었습니다: fs/proc: fix uaf in proc_readdir_de(). PDE는
rb_erase()를 통해 하위 디렉토리 rbtree에서 제거되지만, 노드가 EMPTY로 설정되지 않아 UAF 접근이 발생할 수 있습니다.RB_CLEAR_NODE()를 사용하여 지워진 노드를 EMPTY로 설정해야 하며, 그러면pde_subdir_next()가NULL을 반환하여 UAF 접근을 방지합니다."
getdent를 사용하여 /proc/pid/net/dev_snmp6/를 탐색 (현재 포인터는 tun3).tun3 및 tun2)를 등록 해제하여 트리에서 제거합니다.
tun3가 제거되고, 그 다음 tun2가 제거됩니다(slab에 해제됨).getdent로 탐색을 계속하지만, pde_subdir_next()가 (이미 해제된) tun2를 반환하여 UAF를 발생시킵니다.| CWE-ID | 이름 | 출처 |
|---|---|---|
| CWE-416 | Use After Free | NVD |
| URL | 설명 |
|---|---|
| NVD - CVE-2025-40271 | 공식 세부 정보 (아직 CVSS 점수 없음) |
| Kernel.org Commits | 패치의 소스 코드 |
⚠️ 최종 권장 사항:
커널 버전 6.1.x, 6.6.x, 6.12.x 또는 6.13.x를 사용하는 경우, 패치된 버전으로 즉시 업데이트하십시오. 불가능하다면, 커밋을 수동으로 적용하거나 보안 정책(예: chroot, SELinux)을 통해 /proc 접근을 제한하는 것을 고려하십시오.
| 필드 | 세부 사항 |
|---|
| ID | CVE-2025-40271 |
| 구성 요소 | 리눅스 커널 (fs/proc) |
| 심각도 | 높음 (아직 NVD/NIST에 의해 공식적으로 평가되지 않음) |
| 발견 경로 | stress-ng로 발견됨 (getdent 및 tun 동시 사례) |
| NVD 상태 | 우선순위 지정되지 않음 (리소스 제한으로 인한 보강 미진행) |