
Linux에서 snap-confine + systemd-tmpfiles를 통한 LPE, 심층 분석
면책 조항: 이 저장소는 교육 목적으로만 제공됩니다. 모든 내용은 Qualys가 2026년 3월 17일에 공개한 원본 보안 권고를 기반으로 합니다. 이 취약점은 패치되었으므로 항상 시스템을 최신 상태로 유지하십시오. 소유하지 않았거나 명시적인 서면 허가를 받지 않은 시스템에 이 자료를 사용하지 마십시오.
CVE-2026-3888은 Ubuntu Desktop >= 24.04의 기본 설치에 영향을 미치는 로컬 권한 상승(LPE) 취약점입니다. 이 취약점은 Qualys에 의해 2026년 3월에 발견되어 공개적으로 공개되었습니다.
Qualys가 직접 언급했듯이 이 취약점이 특히 흥미로운 이유는 단일 결함이 있는 구성 요소에서 비롯된 것이 아니라는 점입니다. 대신, 개별적으로는 안전한 두 프로그램의 상호 작용에서 발생합니다:
| 구성 요소 | 역할 |
|---|---|
snap-confine | snap 애플리케이션을 위한 마운트 네임스페이스(샌드박스)를 구축하는 SUID-root 바이너리 |
systemd-tmpfiles | /tmp에서 오래된 파일을 주기적으로 정리하는 root 소유 데몬 |
두 프로그램 모두 단독으로는 문제가 없습니다. 그러나 함께 사용되면 악용 가능한 창이 생성됩니다.
원본 권고: https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
크레딧: Qualys 보안 연구팀
cve-2026-3888/
├── README.md ← 현재 위치
├── analysis/
│ ├── 01-vulnerability.md ← 취약점 심층 분석
│ ├── 02-race-condition.md ← TOCTOU 레이스가 작동하는 방식
│ ├── 03-backpressure-technique.md ← AF/UNIX 백프레셔 기법
│ ├── 04-exploitation-steps.md ← 전체 단계별 분석
│ └── 05-mitigations.md ← 패치된 내용과 방법
└── src/
├── firefox_2404.c ← 레이스 헬퍼(주석 포함)
└── librootshell.c ← 동적 로더 셸코드(주석 포함)
| Ubuntu 버전 | 정리 기간 | 대기 시간(실제) |
|---|---|---|
| 24.04 LTS | 30일 | 30일 |
| > 24.04 | 10일 | 10일 |
패치 버전: snapd 2.74.2
/tmp/.snap을 root:root 0755로 생성/tmp를 활성 상태로 유지하되 /tmp/.snap은 오래된 상태로 방치systemd-tmpfiles가 오래된 /tmp/.snap을 삭제 - /tmp는 전 세계에서 쓰기 가능하므로 공격자는 .snap을 다시 생성하고 소유권을 획득snap-confine의 실행을 단일 단계로 진행snap-confine이 공격자가 소유한 라이브러리를 root로 네임스페이스에 바인드 마운트ld-linux-x86-64.so.2를 셸코드로 덮어쓰기 - 이 네임스페이스에서 실행되는 모든 SUID 바이너리는 우리 코드를 root로 실행/var/snap/firefox/common/을 통해 AppArmor 제한을 우회하여 완전한 권한의 셸 획득