Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — Proof-of-concept che dimostra il bypass dell'iniezione SQL CVE-2026-17351 nell'AI Assistant di pgAdmin 4 tramite il differenziale dei lexer sqlparse/PostgreSQL, inclusa la veicolazione di un'iniezione di prompt indiretta. | Kitploit
Strumenti/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza dell'IASicurezza dei Database
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Proof-of-concept che dimostra il bypass dell'iniezione SQL CVE-2026-17351 nell'AI Assistant di pgAdmin 4 tramite il differenziale dei lexer sqlparse/PostgreSQL, inclusa la veicolazione di un'iniezione di prompt indiretta.

Vedi Repository
20 giorni faNon ancora revisionato

CVE-2026-17351 — Bypass di sola lettura dell'AI Assistant di pgAdmin 4 tramite differenziale di lexer

PoC per CVE-2026-17351, un bypass critico (CVSS 9.0) di SQL injection nell'AI Assistant di pgAdmin 4.

Riepilogo della vulnerabilità

Le versioni 9.13-9.16 di pgAdmin 4 usano la libreria sqlparse di Python per validare che le query SQL generate dagli LLM siano istruzioni singole e di sola lettura. Con standard_conforming_strings = on di PostgreSQL (il default dal PostgreSQL 9.1), sqlparse e PostgreSQL non concordano su come vengono gestite le barre rovesciate all'interno dei literal di stringa. Ciò consente a un attaccante di creare un payload che supera la validazione di sqlparse come singola SELECT ma che in PostgreSQL viene eseguito come quattro istruzioni — inclusa una COMMIT che termina la transazione di sola lettura e successive istruzioni di scrittura.

Payload

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • sqlparse vede una SELECT con un grande literal di stringa → la validazione passa
  • PostgreSQL vede: SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --'

Consegna

Il payload viene consegnato tramite iniezione indiretta di prompt: l'attaccante lo inserisce all'interno di un oggetto del database (commento di colonna, valore di riga, definizione di vista) che l'AI Assistant legge. Quando un utente legittimo pone una domanda, l'LLM legge i dati avvelenati e li emette come chiamata allo strumento execute_sql_query.

File

FileDescrizione
poc.pyDimostra il differenziale del lexer: la validazione di sqlparse passa, il protocollo di query semplice esegue più istruzioni, il protocollo di query esteso lo blocca
prompt_injection_demo.pySimula l'intera catena di attacco: payload inserito come commento di colonna → LLM simulato lo legge → la validazione passa → esecuzione

Requisiti

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

È inoltre necessario un'istanza PostgreSQL in esecuzione (14+):

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

Utilizzo

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

La correzione (pgAdmin 9.17)

La correzione forza il protocollo di query esteso di psycopg3:

  1. impostando conn.prepare_threshold = 0 sulla connessione dedicata dell'LLM
  2. passando prepare=True a cursor.execute()

Questo rende il passo Parse di PostgreSQL l'autorità sui confini delle istruzioni — rifiuta strutturalmente il testo multi-istruzione indipendentemente da come un lexer lato client lo classifica.

Riferimenti

  • CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-17351
  • Issue GitHub: https://github.com/pgadmin-org/pgadmin4/issues/10192
  • Commit di correzione: https://github.com/pgadmin-org/pgadmin4/commit/ef76102bcd1cdb544eb9b4ef18d3382f22b76752
  • CVE originale (CVE-2026-12045): https://nvd.nist.gov/vuln/detail/CVE-2026-12045
  • Segnalatore: Kai Aizen (SnailSploit)

Dichiarazione di non responsabilità

Questo PoC è solo per scopi educativi e di test autorizzati.

Scarica lo strumento