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
spring-ai-sibling-loop-poc — # Reprodução mínima para o OOM de auto-loop entre irmãos do ParagraphManager do Spring AI (correção incompleta do CVE-2026-47851) | Kitploit
Ferramentas/GitHubGitHub/tangyaofq/spring-ai-sibling-loop-poc
Análise de VulnerabilidadesExploraçãoPapers e PesquisaAprendizado e EducaçãoRecursos Curados
GitHubtangyaofq/spring-ai-sibling-loop-poc

spring-ai-sibling-loop-poc

# Reprodução mínima para o OOM de auto-loop entre irmãos do ParagraphManager do Spring AI (correção incompleta do CVE-2026-47851)

Ver Repositório
há 1 diaAinda 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

Spring AI PDF Reader — PoC de auto-loop entre irmãos (correção incompleta do CVE-2026-47851)

Reprodução mínima de um loop infinito / OOM em org.springframework.ai.reader.pdf.config.ParagraphManager de org.springframework.ai:spring-ai-pdf-document-reader.

Reportado como um GitHub Security Advisory privado para spring-projects/security-advisories. Não é uma divulgação pública. Este repositório é compartilhado apenas para divulgação responsável e verificação.


Vulnerabilidade

ParagraphManager.generateParagraphs itera sobre irmãos do outline via getNextSibling() sem detecção de ciclos e sem limite de iterações. Um PDF cujo item do outline declara seu próprio ponteiro /Next (um ) faz o loop nunca terminar; cada iteração adiciona um novo à lista do pai, esgotando a heap da JVM com .

auto-loop entre irmãos
Paragraph
children
OutOfMemoryError

A verificação adicionada na correção do CVE-2026-47851 (limite de profundidade + conjunto de visitados) apenas cobre ciclos de firstChild, não auto-loops entre irmãos: a profundidade nunca cresce além do nível 1, e o conjunto de visitados apenas registra firstChild, então o irmão nunca entra nele. A variante, portanto, reproduz-se também na versão mais recente (2.0.1).

ItemValor
Componente afetadoorg.springframework.ai:spring-ai-pdf-document-reader
Versões afetadas< 2.0.2 (todas as versões conhecidas; 1.x e 2.0.0 nem sequer contêm a correção do CVE-2026-47851)
Classe vulnerávelorg.springframework.ai.reader.pdf.config.ParagraphManager
Gatilhonew ParagraphPdfDocumentReader(resource) com um PDF malicioso
ImpactoOutOfMemoryError, término do processo — DoS
Severidade7.5 ALTA — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
RelacionadoCVE-2026-47851 (correção incompleta)

Arquivos

root@kitploit:~
pom.xml                          — build Maven, depende de spring-ai-pdf-document-reader:2.0.1
src/main/java/ReleaseVerify.java — código real do usuário (chamada oficial da API)
poc/selfloop.pdf                 — PDF malicioso de 396 bytes (auto-loop entre irmãos)
poc/normal.pdf                   — PDF de controle de 384 bytes (idêntico, exceto sem autorreferência /Next)

Os dois PDFs diferem em exatamente 12 bytes — selfloop.pdf tem um /Next 5 0 R extra no item do outline, apontando o item para si mesmo como seu próximo irmão.


Build

root@kitploit:~
mvn -q package

Produz target/springai-release-verify-1.0.0.jar (fat jar, inclui PDFBox 3.0.7).

Reproduzir

root@kitploit:~
# PDF malicioso — OOM em segundos
java -Xmx96m -cp target/springai-release-verify-1.0.0.jar ReleaseVerify para poc/selfloop.pdf

# PDF de controle — conclui normalmente em <100ms
java -Xmx96m -cp target/springai-release-verify-1.0.0.jar ReleaseVerify para poc/normal.pdf

O OOM ocorre dentro do construtor de ParagraphPdfDocumentReader (que invoca new ParagraphManager(document)); get() nunca é alcançado.


Escopo deste repositório

Este repositório existe apenas para apoiar a verificação do advisory reportado privadamente. Os arquivos PDF são inofensivos para o PDFBox e qualquer outro parser de PDF conforme; eles disparam apenas um erro lógico na travessia de ParagraphManager do Spring AI. Não use contra sistemas que você não possui.

Baixar ferramenta