Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — Preuve de concept démontrant le contournement de l'injection SQL CVE-2026-17351 dans l'assistant IA de pgAdmin 4 via le différentiel de lexer sqlparse/PostgreSQL, y compris la distribution d'injections indirectes de prompt. | Kitploit
Outils/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité de l'IASécurité des Bases de Données
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

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

Preuve de concept démontrant le contournement de l'injection SQL CVE-2026-17351 dans l'assistant IA de pgAdmin 4 via le différentiel de lexer sqlparse/PostgreSQL, y compris la distribution d'injections indirectes de prompt.

Voir le dépôt
il y a 20 joursPas encore vérifié
Partager

CVE-2026-17351 — Contournement de la lecture seule de l'assistant IA de pgAdmin 4 via une différence de lexer

PoC pour CVE-2026-17351, un contournement critique (CVSS 9.0) d'injection SQL dans l'assistant IA de pgAdmin 4.

Résumé de la vulnérabilité

Les versions 9.13 à 9.16 de pgAdmin 4 utilisent la bibliothèque sqlparse de Python pour valider que les requêtes SQL générées par LLM sont des instructions uniques en lecture seule. Avec standard_conforming_strings = on de PostgreSQL (la valeur par défaut depuis PostgreSQL 9.1), sqlparse et PostgreSQL ne sont pas d'accord sur la façon dont les barres obliques inverses dans les littéraux de chaîne sont traitées. Cela permet à un attaquant de créer une charge utile qui passe la validation de sqlparse comme un SELECT unique mais qui s'exécute comme quatre instructions dans PostgreSQL — y compris un COMMIT qui met fin à la transaction en lecture seule et des instructions d'écriture ultérieures.

Charge utile

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • sqlparse voit un seul SELECT avec un grand littéral de chaîne → la validation passe
  • PostgreSQL voit : SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --'

Diffusion

La charge utile est diffusée via injection indirecte par invite : l'attaquant la place dans un objet de base de données (commentaire de colonne, valeur de ligne, définition de vue) que l'assistant IA lit. Lorsqu'un utilisateur légitime pose une question, le LLM lit les données empoisonnées et les émet comme un appel d'outil execute_sql_query.

Fichiers

FichierDescription
poc.pyDémontre la différence de lexer : la validation sqlparse passe, le protocole de requête simple exécute plusieurs instructions, le protocole de requête étendu le bloque
prompt_injection_demo.pySimule la chaîne d'attaque complète : charge utile placée comme commentaire de colonne → LLM simulé la lit → validation passe → exécution

Prérequis

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

Vous avez également besoin d'une instance PostgreSQL en cours d'exécution (14+) :

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

Utilisation

root@kitploit:~
# PoC principal — démonstration de la différence de lexer
python3 poc.py

# Démo de diffusion par injection par invite
python3 prompt_injection_demo.py

# Paramètres de connexion personnalisés
python3 poc.py --host 10.0.0.5 --port 5432 --user postgres --password mypw

Le correctif (pgAdmin 9.17)

Le correctif force le protocole de requête étendu de psycopg3 en :

  1. Définissant conn.prepare_threshold = 0 sur la connexion dédiée du LLM
  2. Passant prepare=True à cursor.execute()

Cela fait de l'étape Parse de PostgreSQL elle-même l'autorité en matière de limites d'instructions — elle rejette structurellement le texte multi-instructions, quelle que soit la façon dont un lexer côté client le classe.

Références

  • CVE : https://nvd.nist.gov/vuln/detail/CVE-2026-17351
  • Problème GitHub : https://github.com/pgadmin-org/pgadmin4/issues/10192
  • Commit du correctif : https://github.com/pgadmin-org/pgadmin4/commit/ef76102bcd1cdb544eb9b4ef18d3382f22b76752
  • CVE d'origine (CVE-2026-12045) : https://nvd.nist.gov/vuln/detail/CVE-2026-12045
  • Rapporteur : Kai Aizen (SnailSploit)

Avertissement

Ce PoC est destiné uniquement à des fins éducatives et à des tests autorisés.

Télécharger l’outil