Мой сканер безопасности MCP пропустил худший MCP RCE 2026 года: вот исправление одного правила
My MCP Security Scanner Missed 2026's Worst MCP RCE: Here Is the One-Rule Fix
Несколько месяцев назад я отправил статический анализатор, который сканирует серверы MCP (Model Context Protocol) для классов уязвимостей, которые продолжают появляться в этой экосистеме: впрыск команд, SSRF и обход пути. Предполагалось, что правилом будет всеобщая траектория. На этой неделе я сел с моими собственными заметками и провел простую проверку: поймали ли MCP007 четыре реальных CVE, раскрытых против серверов MCP в этом году? Он бы пропустил каждый из них. В том числе и худшего. Реальный контекст Вот что на самом деле поставляется как CVE в 2026 году, все в MCP-серверах, все с одной и той же первопричиной: CVE Server Sink Impact CVE-2026-40576 excel-mcp-server file write Path traversal CVE-2026-84201 appium-mcp-server Path traversal CVE-2026-44336 PraisonAI MCP Python...
Несколько месяцев назад я отправил статический анализатор, который сканирует серверы MCP (Model Context Protocol) для классов уязвимостей, которые продолжают появляться в этой экосистеме: впрыск команд, SSRF и обход пути. Предполагалось, что правилом будет всеобщая траектория. На этой неделе я сел с моими собственными заметками и провел простую проверку: поймали ли MCP007 четыре реальных CVE, раскрытых против серверов MCP в этом году? Он бы пропустил каждый из них. В том числе и худшего. Реальный контекст Вот что на самом деле поставляется как CVE в 2026 году, все в MCP-серверах, все с одной и той же первопричиной: CVE Server Sink Impact CVE-2026-40576 excel-mcp-server file write Path traversal CVE-2026-84201 appium-mcp-server Path traversal CVE-2026-44336 PraisonAI MCP Python пишет RCE с помощью инъекций CVE-2026-27825 mcp-atlassian CVSS 9.1, неаутентифицированный RCE (с цепью SSRF CVE-2026-27826 для перезаписи или сброса записи cron) Четыре разных проводника, четыре разных инструмента, одно и то же слепое пятно: путь файла, построенный из ввода, контролируемого абонентом, написанного без проверки каталога. Насекомое - самое мерзкое: не нужно никакого рестарта, прямо к раковине. Поэтому я открыл свой собственный файл правил и прочитал докстринг вслух: Вот оно. Мое правило сводилось к чтению с первого дня, и каждый реальный эксплойт в этом году происходил на стороне письма. Сканер, вся работа которого состоит в том, чтобы поймать этот класс ошибок, был структурно слеп к половине, которая на самом деле получает оценку CVSS 9+. Архитектура: как работает MCP007 Правила просты по назначению: линейный регекс сканирования совпадает без AST, поэтому они быстро выполняются на любом языке с поддержкой mcpscan. Каждое правило имеет три уровня регекса: Оригинальный регекс раковины, дословно из : Notice: находится там, но Python также является раковиной записи (). Регекса не волнует режим, поэтому в теории некоторые записи уже проскальзывают. Но , , , , и не были сопоставлены вообще. Это фактический разрыв, который позволил пройти форму CVE-2026-27825. Шаг за шагом: исправление Поскольку и уже делают то, что необходимо (обнаружение динамически построенного пути и эскалация тяжести, когда появляется буквальный), исправление является аддитивным: второй шаблон раковины, повторно используя тот же трубопровод обнаружения. 1. Добавьте регексы записи-потопа рядом с прочитанными: 2. Проверьте оба семейства раковин на линию, а не только один: я натолкнулся на хиты записи-потопа прямо, даже без буквальных . Путь назначения, контролируемый злоумышленником, является более примитивным, чем путь источника, контролируемый злоумышленником, потому что полезная нагрузка обычно едет по тому же запросу. 3.Проверить его на реальную форму. Бросьте это в прибор и запустите сканер: перед патчем этот прибор дал нулевые результаты. Это весь баг, в одном диффе. Неоднозначность режима "Покупки и крайние случаи". Это технически читать и писать. Я не пытался анализировать сложные струны режима. Регекс также соответствует, , режимы (с дополнительным сигналом) и дублирующие матчи против безвредны, потому что кортеж проверяется в порядке с . Ложные срабатывания на законном атоме. Код, который работает, теперь будет флагом, правильно. Это все еще не проверенный путь назначения, даже если это только суффикс tempfile. Не подавляйте это; вместо этого проверьте базовый путь. Сильная инфляция. Эскалация всех хитов с записью-поглотителем до ВЫСОКОЙ (а не только с буквальным значением) приведет к более высоким результатам, чем раньше. Это сделано с учетом данных CVE. Если вы разветвите это, ожидайте, что ваше отставание в сортировке вырастет, и в этом суть. Ограничения Regex. Он все равно не уловит тропинку, построенную на трех функциях вдали от раковины. Это реальное ограничение всего правила, а не то, что исправляет этот патч. Стоит отметить в собственной документации, чтобы пользователи не ставили слепое доверие на чистое сканирование. Реализуемые выводы Если вы поддерживаете сканер безопасности, периодически перезапускайте его по вашему собственному списку недавних реальных CVE. Правила дрейфуют бесшумно: ничего не ломается, просто тихо перестает ловить вульнера