Безопасность

AWS устраняет уязвимости MCP, которые могли изменять данные PostgreSQL и внедрять код

AWS устранила уязвимости в серверах MCP PostgreSQL и DynamoDB с открытым исходным кодом, показывая, почему инструментам-агентам необходимы разрешения, обеспеченные базой данных, и тщательный обзор генерируемого инфраструктурного кода.

Автор: Лео У ·

AWS устраняет уязвимости MCP, которые могли изменять данные PostgreSQL и внедрять код

Amazon Web Services исправила две важные уязвимости в серверах протокола контекста моделей с открытым исходным кодом, которые подключают AI-ассистентов к PostgreSQL и DynamoDB. Один из недостатков может позволить специально созданному SQL выйти за пределы предполагаемого режима только для чтения. Другой может внедрить исполняемый код в инфраструктуру, сгенерированную из вредоносного файла модели данных. Ни один бюллетень не описывает нарушение безопасности облачного сервиса, управляемого AWS, но оба выявляют базовую слабость в архитектуре агентов: дружелюбное описание инструмента не является границей безопасности.

Проблема PostgreSQL, CVE-2026-85787, затрагивает версии сервера awslabs postgres-mcp до 1.1.7. AWS сообщает, что неполный список запрещенных SQL-входов может позволить неаутентифицированному пользователю создать контент, который изменяет данные при взаимодействии с сервером аутентифицированного пользователя. Разница тонкая. Атакующему не нужны учетные данные базы данных; сессия агента обеспечивает доверенный путь.

Обещание только для чтения встречается с реальностью базы данных

Блок-листы ненадежны, потому что SQL — это язык с алиасами, комментариями, функциями и множеством способов выражения побочных эффектов. Фильтрация известных опасных строк может остановить явные случаи, но, как правило, не срабатывает, когда парсер сталкивается с новым синтаксисом. AWS исправила проблему валидации, однако ее самая важная рекомендация носит архитектурный характер: запускать сервер MCP под выделенной ролью PostgreSQL с только теми правами, которые ему необходимы.

Этот совет превращает «только для чтения» из утверждения приложения в правило, обеспечиваемое базой данных. Роль, ограниченная CONNECT, USAGE и SELECT, не может обновлять таблицу, даже если вредоносный SQL проходит через модель, клиент и уровень проверки MCP. AWS также рекомендует принудительное использование транзакций только для чтения и предупреждает об использовании учетных данных суперпользователя, rds_superuser и cluster-master. Эти аккаунты могут обходить ограничения гораздо шире, чем данные, необходимые ассистенту.

Разрешения, применяемые на уровне базы данных, могут содержать вызов вредоносного инструмента даже в случае неудачной валидации внутри сервера MCP.
Разрешения, применяемые на уровне базы данных, могут содержать вызов вредоносного инструмента даже в случае неудачной валидации внутри сервера MCP.

Командам следует предполагать, что инструкции могут быть враждебными, даже если они поступают в обычных документах. Агент может суммировать заявку, проверять схему или отвечать на вопрос пользователя, в то время как скрытый текст пытается перенаправить вызовы его инструментов. Внедрение команд становится значительно опаснее, когда модель имеет учётные данные с правами на запись. Принцип наименьших привилегий ограничивает воздействие без необходимости, чтобы модель распознавала каждую атаку.

Обновление остаётся необходимым, потому что защита в глубину не является основанием оставлять открытой известную возможность обхода. Организации, использующие пакет PyPI, должны перейти на версию 1.1.7 или более позднюю и убедиться, что внутренние форки включают исправление. Им также следует проверить журналы базы данных на предмет неожиданных попыток записи и убедиться, что учетные данные, используемые помощниками разработчиков, отделены от администрирования производственной среды.

Сгенерированная инфраструктура является выполняемым вводом

Уязвимость DynamoDB, CVE-2026-85654, затрагивает версии 2.0.10 до 2.1.5 пакета awslabs.dynamodb-mcp-server. AWS сообщает, что специально созданные имена таблиц, индексов или атрибутов в файле модели данных могут интерпретироваться движком шаблонов и выполнять произвольный код на хосте, развертывающем сгенерированное приложение. Версия 2.1.6 устраняет эту проблему.

