
CVE-2022-46718: um aplicativo pode ser capaz de ler informações confidenciais de localização.
Resumo: adicione uma verificação de entitlement ao parsecd
CoreParsecLocation é um aplicativo de exemplo que demonstra como um aplicativo de terceiros pode acessar a localização precisa de um usuário sem consentimento ou permissão. parsecd/CoreParsec também fornece informações como sugestões de pesquisa localizadas, cartões de conhecimento e um ID de usuário temporário. Felizmente, acredito que o ID do usuário não é persistido ou reciclado no momento.
Durante uma expedição de rotina aos frameworks, notei uma NSXPCConnection ativa para parsecd. Após alguns dias de ajustes, descobri que o parsecd responderia a consultas de busca de qualquer aplicativo, desde que eu falsificasse as informações de cabeçalho corretas. Neste caso, usei a classe SPPARSession, que configura uma sessão para o Spotlight.
No início, presumi que o objeto PARResponse retornaria apenas uma localização GeoIP (que não é tão útil por si só). No entanto, após tentar várias consultas de busca, descobri que pesquisar por "restaurantes" fazia com que o parsecd obtivesse a localização precisa do usuário. Em seguida, ele retornava as informações de localização para mim através do objeto PARReponse.
parsec também retorna informações adicionais, como resultados de notícias localizadas e sugestões de pesquisa. Acredito que estas não contenham informações identificáveis do usuário no momento. Após a submissão, pretendo explorar mais as respostas adicionais.
parsecd solicita uma nova localização, mas não vi um indicador de localização na barra de status durante meus testes.Dynamic (encontrada aqui: https://github.com/mhdhejazi/Dynamic). Esta biblioteca não é necessária para explorar o parsecd, mas facilita o uso de APIs de terceiros sem cabeçalhos expostos.parsecd retornará a localização sem uma.