
macOS Sonoma, Sequoia 및 Tahoe에서 권한 없는 사용자에서 root로 권한 상승. macOS 26.6 / 15.7.8 / 14.8.8에서 패치됨.
비특권 사용자에서 root로의 권한 상승을 가능하게 하는 CUPS 취약점으로, macOS Tahoe, Sequoia 및 Sonoma의 macOS 26.6 / 15.7.8 / 14.8.8 이전 버전에 영향을 미칩니다.



이 취약점은 권한이 있는 cupsd 데몬에 존재하는 두 가지 연쇄적인 논리 결함에서 발생합니다.
1. 신뢰 경계를 넘어 전달되는 권한 있는 인증 토큰.
CUPS가 새로 등록된 프린터를 프로브하면 유효한 Local 인증 토큰을 프린터의 백엔드, 즉 프린터의 device-uri가 지정하는 엔드포인트로 전달합니다. 비특권 사용자가 해당 device-uri를 제어할 수 있기 때문에, 자신이 제어하는 리스너를 가리키는 프린터를 등록하고 신뢰할 수 있는 하위 시스템 경계를 벗어나면 안 되는 토큰을 받을 수 있습니다. 설계상 백엔드가 신뢰된다고 가정하지만, 비특권 사용자가 프린터를 등록할 수 있게 되면서 이 가정이 깨집니다.
2. 인증 검증이 완료되기 전에 도달 가능한 root 권한 파일 I/O.
프린터 등록 중 안정적으로 재현 가능한 타이밍 창 안에서 cupsd는 인증 검증이 완료되기 전에 root 권한으로 파일 쓰기를 수행합니다. 권한 있는 I/O는 인증 검사가 완료되는 것을 조건으로 하지 않으며, 쓰기가 발생하는 시점에 대상 경로와 파일 내용 모두 공격자의 영향을 받습니다.
python3 poc.py
개념 증명 코드는 두 결함을 세 단계로 연결합니다.
1단계 — 토큰 캡처. 공격자는 자신이 제어하는 로컬 리스너를 가리키는 device-uri를 가진 프린터를 등록한 다음 프로브를 트리거합니다. cupsd는 유효한 Local 인증 토큰을 공격자가 제어하는 리스너로 전달합니다.
2단계 — 토큰 재전송. 공격자는 캡처한 토큰을 재사용하여 자신이 선택한 임의의 SIP 보호 비적용 경로를 대상으로 하는 file:// device-uri를 가진 두 번째 프린터를 등록합니다.
3단계 — root로 임의 쓰기. 공격자는 공격자가 제어하는 내용이 담긴 인쇄 작업을 두 번째 프린터에 제출합니다. cupsd는 작업 데이터를 root 권한으로 지정된 경로에 씁니다. 어느 단계에서도 사용자 상호 작용이 필요하지 않습니다.
그 후 스크립트는 파일이 root 권한으로 생성되었는지 확인하여 취약점을 입증합니다.
참고: 이 개념 증명은 root로 임의 파일 쓰기만 입증합니다. 권한 상승을 수행하지는 않습니다.
Dallas Dubs가 독자적으로 발견했습니다. 또한 Apple이 공로를 인정한 이들은 Aaron Grattafiori - NVIDIA AI Red Team, XBreach.ai, Nosebeard Labs의 Andreas Jaegersberger & Ro Achterberg입니다.