Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-9999-exploit — Prova de conceito e fuzzer GLSL para o CVE-2026-9999 no backend WebGL ANGLE/Metal do Chrome, com fingerprinting de build, shaders selecionados e captura de artefatos de crash. | Kitploit
Ferramentas/GitHubGitHub/josephfarah-ciso/cve-2026-9999-exploit
Análise de VulnerabilidadesExploraçãoSegurança WebFuzzing
GitHubjosephfarah-ciso/cve-2026-9999-exploit

CVE-2026-9999-exploit

Prova de conceito e fuzzer GLSL para o CVE-2026-9999 no backend WebGL ANGLE/Metal do Chrome, com fingerprinting de build, shaders selecionados e captura de artefatos de crash.

Ver Repositório
11há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-9999 — Harness de caça a PoC WebGL ANGLE/Metal do Chrome (macOS)


1. Resumo da vulnerabilidade

CampoValor
CVECVE-2026-9999
Fornecedor / produtoGoogle Chrome
AfetadoChrome < 148.0.7778.216, somente macOS [1]
Corrigido em148.0.7778.216 [1]
ImpactoExecução arbitrária de código dentro de um sandbox por meio de uma página HTML especialmente criada [1]
Severidade ChromiumAlta [1]
CVSS 3.1 (CISA-ADP)8.8 HIGH — CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H [1]
Avaliação CVSS NVD (NIST)Ainda não fornecida [1]
CWECWE-269 — Gerenciamento inadequado de privilégios (enriquecimento pela CISA-ADP) [1]
CISA SSVC (2026-05-29)exploitation: none, automatable: no, technicalImpact: total [1]
Publicado / última modificação2026-05-28 / 2026-07-21 [1]
Causa raizNão pública — a issue 513364480 do Chromium mostra "Permissions Required" [1]

Implicação para a cadeia de ataque: a execução de código "dentro de um sandbox" [1] significa que um atacante obtém o controle de um processo em sandbox (provavelmente o processo de GPU). Uma tomada completa do navegador exigiria adicionalmente uma fuga de sandbox separada que não faz parte deste CVE.


2. Estratégia e hipótese (avaliação própria do analista — tratar como não confirmada)

O seguinte é uma inferência a partir do registro público, não fatos confirmados:

  • ANGLE é o mecanismo que o Chrome usa para traduzir GLSL do WebGL para APIs gráficas da plataforma — no macOS, para Metal. Uma "página HTML especialmente criada" [1] que chega ao ANGLE quase certamente significa conteúdo WebGL — ou seja, shaders controlados pelo atacante e/ou estado WebGL manipulado pelo backend Metal.
  • A CWE-269 (Gerenciamento inadequado de privilégios) [1] combinada com o impacto contido no sandbox sugere que a camada ANGLE/GPU falha ao restringir adequadamente algo controlado pelo atacante durante a tradução de shaders ou a validação de estado.
  • Historicamente, esse componente produziu bugs de segurança de memória por meio de casos extremos no tradutor GLSL (indexação constante fora dos limites, dimensionamento de arrays com estouro de inteiro, interações swizzle/discard, blocos uniform superdimensionados, estouros de desenrolamento de loop).

Portanto, o harness exercita exatamente esses padrões e então muta GLSL em escala para caçar um crash no lado do renderizador (WebGL context lost = crash do processo de GPU ou kill pelo watchdog).


3. Conteúdo do repositório

ArquivoFinalidade
cve-2026-9999-poc.htmlHarness PoC autocontido (sem dependências): fingerprinting de build, 8 shaders selecionados de estresse do tradutor, fuzzer GLSL com captura de artefatos de crash
README.mdEste arquivo

