
CUPS 2.4.16 로컬 관리자 토큰 유출 및 file:// 임의 파일 쓰기를 통한 로컬 권한 상승 (CVE-2026-34990)
CUPS 2.4.16에는 로컬 권한 상승 취약점이 포함되어 있습니다 (GHSA-c54j-2vqw-wpwp로도 추적됩니다).
전 세계 쓰기 가능 소켓 — /run/cups/cups.sock이 전 세계 쓰기 가능하여,
모든 로컬 사용자가 root로 실행 중인 CUPS 데몬에 IPP 요청을
보낼 수 있습니다.
로컬 토큰 유출 — CUPS-Create-Local-Printer를 악용하여
device-uri를 공격자가 제어하는 IPP 서버로 지정함으로써
Local 인증 토큰을 유출할 수 있습니다.
임의 파일 쓰기 — 유출된 토큰을 사용하여 공격자는
device-uri=file:///etc/sudoers.d/<user>로 프린터를 생성할 수 있으며,
이로 인해 CUPS(root 권한)가 디스크의 임의 경로에 임의 내용을
쓸 수 있습니다.
# 기본 사용법
python3 cups_pwn.py --user lowpriv
# 사용자 지정 sudoers 경로
python3 cups_pwn.py --user lowpriv --sudoers /etc/sudoers.d/custom
# 성공 후
sudo -i
🧠 작동 방식
text
┌─────────────────────────────────────────────────────────────────┐
│ 1. 127.0.0.1:9189에서 가짜 IPP 서버 시작 │
│ 2. device-uri=ipp://...로 CUPS-Create-Local-Printer 전송 │
│ 3. CUPS가 가짜 서버에 연결 → Local 토큰 전송 │
│ 4. 토큰 추출 │
│ 5. device-uri=file:///etc/sudoers.d/...로 프린터 생성 │
│ 6. "user ALL=(ALL) NOPASSWD: ALL"이 포함된 gzip 페이로드 인쇄 │
│ 7. CUPS가 root 권한으로 페이로드 작성 │
│ 8. sudo -n id → root │
└─────────────────────────────────────────────────────────────────┘
🛡️ 면책 조항
이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다.
소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에 사용하지
마십시오. 저자는 이 도구로 인한 오용이나 손해에 대해 책임지지
않습니다.
📚 참고 자료
GHSA-c54j-2vqw-wpwp
CVE-2026-34990
CUPS 보안 권고
📄 라이선스
MIT — LICENSE 파일을 참조하십시오.
text
### 파일 3: `LICENSE`
```bash
nano LICENSE