Source: AFINE (billet technique de Karol Mazurek). Le billet analyse deux vulnérabilités dans le framework de mise à jour Sparkle sur macOS (CVE-2025-10015 et CVE-2025-10016), toutes deux dues à une absence de validation des clients XPC, montrant un impact en contournement TCC et en élévation de privilèges locale.
- Problème central: des services XPC de Sparkle établissent une confiance implicite sans vérifier l’identité du client. Cela permet à un processus local non privilégié d’exploiter des services existants avec des privilèges du binaire ciblé.
- Portée: découvert initialement via Ghostty.app, mais toute application embarquant Sparkle est potentiellement concernée.
• CVE-2025-10015 — TCC bypass 🔓
- Service en cause: un service XPC de téléchargement de Sparkle (Downloader). En l’absence de validation du client, un attaquant local peut se faire passer pour l’app vulnérable et lire/écrire des fichiers protégés par TCC en abusant de ses permissions, notamment via des techniques de détournement de chemin (path traversal) et l’utilisation d’URL file://.
- Impact: accès à des emplacements protégés (Desktop, Documents, etc.) sans déclencher de dialogue TCC.
• CVE-2025-10016 — Élévation de privilèges (LPE) 🚀
- Chaîne d’abus: un service XPC global (InstallerLauncher) lance le composant privilégié Autoupdate sans authentifier correctement le client; puis Autoupdate lui-même n’authentifie pas son client XPC. L’attaquant peut orienter la validation EdDSA vers une clé publique contrôlée via un « faux bundle » hôte, ce qui fait passer la vérification et conduit Autoupdate à exécuter le programme système d’installation de paquets en root.
- Impact: exécution de charge utile via un paquet .pkg avec scripts post-install exécutés avec des privilèges root.
• Correctifs et versions concernées 🛠️
- Correctif: Sparkle 2.7.3 (« Important security fixes for local exploits ») renforce la validation des clients (exigences de signature de code, vérifications d’autorisation) et l’assainissement des entrées.
- Portée des correctifs: la vulnérabilité TCC n’affecte pas Sparkle 1 ni les versions < 2.6; les apps ayant retiré le service de téléchargement sont indemnes. Pour la LPE, les apps ayant désactivé SPARKLE_BUILD_PACKAGE_SUPPORT ne sont pas affectées.
- Note: l’application des exigences de signature est alignée sur des certificats Apple valides; des logiciels tiers non signés correctement peuvent rester exposés.
• TTPs observés (ATT&CK-like) 🧩
- Abus de services XPC non authentifiés pour usurper l’identité du client.
- Héritage des permissions TCC d’une app vulnérable via un service XPC associé.
- Path traversal dans le nom de fichier désiré pour écrire hors du répertoire prévu.
- Bypass de validation cryptographique en fournissant une clé publique contrôlée via un faux bundle hôte (manipulation de la récupération de la clé SUPublicEDKey).
- Exécution de /usr/sbin/installer en root via le composant Autoupdate après validation détournée.
• IOCs
- Aucun indicateur réseau (IP, domaines, hachages) fourni; l’article se concentre sur des vecteurs locaux et des noms de services XPC.
Conclusion: article d’analyse technique avec preuves de concept démontrant deux vecteurs locaux (TCC bypass et LPE) dus à l’absence de validation des clients XPC dans Sparkle, et présentant les correctifs disponibles (Sparkle 2.7.3).
🧠 TTPs et IOCs détectés
TTP
[‘Abus de services XPC non authentifiés pour usurper l’identité du client’, ‘Héritage des permissions TCC d’une app vulnérable via un service XPC associé’, ‘Path traversal dans le nom de fichier désiré pour écrire hors du répertoire prévu’, ‘Bypass de validation cryptographique en fournissant une clé publique contrôlée via un faux bundle hôte’, ‘Exécution de /usr/sbin/installer en root via le composant Autoupdate après validation détournée’]
IOC
Aucun indicateur réseau (IP, domaines, hachages) fourni
🔗 Source originale : https://afine.com/threats-of-unvalidated-xpc-clients-on-macos