Skip to content
KitploitKITPLOIT
FerramentasBlog
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
Revenant — CVE-2026-74943 · Uso após liberação no RasterImage do Firefox (sec-high) | Kitploit
Ferramentas/GitHubGitHub/defineid/revenant
Análise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança WebAnálise de BináriosExploração de Binários
GitHubdefineid/revenant

Revenant

CVE-2026-74943 · Uso após liberação no RasterImage do Firefox (sec-high)

Ver Repositório
há 2 diasAinda 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

Revenant

CVE-2026-74943 · Uso após liberação no Firefox RasterImage

Severidade (segurança): alta. CWE 416. Corrigido no Firefox 154 e no ESR 140.14. Bugzilla 2057308. Acessível a partir de uma página web comum, sem interação do usuário.

Resumo

O Firefox mantém superfícies de imagem decodificadas em um SurfaceCache. O cache mantém um ponteiro bruto não proprietário para a imagem proprietária. Quando uma superfície é removida, o cache notifica essa imagem em uma thread de decodificação. A notificação lia o sinalizador atômico mIsBeingDestroyed e somente depois capturava RefPtr<RasterImage> image = this. Ler o sinalizador e capturar a referência são duas operações separadas. A thread principal pode descartar a referência final entre elas. Um objeto em processo de destruição é ressuscitado e então lido após ser liberado.

O interleaving

root@kitploit:~
Decoder thread (holds the SurfaceCache lock)      Main thread
OnSurfaceDiscarded reads mIsBeingDestroyed = false
                                                  Release drops the refcount to zero and commits delete
                                                  ~RasterImage sets the flag then blocks on the cache lock
RefPtr image = this  (AddRef from zero to one)
queues the runnable and releases the lock
                                                  the destructor finishes and frees the 248 byte object
the runnable runs and reads freed mProgressTracker  ==> use after free

O sinalizador de uma correção anterior estreita a janela. Não consegue fechá-la. Observar o sinalizador como falso não prova que a contagem de referências ainda está acima de zero, porque o sinalizador é definido dentro do destrutor estritamente após a contagem já ter chegado a zero.

No binário

As duas instruções que carregam a falha aparecem claramente na função compilada. A verificação do sinalizador e o incremento da contagem de referências em this são separados.

Desmontagem de RasterImage::OnSurfaceDiscarded

Reproduzir

Use uma compilação ASAN de uma versão afetada. Aplique as preferências em prefs.js para que o cache de superfícies permaneça minúsculo e a thread de decodificação remova superfícies constantemente. Carregue uaf-reduced.html e deixe-o em loop. Esta é uma corrida de temporização entre threads, portanto reproduz de forma intermitente.

root@kitploit:~
AddressSanitizer: heap-use-after-free
READ of size 8, 8 bytes into a freed 248-byte RasterImage
  use   : RasterImage::OnSurfaceDiscardedInternal  (main thread)
  freed : RasterImage::Release()  via imgRequest teardown
  alloc : ImageFactory::CreateRasterImage()  on the ImageIO thread

Impacto

Um uso após liberação de heap no processo de conteúdo. É acessível a partir de uma página web e não requer cliques ou permissões. Não foi demonstrada execução controlada nas compilações testadas. O objeto é ressuscitado e posteriormente liberado uma segunda vez.

Correção

OnSurfaceDiscarded não referencia mais a imagem. Ela captura uma referência forte ao ProgressTracker, cuja contagem de referências é separada, e recupera a imagem na thread principal através da referência inversa fraca do tracker. A recuperação usa uma adição atômica se o objeto estiver vivo. O sinalizador obsoleto é removido.

Crédito

Abdulaziz Alasaiqah · https://azoz.my/writeups.html

Baixar ferramenta