Перейти к содержимому
Выберите тему

DNS rebinding в SDK для TypeScript и Python

2 декабря 2025 вышли бюллетени CVE-2025-66414 и CVE-2025-66416: в TypeScript SDK и Python SDK защита от подмены DNS для локальных серверов HTTP не была включена по умолчанию.

2 декабря 2025 в репозиториях официальных TypeScript SDK и Python SDK опубликованы два бюллетеня безопасности об одной и той же ошибке: защита от подмены DNS (DNS rebinding) не была включена по умолчанию у серверов, запущенных на localhost. В тот же день обе записи появились в общей базе GitHub Advisory. Уровень опасности обеих - высокий.

Что изменилось

Два бюллетеня, по одному на SDK:

  • CVE-2025-66414, GHSA-w48q-cv73-mx4w - TypeScript SDK, пакет @modelcontextprotocol/sdk в npm. Затронутые версии: < 1.24.0. Исправленная версия: 1.24.0. Уровень опасности: высокий.
  • CVE-2025-66416, GHSA-9h52-p55h-vw2f - Python SDK, пакет mcp в PyPI. Затронутые версии: < 1.23.0. Исправленная версия: 1.23.0. Уровень опасности: высокий.

Обе записи отнесены к классу CWE-1188.

Последствие в обоих бюллетенях описано одинаково: вредоносный сайт мог с помощью подмены DNS обойти правило одного источника, отправить запросы локальному серверу MCP и от имени пользователя вызвать инструменты или получить ресурсы этого сервера.

Что изменили исправления:

  • TypeScript SDK: у серверов, созданных через createMcpExpressApp(), защита теперь включена по умолчанию при привязке к localhost. Тем, кто собирает приложение Express сам, бюллетень советует подключить промежуточный обработчик hostHeaderValidation().
  • Python SDK: у серверов, созданных через FastMCP(), защита теперь включена по умолчанию, когда параметр host равен 127.0.0.1 или localhost.

Это ошибка в программах, а не в протоколе MCP: речь о настройках по умолчанию в двух SDK.

Кого это касается

Условия в бюллетенях названы точно.

  • TypeScript: сервер HTTP запущен на localhost без проверки подлинности, использует StreamableHTTPServerTransport или SSEServerTransport и не включил enableDnsRebindingProtection.
  • Python: сервер использует FastMCP с транспортом Streamable HTTP или SSE и не настроил TransportSecuritySettings.

Оба бюллетеня отдельно говорят: серверы с транспортом stdio не затронуты.

Что проверить:

  1. Версию SDK: @modelcontextprotocol/sdk должна быть не ниже 1.24.0, mcp - не ниже 1.23.0.
  2. Запускаете ли вы сервер по HTTP на своей машине и есть ли у него проверка подлинности.
  3. Если приложение Express собрано вручную - подключён ли hostHeaderValidation().

Как это выглядит сейчас

Требования к серверу, которые закрывают обращение с чужой веб-страницы, собраны на странице «Защита сервера», а подробности о проверке Origin - на странице «Транспорты». Обе записи есть в таблице на странице «Уязвимости и инциденты».

Источники