
Exploit for CVE-2023-38571
macOS Music 및 TV 앱이 안전하지 않은 이름 변경(rename)을 수행하여 사용자의 TCC.db에 대한 완전한 제어권을 얻음으로써 FDA(Full Disk Access)를 획득합니다.
해당 버그를 각 앱에 대해 별도 티켓으로 신고했습니다. 해당되는 경우 병합해 주세요.
근본적인 문제는 이러한 앱들이 FDA를 가지고 있지만 파일 작업을 검증(sanitize)하지 못한다는 점입니다.
Music과 TV는 이 점에서 거의 동일하며, 경로만 다릅니다. 이후부터는 Music을 예로 사용하겠습니다. TV의 경우 익스플로잇 코드를 확인해 주세요. 매우 간단합니다.
Music은 사용자가 파일을 "드롭"할 수 있는 특수 폴더를 통해 사용자 라이브러리로 파일을 복사하는 기능이 있습니다.
사용자는 단순히 ~/Music/Music/Media.localized/Automatically Add to Music.localized/에 파일을 생성할 수 있습니다.
Music은 이 파일을 가져와서 "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized"로 안전하지 않은 이름 변경을 수행합니다.
유효한 TCC.db(익스플로잇이 생성하는)를 사용하면 미디어 파일이 아니기 때문에 "Not Added.localized" 폴더로 복사됩니다. 이는 매우 유용합니다. 간단한 심볼릭 링크 레이스(race)를 사용하여 이 이름 변경을 TCC.db의 실제 위치로 리디렉션할 수 있기 때문입니다.
이 익스플로잇은 기술적으로 경쟁 조건(race condition)이지만, 매우 신뢰성이 높아서 재시도 로직을 구현하지 않았을 정도로 항상 첫 시도에 성공합니다.
Music 사용법:
DEBUG=1 ./librarian.py 1
TV 사용법:
DEBUG=1 ./librarian.py 2
테스트 간 tcc db 초기화 방법:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All