Nous sommes heureux de vous présenter une série de blogs d'analyse technique portant sur diverses vulnérabilités et expositions communes (CVE), identifiées et corrigées à l'aide de nos technologies avancées de détection des menaces.Toutes les recherches sont effectuées par les étudiants diplômés qui participent au programme Cybersecurity Fellowship ( OPSWAT ) lancé en septembre 2023.
Dans ce blog, nous expliquerons la CVE-2019-13720 de Google Chrome et comment les organisations peuvent se défendre contre les attaques d'exploitation de la CVE-2019-13720.
Qu'est-ce que Google Chrome et quand a-t-il été créé ?
Google Chrome est un navigateur web multiplateforme développé par Google et officiellement lancé le 2 septembre 2008. Il a été développé dans le cadre des efforts de Google pour créer un navigateur meilleur et plus moderne. Il offrait à l'époque de nombreuses nouvelles fonctionnalités, notamment la navigation par onglets, le mode de confidentialité et la synchronisation avec les services Google. Depuis sa sortie, il est devenu l'un des navigateurs web les plus populaires au monde. En 2021, Google Chrome devrait compter environ 3,2 milliards d'utilisateurs.
En raison de sa popularité, Google Chrome est devenu un point focal pour la recherche et les attaques, attirant à la fois les pirates éthiques et les pirates malveillants. Les vulnérabilités les plus courantes identifiées dans Google Chrome sont, entre autres, le déni de service, la fuite d'informations et l'exécution de code à distance. En ce qui concerne la vulnérabilité d'exécution de code à distance, il existe deux types de vulnérabilités dans Google Chrome : l'évasion du bac à sable et la non-évasion.
Qu'est-ce que CVE-2019-13720 ?
CVE-2019-13720 est une vulnérabilité de type Use After Free (UAF) de WebAudio dans Google Chrome avant la version 78.0.3904.87 qui permet à un attaquant distant d'exploiter potentiellement une corruption de tas via une page HTML conçue. Lorsque la victime accède à une page web malveillante ou ouvre une page HTML mal conçue sur un navigateur Google Chrome vulnérable, le code malveillant est exécuté sur le point de terminaison de la victime. Cette CVE a été rapportée pour la première fois par Anton Ivanov et Alexey Kulaev en 2019.
D'un point de vue technique, une vulnérabilité de type "use-after-free" peut être exploitée en raison d'une condition de course entre les threads Render et Audio dans le composant audio de Qt WebEngine. Cette vulnérabilité permet à des attaquants distants d'exécuter du code shell WebAssembly, ce qui peut compromettre l'appareil de la victime. Pour résoudre ce problème, tous les utilisateurs de Qt WebEngine doivent mettre à jour leur système avec la dernière version.
Les phases d'attaque
Les attaquants créent une URL spéciale avec le code HTML malveillant et envoient un courriel d'hameçonnage avec le lien à la victime. Lorsque la victime ouvre le courriel et clique sur le lien, le code malveillant est exécuté et permet à l'attaquant de prendre le contrôle du système affecté. Les détails de la tactique du code à distance, tels qu'ils apparaissent dans un document HTML, peuvent être consultés ici.
Que sont les vulnérabilités de type Use After Free (UAF) et heap spray ?
Une vulnérabilité UAF est un type de faille de sécurité qui se produit lorsqu'un programme continue d'utiliser la mémoire après qu'elle a été libérée. Cela peut avoir diverses conséquences négatives, notamment la corruption de données, l'exécution de codes arbitraires et le blocage du système.
La pulvérisation du tas est une technique de livraison de données utiles qui consiste à écrire plusieurs octets à différents endroits du tas. Il s'agit d'injecter une charge utile élaborée (c'est-à-dire des données nuisibles) dans le tas de mémoire, en veillant à ce que le flux d'exécution saute dans la mémoire pulvérisée plutôt que dans le code d'origine de l'application. L'objectif de cette attaque est généralement de prendre le contrôle du registre EIP.
Qu'est-ce que WebAssembly ?
WebAssembly, souvent abrégé en Wasm, est un nouveau format d'instructions binaires qui sert de cible portable pour la compilation de langages de haut niveau tels que C/C++, leur permettant de fonctionner à une vitesse proche de la normale dans le moteur JavaScript d'un navigateur web.
Cependant, comme WebAssembly peut être compilé à partir de langages qui ne sont pas sûrs pour la mémoire, tels que C/C++, des vulnérabilités de codage courantes telles que les débordements de mémoire tampon ou les vulnérabilités de chaînes de format peuvent être introduites dans les binaires WebAssembly compilés de manière croisée. Cette possibilité d'inclure des vulnérabilités dans les modules WebAssembly a augmenté la surface d'attaque des applications web contemporaines.
Qu'est-ce qu'une vulnérabilité de type "race condition" ?
Une vulnérabilité de type "race condition" dans un logiciel survient lorsque plusieurs processus ou threads tentent d'accéder simultanément à une ressource partagée, ce qui entraîne des résultats imprévisibles ou des perturbations opérationnelles en raison du moment de l'accès. Lorsqu'un programme présente une vulnérabilité de type "race condition", cela peut entraîner divers problèmes tels que le blocage de l'application, la corruption des données, des résultats incorrects ou des incohérences. Les attaquants peuvent exploiter cette vulnérabilité pour obtenir un accès non autorisé, faire fuir des informations, élever les privilèges ou provoquer des pannes du système.
Classée dans la catégorie des vulnérabilités de type "race condition", la vulnérabilité TOCTTOU exploite l'écart de temps entre la vérification et l'utilisation d'une ressource.
Comment fonctionne CVE-2019-13720 ?
Pour exploiter cette vulnérabilité, le chercheur attache du code JavaScript à un fichier HTML. Lorsqu'un utilisateur lance le fichier HTML, le script tente de trouver l'adresse de la fuite en créant deux threads (thread principal et thread audio) qui traitent les mêmes données de la mémoire tampon. L'adresse de l'objet temporary_buffer_object dans ReverbConvolverStage est ensuite utilisée pour obtenir le pointeur du feedforward_array dans IIRFilterNode (qui partage la même super page que le Convolver). Par la suite, le chercheur tente d'obtenir le pointeur du feedforward_array dans le second trigger UAF.
WebAssembly gère l'exécution du code shell. Pour permettre l'exécution du shellcode, le chercheur tente de libérer l'IIRFilter et écrit dans le GCPreventer jusqu'à ce qu'il prenne le contrôle de l'endroit où les nouvelles allocations sont faites sans avoir besoin de sprays. Enfin, le chercheur écrit le shellcode dans la région Just-In Time (JIT) de la mémoire. Par conséquent, dès l'ajout d'un événement d'erreur du lecteur de fichiers, le module WebAssembly exécutera le code shell.
Pour exécuter le code shell associé à cette vulnérabilité, l'utilisateur doit désactiver le bac à sable dans la version vulnérable de Chrome.
Lorsque le code shell est exécuté, il ouvre automatiquement les services Notepad sur l'appareil de la victime.
Méthode d'assainissement
MetaDefender EndpointMetaDefender Endpoint, une solution de sécurité pour les terminaux conçue par OPSWAT, permet aux utilisateurs de détecter et de défendre leurs systèmes contre ces attaques. Une fois que l'utilisateur a désactivé la fonction Privacy Sandbox (--no-sandbox), MetaDefender Endpoint peut détecter les CVE et appliquer les derniers correctifs de Google Chrome. Après cela, l'utilisateur peut mettre à jour Google Chrome manuellement ou activer la fonction "mise à jour automatique" sous l'onglet Patch Management pour permettre à OPSWAT MetaDefender Endpoint mettre à jour automatiquement le navigateur dès que de nouveaux correctifs sont disponibles.
Pour éviter d'être exposés à des codes malveillants, les utilisateurs doivent utiliser des outils de filtrage de courrier électronique pour détecter les attaques de phishing et éviter de cliquer sur des URL inconnues dans les courriers électroniques.
MetaDefender Endpoint - Principales caractéristiques et avantages du produit
- Examiner et remédier aux applications à risque. Les applications vulnérables ou obsolètes peuvent être visualisées dans l'interface utilisateur de MetaDefender Endpoint .
- Vérifiez que la protection anti-malware est correctement configurée sur le système d'exploitation.
- Veiller au respect des normes de sécurité de l'organisation.
- Assurance du cryptage du disque dur.
- Vérification des correctifs du système d'exploitation.
- Plusieurs options pour l'analyse des logiciels malveillants et l'annonce de l'absence de logiciels malveillants sur les points finaux.
MetaDefender Endpoint for Endpoint Vulnerability and Application Patching peut être téléchargé ici.
Référence
- https://nvd.nist.gov/vuln/detail/CVE-2019-13720
- https://bugs.chromium.org/p/chromium/issues/detail?id=1019226
- https://www.w3.org/TR/webaudio/
- https://security.gentoo.org/glsa/202004-04
- https://www.cve.org/CVERecord?id=CVE-2019-13720
- https://packetstormsecurity.com/files/167066/Google-Chrome-78.0.3904.70-Remote-Code-Execution.html
- https://devopedia.org/race-condition-software
- https://webassembly.org/
- https://www.researchgate.net/figure/WebAssembly-high-level-architecture_fig1_360232889
- https://www.researchgate.net/publication/331990070_Native_Web_Audio_API_Plugins
- https://whitehat.vn/threads/gioi-thieu-ky-thuat-khai-thac-exploit-heap-spray.5056/
- https://www.opswat.com/