L'extension qui est sortie du navigateur
Zscaler a découvert une porte dérobée nommée Edgecution qui s'exécute dans une fenêtre Microsoft Edge que la victime n'a jamais ouverte, puis utilise Native Messaging — le canal légitime par lequel une extension dialogue avec une application de bureau — pour exécuter des commandes sur l'hôte. La vraie question est de savoir ce que ce pont vers l'hôte atteint quand le navigateur vit dans une VM jetable.
Une extension de navigateur est censée rester enfermée à l'intérieur du navigateur. Une porte dérobée nommée Edgecution est la démonstration concrète que ce « censée » portait une bonne partie du poids. Elle s'exécute dans une fenêtre Microsoft Edge que la victime n'a jamais ouverte et ne peut pas voir, et elle se sert d'une fonctionnalité intégrée à chaque navigateur Chromium pour exécuter des commandes sur la machine en dessous.
Imaginez la nouvelle recrue à la comptabilité, trois semaines d'ancienneté, qui dit encore oui à tout. Un message arrive dans Microsoft Teams, de la part de quelqu'un dont le nom figure parmi le support informatique. Il y a une mise à jour du filtre anti-spam pour Outlook ; l'équipe messagerie la déploie cette semaine ; voici la page. Elle l'ouvre. Elle est estampillée « Console de gestion des mises à jour Outlook », elle a l'air suffisamment interne, et elle lui donne une courte commande à exécuter pour terminer l'installation. Elle l'exécute. Rien ne semble se produire. Elle ferme l'onglet et retourne au travail.
Fin juin, l'équipe ThreatLabz de Zscaler a documenté ce qui se passe une fois cet onglet fermé. La famille de logiciels malveillants s'appelle Edgecution, et BleepingComputer en a parlé la même semaine. Le malware est discret par conception ; la partie qui mérite un examen plus attentif, c'est l'endroit où l'attaquant a choisi de le cacher.
Un message de l'informatique qui n'en était pas un.
Le coup d'ouverture, c'est de l'ingénierie sociale via Microsoft Teams, l'attaquant se faisant passer pour le service informatique de l'entreprise et orientant l'employée vers cette fausse page de mise à jour Outlook. La page propose trois manières de « terminer l'installation », et selon l'analyse de Zscaler elles livrent toutes la même chose : un script AutoHotKey obfusqué accompagné d'un véritable exécutable AutoHotKey, un script batch Windows copié dans le presse-papiers, ou un script PowerShell copié dans le presse-papiers. Deux de ces trois options sont la manœuvre du collage depuis le presse-papiers que vous connaissez peut-être sous le nom de ClickFix — la page écrit la commande à votre place, et la seule chose qui reste à faire à l'humain, c'est de coller et d'appuyer sur Entrée.
Ce collage, c'est toute la partie. La charge utile arrive à l'intérieur d'un
ZIP chiffré dont les octets magiques PK ont été retirés, de sorte que le
fichier ne ressemble pas à un ZIP pour ce qui pourrait l'analyser. Une fois le
script exécuté, l'hôte est compromis — non pas par un exploit habile, mais
parce qu'on a convaincu une personne d'exécuter un programme sur son propre
ordinateur. Tout ce qui suit, c'est l'attaquant qui décide comment rester.
Le navigateur comme porte dérobée.
La façon dont le malware survit à un redémarrage est la partie sur laquelle il
vaut la peine de ralentir. La plupart des malwares qui veulent persister
déposent un exécutable, écrivent une clé de démarrage dans le registre, ou
installent un service — autant de choses que les outils de sécurité sont conçus
pour surveiller. Edgecution fait quelque chose de plus discret. Le script
d'installation planifie une tâche Windows qui lance Microsoft Edge avec une
poignée d'options en ligne de commande, dont --load-extension pour
charger en marge sa propre extension et --headless=new pour que la fenêtre du
navigateur ne soit jamais dessinée à l'écran. Il y a désormais un processus
Microsoft Edge qui tourne sur la machine — un programme signé, de confiance,
parfaitement ordinaire — que l'utilisateur ne peut pas voir et n'a pas lancé.
À l'intérieur de ce navigateur invisible, l'extension fait deux choses. Elle émet un signal vers un serveur de commande et de contrôle (l'adresse que les attaquants utilisent pour envoyer des instructions) sur un WebSocket hébergé sur Amazon CloudFront, de sorte que le trafic ressemble à un navigateur ordinaire dialoguant avec un réseau de contenu ordinaire. Et elle relaie les commandes qu'elle reçoit jusqu'à l'hôte en utilisant Native Messaging.
Native Messaging est une véritable fonctionnalité Chromium, documentée, qui
fonctionne comme prévu. C'est le canal qui permet à une extension de navigateur
de dialoguer avec un programme de bureau installé sur la même machine — le
mécanisme par lequel une extension confie du travail à son application de bureau
compagnon, par exemple. Une extension appelle
chrome.runtime.sendNativeMessage, et le navigateur lance un petit programme
« hôte natif » nommé dans un fichier manifeste et lui transmet du JSON
par un tube. Edgecution enregistre son propre hôte natif : un
native_host.bat qui démarre une porte dérobée Python. À partir de là, la porte
dérobée peut exécuter des commandes shell, exécuter du PowerShell, exécuter du
Python arbitraire, lire et écrire des fichiers, lister les processus en cours,
et faire remonter des informations système le long de la chaîne — tout ce qu'il
faut pour être le courtier d'accès initial qui livre un point d'ancrage propre à
une équipe de rançongiciel. Zscaler relie le savoir-faire de cet opérateur à
l'opération de rançongiciel Payouts King.
Remarquez ce qui n'apparaît pas dans cette image : aucun nouveau service,
et aucun .exe déposé sur le disque qui attendrait d'être signalé. Ce qui
exécute les commandes de l'attaquant, c'est python.exe lancé par un fichier
batch lancé par Microsoft Edge — et le trafic qui transporte ces commandes,
c'est un navigateur qui dialogue avec un CDN. Il se fond dans la masse parce que
presque chacun de ses éléments est une chose légitime accomplissant une action
d'apparence légitime.
Les gros titres ont parlé d'une évasion du bac à sable. La version précise : l'hôte était déjà compromis à l'instant où l'employée a exécuté le script. Native Messaging n'est pas un trou que l'attaquant a percé ; c'est une porte livrée avec le navigateur, et l'attaquant l'a simplement franchie. La distinction indique où le vrai correctif doit se trouver. On ne s'extrait pas par un correctif d'une fonctionnalité qui fonctionne comme prévu. On change ce sur quoi la porte s'ouvre.
Ce que « le pont vers l'hôte » atteint dans Bromure.
Bromure est un navigateur axé sur la sécurité. Chaque onglet s'exécute à l'intérieur d'une VM Linux jetable (machine virtuelle — son propre ordinateur séparé) sur votre Mac, et la VM est effacée à la fermeture de la fenêtre. Ce seul choix d'architecture change ce que le reste de l'histoire Edgecution signifie sur votre machine.
Commençons par Native Messaging, le nœud de toute l'attaque. Dans un navigateur ordinaire, l'« hôte natif » auquel une extension parle est un programme de votre système d'exploitation — le même système d'exploitation qui contient vos fichiers, votre trousseau et vos partages réseau. Le pont est ouvert à tout : n'importe quelle extension peut enregistrer un hôte natif, et cet hôte peut être n'importe quoi. Tout le tour de passe-passe d'Edgecution repose sur le fait que le navigateur et vos fichiers se trouvent sur la même machine.
Dans Bromure, le navigateur n'est pas sur cette machine. Il s'exécute à l'intérieur de la VM jetable, de sorte que le système d'exploitation en dessous du navigateur est l'invité Linux jetable, pas macOS. Un hôte natif malveillant enregistré par quelque chose à l'intérieur de la VM serait un programme à l'intérieur de la VM — dialoguant avec un ordinateur qui ne contient rien de votre vie et cesse d'exister à la fermeture de la fenêtre. Le jeu restreint de ponts qui atteignent réellement macOS sont propriétaires et intégrés dans l'image disque en lecture seule : le pont d'identifiants, par exemple, remplit les passkeys et les mots de passe depuis le trousseau (Keychain) de votre Mac. Il n'y a aucun moyen pour une session en cours d'en ajouter un nouveau, parce que — et c'est la seconde moitié de la réponse — vous ne pouvez pas du tout installer d'extensions.
Le blocage n'est pas un réglage qu'une page d'hameçonnage peut vous faire
contourner par la parole. Dans la politique du navigateur Bromure,
chrome://extensions et le Web Store figurent sur une liste de blocage stricte,
et il n'y a pas de developer mode, pas de « load unpacked », aucune bascule
avancée pour s'en affranchir. Il n'y a pas non plus de moyen de faire ce
qu'Edgecution fait du côté hôte — lancer un second Chromium avec
--load-extension pointé sur votre vrai profil — parce que votre vrai profil
n'est pas un dossier sur votre Mac vers lequel un processus égaré pourrait diriger
un navigateur. Il est scellé à l'intérieur de la VM.
Il y a un dernier fil qu'il vaut la peine de tirer, parce que c'est le gain le moins coûteux de toute l'histoire. Le leurre est arrivé dans Microsoft Teams. Beaucoup de gens utilisent désormais Teams, Outlook et Slack comme applications web. Si cette habitude vit à l'intérieur d'un onglet Bromure jetable, le message d'usurpation, le lien et la fausse page de « mise à jour Outlook » atterrissent tous dans une session isolée dès la première seconde — et la chaîne que nous venons de parcourir n'atteint jamais l'étape trois, parce que la page qui veut vous faire exécuter un script se trouve dans une VM qui ne peut pas atteindre votre shell. L'attaque qui a besoin de l'hôte ne rencontre jamais l'hôte.
Ce que cela ne résout pas.
L'isolation n'est pas un sortilège, et ses limites méritent d'être énoncées clairement.
Une commande que vous exécutez vous-même
Le point d'entrée ici est un humain qui exécute un script — une commande batch ou PowerShell copiée dans le presse-papiers, ou un exécutable AutoHotKey. Si vous collez une commande dans votre propre shell et appuyez sur Entrée, aucune isolation de navigateur n'est dans cette boucle. Le partage du presse-papiers entre la VM et votre Mac est activé par défaut parce que le copier-coller fait partie de la navigation normale ; vous pouvez basculer un profil en isolation complète, et la couche anti-hameçonnage est là pour signaler la page avant que vous n'agissiez. Mais la règle durable est plus ancienne que tout cela : n'exécutez jamais une commande qu'une page web vous a tendue.
Des binaires Windows, une technique portable
Edgecution vise Microsoft Edge sous Windows, et ces fichiers précis ne s'exécuteront pas sur un Mac. C'est une maigre consolation, pas une défense. Native Messaging est aussi une fonctionnalité Chromium sur macOS, et la même semaine a apporté une campagne macOS qui convainquait les utilisateurs de coller une commande Terminal pour déposer le voleur d'informations Atomic. La technique est portable ; seuls les binaires sont spécifiques à l'OS.
Ce que Bromure change est plus restreint et, croyons-nous, plus utile qu'une promesse que rien de mauvais ne pourra jamais vous atteindre. Cela supprime les conditions qui rendaient Edgecution discret et durable. Le navigateur n'est plus un processus permanent et de confiance posté à côté de vos fichiers. Native Messaging n'est plus un pont ouvert à tout que n'importe quelle extension peut enregistrer — les extensions ne peuvent pas du tout être ajoutées, et le propre système d'exploitation du navigateur est jetable. Et la persistance, la chose même que toute cette architecture visait à obtenir, n'a rien dans quoi persister : fermez la fenêtre et la machine dans laquelle vivait la porte dérobée a disparu.
Le navigateur dangereux est celui que vous ne pouvez pas voir.
Pendant vingt ans, les conseils de sécurité sur les navigateurs ont porté sur la fenêtre devant vous — vérifiez la barre d'adresse, cherchez le cadenas, ne cliquez pas sur les liens étranges. Edgecution est un petit rappel que le navigateur qui cause les dégâts est de plus en plus celui que vous ne voyez jamais : un processus sans interface, démarré par une tâche planifiée, dialoguant avec un CDN, exécutant une extension que vous n'avez pas installée. On ne peut pas inspecter la barre d'adresse d'une fenêtre qui n'a jamais été dessinée.
La question n'est plus de savoir si la fenêtre devant vous est sûre. Elle est de savoir ce que n'importe quel navigateur de cette machine peut atteindre, s'il est retourné contre vous. Sur un ordinateur ordinaire, la réponse, ce sont vos fichiers, via un pont livré avec lui. Sur une machine sous Bromure, la réponse : une boîte Linux jetable qui oublie tout à l'instant où vous en avez fini avec elle. C'est la différence qui vaut la peine d'être obtenue. Installez-le, faites-en votre navigateur par défaut pour la moitié de votre navigation à laquelle vous ne faites pas confiance, et laissez les fenêtres cachées s'ouvrir sur quelque chose que vous alliez de toute façon jeter.