
CVE-2022-46718: un'app potrebbe essere in grado di leggere informazioni sensibili sulla posizione.
tl;dr aggiungi un controllo dei diritti a parsecd
CoreParsecLocation è un'applicazione di esempio che dimostra come un'app di terze parti possa accedere alla posizione precisa di un utente senza il suo consenso o permesso. parsecd/CoreParsec fornisce anche informazioni come suggerimenti di ricerca localizzati, schede di conoscenza e un ID utente temporaneo. Fortunatamente, credo che l'ID utente non sia persistito o riciclato al momento.
Durante una normale esplorazione dei framework, ho notato una NSXPCConnection attiva verso parsecd. Dopo qualche giorno di sperimentazione, ho scoperto che parsecd rispondeva a query di ricerca da qualsiasi applicazione purché falsificassi le corrette informazioni di intestazione. In questo caso, ho usato la classe SPPARSession, che configura una sessione per Spotlight.
All'inizio, pensavo che l'oggetto PARResponse restituisse solo una posizione GeoIP (che da sola non è molto utile). Tuttavia, dopo aver provato numerose query di ricerca, ho scoperto che cercare "ristoranti" causava il recupero della posizione precisa dell'utente da parte di parsecd. Restituiva quindi le informazioni sulla posizione tramite l'oggetto PARReponse.
parsec restituisce anche informazioni aggiuntive, come risultati di notizie localizzate e suggerimenti di ricerca. Non credo che queste contengano informazioni identificabili dell'utente al momento. Dopo la segnalazione, ho intenzione di esplorare ulteriormente le risposte aggiuntive.
parsecd richieda una nuova posizione, ma non ho visto un indicatore di posizione nella barra di stato durante i miei test.Dynamic (disponibile qui: https://github.com/mhdhejazi/Dynamic). Questa libreria non è necessaria per sfruttare parsecd, ma semplifica l'uso di API di terze parti senza intestazioni esposte.parsecd restituisca la posizione senza di essa.