Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — Доказательство концепции, демонстрирующее обход SQL-инъекции CVE-2026-17351 в ИИ-ассистенте pgAdmin 4 через расхождение лексеров sqlparse/PostgreSQL, включая доставку непрямой промпт-инъекции. | Kitploit
Инструменты/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность ИИБезопасность Баз Данных
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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

Доказательство концепции, демонстрирующее обход SQL-инъекции CVE-2026-17351 в ИИ-ассистенте pgAdmin 4 через расхождение лексеров sqlparse/PostgreSQL, включая доставку непрямой промпт-инъекции.

Репозиторий
20 дней назадЕщё не проверено

CVE-2026-17351 — Обход режима «только чтение» AI-ассистента pgAdmin 4 через расхождение лексеров

PoC для CVE-2026-17351 — критический (CVSS 9.0) обход SQL-инъекции в AI-ассистенте pgAdmin 4.

Сводка уязвимости

Версии pgAdmin 4 с 9.13 по 9.16 используют библиотеку Python sqlparse для проверки того, что SQL-запросы, сгенерированные LLM, являются одиночными операторами «только чтение». При standard_conforming_strings = on в PostgreSQL (значение по умолчанию с PostgreSQL 9.1) sqlparse и PostgreSQL расходятся во мнениях о том, как обрабатываются обратные слэши внутри строковых литералов. Это позволяет атакующему создать полезную нагрузку, которая проходит проверку sqlparse как одиночный SELECT, но выполняется в PostgreSQL как четыре оператора — включая COMMIT, завершающий транзакцию «только чтение», и последующие операторы записи.

Полезная нагрузка

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • sqlparse видит один SELECT с большим строковым литералом → проверка проходит
  • PostgreSQL видит: SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --'

Доставка

Полезная нагрузка доставляется через непрямую инъекцию в промпт: атакующий внедряет её в объект базы данных (комментарий к столбцу, значение строки, определение представления), который читает AI-ассистент. Когда легитимный пользователь задаёт вопрос, LLM читает отравленные данные и передаёт их как вызов инструмента execute_sql_query.

Файлы

ФайлОписание
poc.pyДемонстрирует расхождение лексеров: проверка sqlparse проходит, простой протокол запросов выполняет несколько операторов, расширенный протокол запросов блокирует их
prompt_injection_demo.pyИмитирует полную цепочку атаки: полезная нагрузка внедрена как комментарий к столбцу → имитированный LLM читает её → проверка проходит → выполнение

Требования

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

Также вам понадобится запущенный экземпляр PostgreSQL (14+):

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

Использование

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

Исправление (pgAdmin 9.17)

Исправление принудительно включает расширенный протокол запросов psycopg3:

  1. Устанавливает conn.prepare_threshold = 0 на выделенном соединении LLM
  2. Передаёт prepare=True в cursor.execute()

Благодаря этому собственный шаг Parse PostgreSQL становится источником истины для границ операторов — он структурно отклоняет многооператорный текст независимо от того, как любой клиентский лексер его классифицирует.

Ссылки

  • CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-17351
  • Проблема GitHub: https://github.com/pgadmin-org/pgadmin4/issues/10192
  • Коммит с исправлением: https://github.com/pgadmin-org/pgadmin4/commit/ef76102bcd1cdb544eb9b4ef18d3382f22b76752
  • Оригинальный CVE (CVE-2026-12045): https://nvd.nist.gov/vuln/detail/CVE-2026-12045
  • Репортёр: Kai Aizen (SnailSploit)

Дисклеймер

Этот PoC предназначен только для образовательных целей и авторизованного тестирования.

Скачать инструмент