Специалисты по безопасности сообщили о критической уязвимости в fast-mcp-telegram - инструменте, который соединяет учётные записи Telegram с AI-ассистентами по протоколу MCP (Model Context Protocol). Проблеме присвоен идентификатор CVE-2026-52830 и оценка CVSS 9,8. По данным GitHub Advisory, уязвимость затрагивает версии вплоть до 0.19.0 включительно. Патч вышел в версии 0.19.1, обнаружен и задокументирован исследователем DavidCarliez.
Уязвимость CVE-2026-52830
Суть уязвимости кроется в механизме проверки HTTP Bearer-токенов. В коде "SessionFileTokenVerifier.verify_token()" токен напрямую подставляется в путь к файлу сессии: берётся строка токена, к ней добавляется расширение ".session", и полученный путь проверяется на существование через "is_file()". При этом разработчики попытались защитить стандартное имя сессии "telegram", добавив его в список зарезервированных - токен с таким значением отклоняется. Однако никакой нормализации пути не производится: символы разделителей, такие как "/" и "\\", последовательности "..", абсолютные пути не отбрасываются. В результате злоумышленник может передать в HTTP-заголовке "Authorization: Bearer" специально сформированный токен, например "../fast-mcp-telegram/telegram". После подстановки в путь к директории сессий (~/.config/fast-mcp-telegram) этот токен превращается в "~/.config/fast-mcp-telegram/../fast-mcp-telegram/telegram.session", что после обработки файловой системой сводится к тому же самому файлу "telegram.session". Так как код проверяет существование файла по исходному (не нормализованному) пути, а сам файл существует, аутентификация проходит успешно.
Таким образом, атакующий может получить доступ к учётной записи Telegram, связанной с сессией по умолчанию, не зная реального секретного токена. В типовой конфигурации файл "telegram.session" хранится именно в этой директории и используется при работе через стандартный ввод-вывод (stdio) или в устаревших сценариях. Документация явно предупреждает, что имя "telegram" зарезервировано, чтобы избежать конфликтов с многопользовательскими HTTP-сессиями. Однако обход через traversal-псевдоним делает эту защиту бесполезной.
После успешной аутентификации злоумышленник получает полный контроль над Telegram-аккаунтом, к которому привязана сессия. Он может читать и отправлять сообщения, вызывать методы MTProto API, а также использовать любые инструменты и точки подключения, настроенные для этой учётной записи. Промежуточное ПО, которое добавляет префикс аккаунта к именам инструментов, работает уже после аутентификации и не может исправить нарушенную границу. Как подтверждают тесты, после принятия traversal-токена префиксные инструменты (например, "defaultalice_send_message") корректно отображаются и вызываются, а вызовы без префикса отклоняются - это доказывает, что проблема именно в выборе сессии и проверке подлинности, а не в механизме префиксов.
Уязвимость представляет серьёзную угрозу для всех развёртываний, где используется HTTP-аутентификация и присутствует файл сессии по умолчанию. Даже если администратор не подключал стандартную учётную запись, наличие файла "telegram.session" в директории конфигурации делает сервер уязвимым. При этом сетевой доступ к серверу не требует привилегий, а эксплуатация не нуждается во взаимодействии с пользователем.
Разработчики выпустили исправление в версии 0.19.1. Патч вводит строгую валидацию токенов: теперь разрешены только символы безопасного алфавита (например, буквенно-цифровые и символы "_-"), а путь к файлу сессии сначала разрешается, а затем проверяется, что он остаётся строго внутри настроенной директории. Аналогичные проверки должны быть внедрены во всех точках, где токен используется для построения пути: в заголовочной аутентификации, URL-аутентификации, процедурах настройки, очистке и любом коде, открывающем файлы сессии по токену. Пользователям настоятельно рекомендуется немедленно обновиться, сменить файлы сессии по умолчанию и проверить журналы на наличие подозрительных значений токенов, содержащих последовательности обхода каталогов.
Этот случай в очередной раз подтверждает, как опасна доверительная подстановка входных данных в файловые пути без нормализации. В экосистеме MCP-серверов, где быстро растёт число интеграций, подобные ошибки могут привести к компрометации ценных учётных записей. Постоянный аудит кода на наличие path traversal и недостаточную валидацию ввода становится обязательным требованием для безопасной разработки.
Ссылки