
CVE-2022-46718: 앱이 중요한 위치 정보를 읽을 수 있음.
tl;dr parsecd에 권한 확인 추가
CoreParsecLocation은 제3자 앱이 사용자의 동의나 허가 없이 사용자의 정확한 위치에 접근할 수 있는 방법을 보여주는 샘플 애플리케이션입니다. parsecd/CoreParsec는 또한 지역화된 검색 제안, 지식 카드, 임시 사용자 ID와 같은 정보를 제공합니다. 다행히도, 사용자 ID는 현재 유지되거나 재사용되지 않는다고 생각합니다.
일상적인 Frameworks 탐험 중에 parsecd에 대한 활성 NSXPCConnection을 발견했습니다. 며칠간 조작한 끝에, 올바른 헤더 정보를 스푸핑하기만 하면 parsecd가 모든 애플리케이션의 검색 쿼리에 응답한다는 것을 발견했습니다. 이 경우, Spotlight의 세션을 설정하는 SPPARSession 클래스를 사용했습니다.
처음에는 PARResponse 객체가 GeoIP 위치만 반환할 것이라고 생각했습니다 (그 자체로는 그다지 유용하지 않습니다). 그러나 수많은 검색 쿼리를 시도한 후, "restaurants"를 검색하면 parsecd가 사용자의 정확한 위치를 가져오게 된다는 것을 발견했습니다. 그런 다음 PARReponse 객체를 통해 위치 정보를 반환했습니다.
parsec는 또한 지역화된 뉴스 결과 및 검색 제안과 같은 추가 정보를 반환합니다. 현재 이러한 정보에는 사용자 식별 정보가 포함되어 있지 않다고 생각합니다. 제출 후, 추가 응답을 더 탐색할 계획입니다.
parsecd가 새 위치를 요청하는 빈도는 확실하지 않지만, 테스트 중 상태 표시줄에서 위치 표시기를 보지 못했습니다.Dynamic을 사용합니다 (여기에서 찾을 수 있음: https://github.com/mhdhejazi/Dynamic). 이 라이브러리는 parsecd를 악용하는 데 필요하지 않지만, 노출된 헤더 없이 제3자 API를 더 쉽게 사용할 수 있게 해줍니다.parsecd가 인터넷 없이도 위치를 반환하는지 여전히 테스트 중입니다.