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 не затронуты.
Что проверить:
- Версию SDK:
@modelcontextprotocol/sdkдолжна быть не ниже 1.24.0,mcp- не ниже 1.23.0. - Запускаете ли вы сервер по HTTP на своей машине и есть ли у него проверка подлинности.
- Если приложение Express собрано вручную - подключён ли
hostHeaderValidation().
Как это выглядит сейчас
Требования к серверу, которые закрывают обращение с чужой веб-страницы, собраны на странице «Защита сервера», а подробности о проверке Origin - на странице «Транспорты». Обе записи есть в таблице на странице «Уязвимости и инциденты».