FlawOpen

flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection

● CVE-2026-107322 · CVSS 7.8[1], [4] · Высокий
Исследования · FlawOpen

CVE-2026-107322: инъекция команд в плагине AWS для агентов

CVE-2026-107322 затрагивала необязательный helper psql в плагине AWS databases-on-aws. Фильтр пропускал метакоманды psql; удалённый контент мог привести к выполнению команд на хосте только если агент позднее передавал значение helper. Обновите версию до 1.7.1 или новее.[1], [2], [4]

Вектор CVSSCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H[1], [4]
💡 Простыми словами (ELI5)

Сотрудник проверяет записку на дополнительные SQL-инструкции, но забывает, что у клиента базы данных есть собственный язык команд. Внешний контент попадёт ко второму интерпретатору лишь если агент передаст его локальному helper. Исправление отклоняет такую синтаксическую конструкцию до запуска.[1], [2]

Ключевые понятия и термины

Метакоманда psql
Инструкция интерактивного клиента PostgreSQL, а не сервера базы. Это отдельная граница разбора наряду с SQL.[2], [3]
CWE-184: неполный список запрещённых данных
Фильтр отклоняет одни формы, но пропускает другую, которую следующий компонент понимает особым образом.[2], [4]
Контент, полученный агентом
Данные из удалённого или недоверенного источника. AWS не указывает, как подготовленный контент попадает к агенту.[1]
Локальный helper
Необязательный скрипт psql на хосте агента; системные команды выполняются с правами его процесса.[1], [3]

Связи со стандартами

  • Ссылка CWE для слабого места, описанного в этом руководстве: CWE-184

Пошаговый сценарий атаки

Шаг 1

Недоверенный контент достигает агента

AWS сообщает, что удалённый субъект без аутентификации может передать контент для обработки. Уведомление не указывает источник или доставку; не предполагайте определённый путь prompt injection.[1], [2]

Шаг 2

Агент передаёт значение helper

Уязвимость требует вызова локального helper с подготовленным значением. Само получение контента не является описанным триггером.[1], [3]

Шаг 3

SQL-проверки пропускают язык psql

Helper фильтрует разделители и комментарии SQL, но не отклоняет обратные косые черты. psql локально интерпретирует метакоманды.[2], [3]

Шаг 4

Исправление блокирует синтаксис до запуска

Патч проверяет оставшиеся символы до прежних SQL-проверок. Обновите версию до 1.7.1 или новее и проверьте каждую среду.[1], [2], [3]

Анализ первопричины

AWS и сопровождающий проекта связывают CVE-2026-107322 с неполной фильтрацией во вспомогательном скрипте подключения psql из databases-on-aws. До исправления проверка удаляла SQL-литералы в одинарных кавычках из рабочей копии и отклоняла разделители операторов и SQL-комментарии, но пропускала обратные косые черты, которые клиент psql интерпретирует как синтаксис метакоманд. Исправление отклоняет оставшиеся обратные косые черты после обработки литералов и до прежних проверок, закрывая пропущенную границу разбора.[1], [2], [3]

Исходный код: Уязвимый vs Защищённый вариант

Upstream-патч отклоняет оставшиеся обратные косые черты после удаления SQL-литералов в одинарных кавычках, до вызова psql и прежних проверок. Это сокращённый фрагмент, а не универсальный SQL-парсер; у исходной обработки кавычек есть документированные крайние случаи. Для сложных или недоверенных запросов не используйте необязательный shell-helper: AWS рекомендует DSQL MCP-сервер или вручную проверенный SQL. Запускайте процесс с минимальными правами: это ограничивает последствия, но не заменяет обновление.[2], [3]

Фрагмент исходного кода: plugins/databases-on-aws/scripts/psql-connect.sh — сокращённый фрагмент фильтра --command

УЯЗВИМАЯ РЕАЛИЗАЦИЯ
# Сокращённый фрагмент: проверки SQL не отклоняли синтаксис метакоманд psql.
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q ';'; then
  echo "Error: multiple SQL statements are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
  echo "Error: SQL comments are not allowed." >&2
  exit 1
fi
psql --command "$COMMAND"
БЕЗОПАСНЫЙ ИСПРАВЛЕННЫЙ ВАРИАНТ
# Сокращённый фрагмент на основе исправления upstream в версии 1.7.1.
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q '\\'; then
  echo "Error: psql meta-commands are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q ';'; then
  echo "Error: multiple SQL statements are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
  echo "Error: SQL comments are not allowed." >&2
  exit 1
fi
psql --command "$COMMAND"

Чек-лист по защите системы для инженеров

Источники

← AI Security Directory →