Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-9999-exploit — Preuve de concept et fuzzer GLSL pour CVE-2026-9999 dans le backend WebGL ANGLE/Metal de Chrome, avec fingerprinting de build, shaders sélectionnés et capture d'artefacts de crash. | Kitploit
Outils/GitHubGitHub/josephfarah-ciso/cve-2026-9999-exploit
Analyse des VulnérabilitésExploitationSécurité WebFuzzing
GitHubjosephfarah-ciso/cve-2026-9999-exploit

CVE-2026-9999-exploit

Preuve de concept et fuzzer GLSL pour CVE-2026-9999 dans le backend WebGL ANGLE/Metal de Chrome, avec fingerprinting de build, shaders sélectionnés et capture d'artefacts de crash.

Voir le dépôt
11il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-9999 — Harnais de chasse aux PoC WebGL ANGLE/Metal pour Chrome (macOS)


1. Résumé de la vulnérabilité

ChampValeur
CVECVE-2026-9999
Éditeur / produitGoogle Chrome
Versions concernéesChrome < 148.0.7778.216, macOS uniquement [1]
Corrigé dans148.0.7778.216 [1]
ImpactExécution de code arbitraire dans un sandbox via une page HTML spécialement conçue [1]
Sévérité ChromiumÉlevée [1]
CVSS 3.1 (CISA-ADP)8.8 ÉLEVÉE — CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H [1]
Évaluation CVSS NVD (NIST)Pas encore fournie [1]
CWECWE-269 — Gestion inappropriée des privilèges (enrichissement par CISA-ADP) [1]
CISA SSVC (2026-05-29)exploitation: none, automatable: no, technicalImpact: total [1]
Publié / Dernière modification2026-05-28 / 2026-07-21 [1]
Cause racineNon publique — le ticket Chromium 513364480 affiche « Permissions Required » [1]

Implication pour la chaîne d'attaque : l'exécution de code « dans un sandbox » [1] signifie qu'un attaquant prend le contrôle d'un processus sandboxé (le plus vraisemblablement le processus GPU). Une prise de contrôle complète du navigateur nécessiterait en outre une évasion de sandbox distincte qui ne fait pas partie de cette CVE.


2. Stratégie et hypothèse (évaluation propre de l'analyste — à considérer comme non confirmée)

Ce qui suit est une déduction fondée sur les informations publiques, et non des faits confirmés :

  • ANGLE est le moteur que Chrome utilise pour traduire le GLSL de WebGL vers les API graphiques de la plateforme — sur macOS, vers Metal. Une « page HTML spécialement conçue » [1] qui atteint ANGLE signifie presque certainement du contenu WebGL — c'est-à-dire des shaders contrôlés par l'attaquant et/ou un état WebGL géré par le backend Metal.
  • CWE-269 (Gestion inappropriée des privilèges) [1], combinée à un impact contenu dans le sandbox, suggère que la couche ANGLE/GPU ne parvient pas à correctement contraindre un élément contrôlé par l'attaquant lors de la traduction de shaders ou de la validation d'état.
  • Historiquement, ce composant a produit des bugs de sécurité mémoire via des cas limites dans le traducteur GLSL (indexation constante hors limites, dimensionnement de tableaux par dépassement d'entier, interactions swizzle/discard, blocs uniform surdimensionnés, explosions de déroulage de boucles).

Le harnais exerce donc exactement ces motifs, puis mute le GLSL à grande échelle pour traquer un crash côté moteur de rendu (contexte WebGL perdu = crash du processus GPU ou mise à mort par le watchdog).


3. Contenu du dépôt

FichierRôle
cve-2026-9999-poc.htmlHarnais de PoC autonome (aucune dépendance) : empreinte de build, 8 shaders de stress du traducteur soigneusement sélectionnés, fuzzer GLSL avec capture des artefacts de crash
README.mdCe fichier

4. Prérequis

  • Une machine macOS ou une VM compatible Metal que vous êtes autorisé à faire crasher délibérément. La CVE est spécifique à macOS [1] ; les tests sous Windows/Linux n'exerceront pas le backend ANGLE Metal vulnérable.
  • Un build de Chrome < 148.0.7778.216 [1] (voir §5).
  • GPU matériel / prise en charge de Metal. Sans cela, Chrome retombe sur SwiftShader (rendu logiciel) et le chemin vulnérable n'est jamais atteint — voir la vérification en §5.4.
  • Python 3 (facultatif, uniquement pour l'outil de recherche de version en §5.1 et un serveur HTTP local).

5. Configuration de l'environnement

5.1 Méthode A — Chrome for Testing (recommandée)

L'archive Chrome for Testing de Google fournit des builds épinglés à une version qui ne se mettent pas à jour automatiquement. Trouvez le build vulnérable le plus récent (toutes les versions inférieures à 148.0.7778.216 sont concernées [1]) :

import json, urllib.request
data = json.load(urllib.request.urlopen(
  "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json"))
key = lambda v: tuple(int(x) for x in v.split('.'))
fix = (148, 0, 7778, 216)
cands = sorted((v["version"] for v in data["versions"]
                if "chrome" in v.get("downloads", {}) and key(v["version"]) < fix), key=key)
print(cands[-5:])   # pick the last (newest vulnerable) entry

Téléchargez pour votre architecture (uname -m) :

# Apple Silicon
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-arm64/chrome-mac-arm64.zip
# Intel
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-x64/chrome-mac-x64.zip

Décompressez dans un dossier de laboratoire (par ex. ~/lab/, pas /Applications) puis lancez à partir de là.

5.2 Méthode B — Instantanés Chromium

Si un build précis manque dans Chrome for Testing, utilisez l'archive d'instantanés Chromium (commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/ pour Intel, .../Mac_Arm/ pour Apple Silicon), indexée par position de commit — faites correspondre la version vulnérable à une position de branche via chromium-history, puis récupérez l'instantané le plus proche. Les instantanés ne se mettent pas non plus à jour automatiquement.

5.3 Bloquer les mises à jour automatiques (uniquement si vous utilisez un build estampillé provenant d'une autre source)

Tuez les agents de mise à jour Keystone et bloquez googleupdate.googleapis.com, sinon le build de test se corrigera silencieusement tout seul pendant la nuit. Inutile pour les builds Chrome for Testing.

5.4 Vérifier que vous êtes sur le backend Metal (critique)

Sans Metal, Chrome rend le WebGL par logiciel (SwiftShader) et le backend ANGLE Metal n'est jamais sollicité. Dans la console de la page PoC, exécutez :

const c = document.createElement('canvas'), g = c.getContext('webgl2');
const x = g.getExtension('WEBGL_debug_renderer_info');
console.log(g.getParameter(x.UNMASKED_RENDERER_WEBGL));
// Good:  contains "ANGLE Metal Renderer"
// Bad:   contains "SwiftShader" -> the vulnerable path is NOT being exercised

Vous pouvez aussi le confirmer sur chrome://gpu. Les invités Parallels/VMware Fusion avec virtualisation GPU fonctionnent généralement ; les configurations minimales QEMU/UTM retombent souvent sur SwiftShader.


6. Étapes de reproduction

Télécharger l’outil