CVE-2025-40271
fs/proc: proc_readdir_de()의 UAF 수정
- 게시됨
- 2025. 12. 6.
- 업데이트됨
- 2026. 8. 5.
- CNA 할당 중
- Linux
- 증거 관찰됨
- 2026. 5. 4.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H낮음 · 다음 30일
- 백분위수
- 38.7%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
Linux 커널에서 다음 취약점이 해결되었습니다: fs/proc: proc_readdir_de()에서 uaf 수정 Pde는 rb_erase()를 통해 subdir rbtree에서 제거되지만 노드가 EMPTY로 설정되지 않아 uaf 액세스가 발생할 수 있습니다. RB_CLEAR_NODE()를 사용하여 제거된 노드를 EMPTY로 설정해야 하며, 그러면 pde_subdir_next()가 NULL을 반환하여 uaf 액세스를 방지할 수 있습니다. stress-ng 테스트 중 uaf 문제를 발견했으며, 이를 재현하려면 getdent 및 tun 테스트케이스를 동시에 실행해야 합니다. 문제의 단계는 다음과 같습니다: 1) getdent를 사용하여 /proc/pid/net/dev_snmp6/ 디렉터리를 순회하며, 현재 pde는 tun3입니다; 2) [시간 창]에서 netdevice tun3와 tun2의 등록을 해제하고 rbtree에서 제거합니다. tun3를 먼저 제거한 다음 tun2를 제거합니다. pde(tun2)는 slab으로 해제됩니다; 3) getdent 프로세스를 계속 진행하면 pde_subdir_next()가 해제된 pde(tun2)를 반환하여 uaf 액세스가 발생합니다. CPU 0 | CPU 1 ------------------------------------------------------------------------- traverse dir /proc/pid/net/dev_snmp6/ | unregister_netdevice(tun->dev) //tun3 tun2 sys_getdents64() | iterate_dir() proc_readdir() | proc_readdir_de() snmp6_unregister_dev() | pde_get(de); proc_remove() | read_unlock(&proc_subdir_lock); remove_proc_subtree() | write_lock(&proc_subdir_lock); [time window] | rb_erase(&root->subdir_node, &parent->subdir); write_unlock(&proc_subdir_lock); read_lock(&proc_subdir_lock); | next = pde_subdir_next(de); | pde_put(de); | de = next; //UAF | rbtree of dev_snmp6 | pde(tun3) / \ NULL | pde(tun2)
소스
3CVE-2025-40271에 대한 기술 분석, Linux 커널의 /proc 파일 시스템에서 발견된 치명적인 Use-After-Free 취약점으로, 근본 원인, 재현 단계 및 패치 세부 정보를 포함합니다.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.