4. Requisitos

  • Uma máquina macOS ou VM com suporte a Metal que você esteja autorizado a derrubar deliberadamente. O CVE é específico do macOS [1]; testar no Windows/Linux não exercitará o backend ANGLE Metal vulnerável.
  • Build do Chrome < 148.0.7778.216 [1] (veja §5).
  • Suporte a GPU / Metal de hardware. Sem isso, o Chrome recorre ao SwiftShader (renderização por software) e o caminho vulnerável nunca é alcançado — veja a verificação na §5.4.
  • Python 3 (opcional, apenas para o auxiliar de consulta de versão na §5.1 e para um servidor HTTP local).

5. Configuração do ambiente

5.1 Método A — Chrome for Testing (recomendado)

O arquivo Chrome for Testing do Google fornece builds fixados em versões específicas que não são atualizados automaticamente. Encontre o build vulnerável mais recente (tudo abaixo de 148.0.7778.216 é afetado [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

Baixe para a sua arquitetura (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

Descompacte em uma pasta de laboratório (ex.: ~/lab/, não /Applications) e execute a partir dela.

5.2 Método B — snapshots do Chromium

Se um build específico não estiver disponível no Chrome for Testing, use o arquivo de snapshots do Chromium (commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/ para Intel, .../Mac_Arm/ para Apple Silicon), indexado por posição de commit — mapeie a versão vulnerável para uma posição de branch via chromium-history e baixe o snapshot mais próximo. Snapshots também não são atualizados automaticamente.

5.3 Bloquear atualizações automáticas (apenas se estiver usando um build oficial de outra fonte)

Encerre os agentes de atualização do Keystone e bloqueie googleupdate.googleapis.com; caso contrário, o build de teste se atualizará silenciosamente durante a noite. Não é necessário para builds do Chrome for Testing.

5.4 Verifique se você está no backend Metal (crítico)

Sem Metal, o Chrome renderiza WebGL por software (SwiftShader) e o backend ANGLE Metal nunca é acionado. No console da página do PoC, execute:

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

Você também pode confirmar em chrome://gpu. Convidados de Parallels/VMware Fusion com virtualização de GPU geralmente funcionam; configurações mínimas de QEMU/UTM frequentemente recorrem ao SwiftShader.


6. Passos para reproduzir

  1. Isole o alvo. Snapshot de VM ou conta macOS dedicada. Nunca faça login nem ative a sincronização no build vulnerável; trate-o como comprometido por design. (O impacto do CVE é a execução de código dentro de um sandbox que ocorre simplesmente ao visitar uma página da web [1].)
  2. Instale o build vulnerável conforme a §5 e verifique se a §5.4 passa.
  3. Sirva o PoC (abra o arquivo diretamente ou):
    cd <repo dir>
    python3 -m http.server 8000
    # then browse to http://localhost:8000/cve-2026-9999-poc.html
    
  4. Verifique a linha de fingerprint impressa ao carregar. Ela deve informar que o build é anterior a 148.0.7778.216 e, portanto, potencialmente vulnerável [1]. Em builds corrigidos, o harness avisa para que você não desperdice ciclos.
  5. Clique em 1) Run curated triggers. Oito shaders exercitam os padrões do tradutor descritos na §2 (indexação constante fora dos limites, dimensionamento de arrays com estouro de inteiro, indexação dinâmica de matrizes, estresse de desenrolamento de loop, arrays de arrays, discard/swizzle, casos extremos de pré-processador, UBOs superdimensionados). Fique atento a resultados [!!] e eventos de perda de contexto.
  6. Clique em 2) Fuzz. Shaders GLSL mutados são compilados, vinculados, renderizados e lidos de volta em um loop. Observe o log em busca de CONTEXT LOST.
  7. Em caso de crash, o shader causador é persistido em localStorage. Recupere-o:
    localStorage.getItem("cve20269999_poc_fs");      // crashing fragment shader
    localStorage.getItem("cve20269999_crashes");     // crash event log
    
  8. Minimize e re-teste o shader com crash isoladamente (5+ execuções consecutivas) para confirmar o determinismo.
  9. Confirme a causa raiz com um build ASAN antes de atribuir qualquer coisa ao CVE-2026-9999 — veja §8.
Baixar ferramenta