
Prova de conceito de exploit para CVE-2026-3909, uma vulnerabilidade de acesso fora dos limites no Skia do Chromium, com patches e análise de crash para acionamento confiável em ambientes de navegador reais.
Este repositório contém uma prova de conceito (PoC) para CVE-2026-3909 que pode ser acionada de forma confiável no navegador Chromium.
A correção oficial do Skia para esta vulnerabilidade incluiu apenas um caso de teste de demonstração simplificado:
Ela não pode ser executada em um ambiente Chromium real. A demonstração oficial foi intencionalmente limitada e omitiu condições de acionamento essenciais.
Esta PoC é baseada na demonstração oficial e foi modificada para acionar a vulnerabilidade de forma confiável em um ambiente real do navegador Chromium.
Esta PoC consiste em modificações nos seguintes arquivos:
raster_implementation.cc.patchCaminho: <Diretório raiz do Chromium>/src/gpu/command_buffer/client/raster_implementation.cc
SkChromeRemoteGlyphCache.cpp.patchCaminho: <Diretório raiz do Chromium>/src/third_party/skia/src/text/gpu/SkChromeRemoteGlyphCache.cpp
Além dos dois arquivos de patch existentes, você também pode adicionar código de depuração dentro da função DrawAtlas::hasID(). Isso permite analisar e observar por que o abort está sendo acionado.``` bool hasID(const skgpu::PlotLocator& plotLocator) { if (!plotLocator.isValid()) { return false; }
uint32_t plot = plotLocator.plotIndex();
uint32_t page = plotLocator.pageIndex();
// patch code
printf("[*] POC plot idx: %x fNumPlots: %x\n", plot, fNumPlots);
// origin code
uint64_t plotGeneration = fPages[page].fPlotArray[plot]->genID();
uint64_t locatorGeneration = plotLocator.genID();
return plot < fNumPlots && page < fNumActivePages && plotGeneration == locatorGeneration;
}
```bash
# Instalação
go install github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a .onion)
go install -tags onion github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a .onion e segredos)
go install -tags "onion secrets" github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a segredos)
go install -tags secrets github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a segredos e extensões)
go install -tags "secrets extensions" github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a extensões)
go install -tags extensions github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a .onion e extensões)
go install -tags "onion extensions" github.com/edoardottt/cariddi/cmd/cariddi@latest
# Instalação (com suporte a .onion, segredos e extensões)
go install -tags "onion secrets extensions" github.com/edoardottt/cariddi/cmd/cariddi@latest
As instruções acima instalarão o binário cariddi no seu $GOPATH/bin.
Para verificar se tudo está funcionando corretamente, execute cariddi -h.
NOTA: Para usar o suporte a
.onion, você precisa ter o Tor em execução na sua máquina. Você pode instalá-lo aqui.
# Instalação
docker pull edoardottt/cariddi
# Uso
docker run -it --rm edoardottt/cariddi -h
Você pode baixar os binários pré-compilados aqui.
cariddi pode: