
CVE-2022-46718: приложение может иметь возможность читать конфиденциальную информацию о местоположении.
tl;dr: добавьте проверку разрешения для parsecd
CoreParsecLocation — это пример приложения, демонстрирующий, как стороннее приложение может получить точное местоположение пользователя без его согласия или разрешения. parsecd/CoreParsec также предоставляет такую информацию, как локализованные поисковые предложения, информационные карточки и временный идентификатор пользователя. К счастью, я не думаю, что этот идентификатор в настоящее время сохраняется или используется повторно.
Во время обычной экспедиции по фреймворкам я заметил активное к . После нескольких дней настройки я обнаружил, что отвечает на поисковые запросы из любого приложения, если я подделаю правильную информацию заголовка. В данном случае я использовал класс , который настраивает сессию для Spotlight.
NSXPCConnectionparsecdparsecdSPPARSessionСначала я предполагал, что объект PARResponse будет возвращать только GeoIP-местоположение (что само по себе не так уж полезно). Однако, после множества поисковых запросов я обнаружил, что поиск «рестораны» заставляет parsecd получать точное местоположение пользователя. Затем он возвращал информацию о местоположении через объект PARReponse.
parsec также возвращает дополнительную информацию, такую как локализованные новостные результаты и поисковые предложения. Я не считаю, что они в настоящее время содержат какую-либо идентифицирующую пользователя информацию. После отправки я планирую дополнительно изучить дополнительные ответы.
parsecd запрашивает новое местоположение, но во время тестирования я не видел индикатора местоположения в строке состояния.Dynamic (находится здесь: https://github.com/mhdhejazi/Dynamic). Эта библиотека не обязательна для эксплуатации parsecd, но упрощает использование сторонних API без открытых заголовков.parsecd местоположение без него.