
Analyse technique et exploit de preuve de concept pour CVE-2025-61228, une vulnérabilité d'élévation de privilèges dans le mécanisme de mise à jour automatique de SuperDuper!, avec ventilation détaillée du vecteur d'attaque et conseils d'atténuation.
Ce problème semble être plus grave que ne le laisse entendre le développeur, et je ne veux pas que cette partie soit noyée dans les détails. Le développeur a indiqué sur son blog :
Cette situation ne peut se produire que si un programme s’exécutant sur votre système cherche SuperDuper pour effectuer une mise à jour, qu’une vraie mise à jour est présentée par des moyens légitimes et que vous cliquez sur Upgrade.
Ce n’est pas réellement vrai : exploiter cette vulnérabilité n’exige pas qu’une vraie mise à jour soit présentée par des moyens légitimes. N’acceptez jamais, au grand jamais, une mise à jour fournie par SuperDuper 3.10 et versions antérieures ! Je l’explique plus en détail ci-dessous.
Il est également important de comprendre que cette vulnérabilité ne se limite pas à une élévation de privilèges ; elle implique aussi un contournement des contrôles de confidentialité. Ce détail semble avoir été omis du billet de blog du développeur.
Extrait du blog du développeur :
Notre mécanisme de mise à jour automatique peut être détourné et être amené à installer un paquet qui n’est pas SuperDuper.
Même si nous avons signé et notarié notre paquet d’installation, Gatekeeper ne vérifie pas cette notarisation lorsqu’il est installé par l’installeur de paquets de macOS. Ainsi, le téléchargement pourrait être modifié et nous installerions ce paquet à la place. Comme l’installation est effectuée avec des privilèges élevés, cela pourrait permettre à un programme malveillant d’un tiers, que vous devriez également installer, d’obtenir un accès administrateur à votre système.
Extrait de la CVE :
Un problème dans Shirt Pocket SuperDuper! V.3.10 et versions antérieures permet à un attaquant local d’exécuter du code arbitraire via le mécanisme de mise à jour logicielle.
L’auteur de cet article n’est pas le découvreur de la vulnérabilité, identifié par le développeur de SuperDuper comme « chercheur en sécurité anonyme ». Je ne revendique aucun crédit pour la découverte de cette vulnérabilité ; je me suis simplement intéressé à son analyse technique.
CVSS 3.1 Score: 7.8 High (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Pour éviter cette vulnérabilité, supprimez l’application SuperDuper! ou appliquez la mise à jour 3.11.
Avertissement : vous devez télécharger la mise à jour directement depuis le site web du développeur pour éviter cette vulnérabilité.
Cette analyse d’exploitation et cette preuve de concept sont fournies à des fins éducatives uniquement. Utilisez-les à vos propres risques.
Plutôt que d’utiliser une solution de mise à jour logicielle open source testée par des centaines de développeurs et de professionnels de la sécurité, les développeurs de SuperDuper ont créé leur propre mécanisme de mise à jour logicielle reposant sur des scripts shell non sécurisés qui s’exécutent avec les privilèges root et disposent d’un accès complet au disque. En n’authentifiant pas le logiciel installé au cours de la mise à jour, SuperDuper est amené à installer le logiciel d’un attaquant. Le correctif du développeur ne traite que l’aspect de l’authentification de cette vulnérabilité ; il ne traite pas les vulnérabilités inhérentes à l’utilisation de scripts shell pour faciliter le processus de mise à jour.
Le commentaire du développeur selon lequel « Gatekeeper ne vérifie pas cette notarisation » est trompeur. Gatekeeper entre en jeu lorsque vous tentez d’ouvrir un élément téléchargé dans un navigateur, mais ce n’est pas applicable au mécanisme interne de mise à jour logicielle d’une application. C’est à 100 % la responsabilité du développeur de valider tout ce que son logiciel télécharge et installe sur votre ordinateur – ne vous laissez pas faire croire par ce développeur qu’il s’agit d’une défaillance de Gatekeeper. Au cœur de l’exploitation, un attaquant peut duper SuperDuper pour qu’il installe un paquet alternatif, et cela se produit avec des privilèges élevés. Il s’exécuterait probablement aussi avec un accès complet au disque, car SuperDuper nécessite un accès complet au disque pour faire quoi que ce soit.
Le blog du développeur indique également :
Cette situation ne peut se produire que si un programme s’exécutant sur votre système cherche SuperDuper pour effectuer une mise à jour, qu’une vraie mise à jour est présentée par des moyens légitimes et que vous cliquez sur Upgrade.
Avec ce commentaire, j’ai supposé qu’il ne serait probablement pas possible de reproduire cette exploitation, car elle devrait impliquer des modifications côté serveur du mécanisme de mise à jour, qui auraient été effectuées en même temps que la publication du correctif 3.11. En d’autres termes, pour empêcher les versions plus anciennes du logiciel d’être affectées par cette vulnérabilité, ils ont sûrement désactivé le mécanisme de mise à jour, n’est-ce pas ? Eh bien... J’ai téléchargé une version plus ancienne de SuperDuper, et lorsque je l’ai ouverte, j’ai immédiatement été accueilli par une notification de mise à jour† – à un clic d’une exploitation potentielle. J’ai trouvé cela très intriguant : comment quiconque utilisant une version plus ancienne de l’application sera-t-il protégé de cette vulnérabilité si le mécanisme de mise à jour automatique n’est pas désactivé ? (cela est lié à l’« alerte » que j’ai mentionnée au début de cet article ; je reviendrai sur cette question à la fin).
† En quelque sorte... Le résultat était en réalité très bizarre. Il n’y avait aucune description de la mise à jour ni avis de sécurité, la fenêtre était simplement vide avec un bouton Skip et un bouton Update. Ainsi, non seulement les utilisateurs plus anciens ne sont pas protégés contre l’exploitation par la désactivation du mécanisme de mise à jour, mais ils ne sont pas non plus informés du problème via ce mécanisme.
J’ai poursuivi. Lorsque vous appliquez la mise à niveau, les mécanismes internes sont consignés dans le journal de SuperDuper, ce qui est pratique ; nous allons donc commencer par là pour voir comment cela fonctionne :
Transcript : UpgradeTranscript.plist
Ext Logging : Disabled
PHASE: 1. Upgrade Application
...ACTION: Downloading upgrade package
......COMMAND => Downloading update package...
......COMMAND => Preparing update package
...ACTION: Installing upgrade package
......COMMAND => Preserving SDAgent owner and mode bits
......COMMAND => Installing upgrade package
installer[3148] <Debug>: Product archive /tmp/SuperDuper!.pkg trustLevel=350
De nombreuses applications Mac qui ne passent pas par le Mac App Store utilisent le framework open source Sparkle pour gérer (de manière sécurisée) les mises à jour logicielles. Pas SuperDuper. On voit ici qu’ils ont créé le leur, et c’est un excellent exemple de pourquoi c’est souvent un mauvais choix. Les mécanismes de mise à jour logicielle sont des cibles de choix pour les exploits, ils nécessitent donc beaucoup de temps et d’expertise pour rester sécurisés. « UpgradeTranscript.plist » fait référence à un fichier situé dans l’application SuperDuper qui énumère une série de commandes Terminal que SuperDuper utilise pour télécharger et appliquer la mise à jour :
cat /Applications/SuperDuper\!.app/Contents/Resources/Transcripts/UpgradeTranscript.plist
<?xml version="1.0" encoding="UTF-8"?>
...
/usr/bin/curl SDHTTPproxy.Host --silent --show-error --output /tmp/superduper.tar.gz -L SDdownloadURL