Этот путь атаки пересекает несколько переходов доверия. Файл данных выглядит декларативным, сервер MCP превращает его в код CDK, а разработчик или конвейер выполняет сгенерированный проект с использованием локальных или облачных учетных данных. Каждый шаг может сделать артефакт более законным на вид. К моменту развертывания проверяющие могут воспринимать его как машинно-созданный шаблон и сосредоточиться на видимой инфраструктуре, а не на исходных строках, встроенных в шаблоны.

Декларативный файл модели данных может стать исполняемым риском, если агент прогонит его через шаблоны и инструменты развертывания.
Декларативный файл модели данных может стать исполняемым риском, если агент прогонит его через шаблоны и инструменты развертывания.

AWS рекомендует пользователям, которые не могут обновиться немедленно, проверить dynamodb_data_model.json на наличие неожиданных имен и избегать моделей из ненадежных источников. Ручная проверка является временной мерой контроля, а не масштабируемым решением. Системы сборки должны изолировать генерацию кода, сканировать полученный исходный код, требовать видимых изменений в системе контроля версий и выполнять развертывание с ограниченными по объему полномочиями.

Уязвимости напоминают о том, что цепочки поставок агентов включают подсказки, извлеченные документы, серверы инструментов, шаблоны, сгенерированный код, пакеты и идентификаторы для развертывания. Традиционная безопасность программного обеспечения уже сталкивается с трудностями на этом уровне. Агенты делают этот процесс более динамичным, потому что вероятностная система решает, какие компоненты вызывать и как сочетать их результаты.

Что команды безопасности должны делать сейчас

Реагирующие на инциденты должны сохранять контент, который предшествовал подозрительным вызовам. Традиционные журналы могут показывать запрос или запуск процесса без извлечённого документа и решения модели, которое его вызвало. Фиксация этого контекста помогает отличить эксплуатацию от обычной ошибки разработчика. Сохранение должно быть сбалансировано с приватностью, поскольку подсказки и результаты работы инструментов могут содержать учетные данные, данные клиентов и исходный код.

Разработчикам также нужен безопасный способ экспериментов. Если утверждённые серверы MCP трудно достать, команды будут запускать неофициальные копии на ноутбуках с широкими правами доступа. Полезная программа безопасности предлагает поддерживаемые шаблоны, минимальные роли и локальные тестовые среды, которые делают более безопасный путь проще. Управление, состоящее только из запретов, как правило, перемещает риск вне поля зрения.

Непосредственная работа проста: провести инвентаризацию серверов MCP, определить версии пакетов, обновить затронутые компоненты и проверить форки. Более сложная задача — обнаружение неофициальных серверов, запущенных отдельными разработчиками. Организациям необходим реестр, который фиксирует владельцев, версии, учетные данные, доступные системы и одобренных клиентов. Сетевые журналы могут помочь найти серверы, которые никогда не были внесены в каталог.

Учетные данные должны быть краткосрочными и привязанными к задаче. Ассистент по кодированию, отлаживающий функцию Lambda, не нуждается в постоянном доступе ко всем базам данных. Собственные рекомендации по безопасности MCP от AWS ставит проектирование идентификации и разрешений в центр развертывания. OAuth и облачная идентификация могут улучшить пользовательский опыт, но аутентификация отвечает на вопрос, кто подключился, а не на вопрос, что каждому инструменту разрешено делать. Авторизация по-прежнему принадлежит уровню ресурсов.

Тестирование безопасности должно включать в себя враждебное содержимое внутри файлов и записей, которым агенты должны доверять. Руководство OWASP для приложений с большими языковыми моделями выявляет внедрение подсказок и небезопасную обработку вывода как повторяющиеся риски. Развертывания MCP должны тестировать их вместе, потому что внедренная инструкция становится более опасной, когда нижестоящие системы выполняют инференс модели без проверки.

MCP ценен именно потому, что облегчает подключение инструментов. Это удобство также может скрывать расстояние между разговором и значимым системным вызовом. Патчи AWS закрывают две конкретные уязвимости. Долговечный урок более широкий: агенты должны работать в рамках разрешений, которые остаются безопасными даже если модель, запрос, парсер или шаблон ошибочны. Всё, что ниже этого уровня, превращает любую ошибку валидации ввода в потенциальное нарушение доверия.

Темы: AWS, безопасность MCP, PostgreSQL, DynamoDB, уязвимости