Инструментальная сверка живого дерева маршрутов со спецификацией и блокировка забытых версий
Разработчики защитили новую версию интерфейса /api/v3/ строгой проверкой прав, но на том же сервере осталась запущенной старая тестовая ветка /api/v1-beta/, где новые фильтры не подключены. Испытатель сверяет дерево маршрутов с подписанной спецификацией и в автоматическом режиме выпускает правило пропуска только утверждённых адресов.
Ошибки учёта и версионирования программных интерфейсов порождают два класса незащищённых точек входа: забытые старые версии (/api/v1/, /old/), которые продолжают работать в обход обновлённых правил проверки подлинности, и теневые маршруты, добавленные для внутренней отладки или временных интеграций без внесения в паспорт безопасности шлюза.
Силовику и руководителю (без жаргона): Перехват «Invoke undocumented administrative delete route or exfiltrate bulk records via legacy v1 endpoint» до сокета (0 вреда рабочей базе, готовая печать ГОСТ)
Техническому проверяющему (улика): Норма ГОСТ Р 56939-2024 §5.3.2; Приказ ФСТЭК России от 11.04.2025 № 117 п. 50 | Фильтр SEC-ZD-V2-12 | Свидетель 29c6f183e5047b19
Технократу, CTO и VC (математика): Инвариант Z3 (assert (=> (not (member (tuple (http_method call) (canoni... | FP = 0,0% | Правило IMMUNE-SHD-29C6F183 (mcp-sentinel 1.1.2)
1. Схема перехвата на проводе и выпуска контракта для API-SHD-12
Инструментальный цикл проверки по классу API-SHD-12 (OWASP API9:2023 (Improper Inventory Management), WSTG-CONFIG-05 / CWE-1059): блокировка опасной мутации правилом SEC-ZD-V2-12 до сокета, фиксация свидетеля 29c6f183e5047b19 и выпуск контракта IMMUNE-SHD-29C6F183 для шлюза mcp-sentinel.
2. Фильтр нулевого ущерба и формальный инвариант решателя для API-SHD-12
По правилу SEC-ZD-V2-12 программный фильтр на проводе выполняет сверку инвентарного списка только безопасными опросами заголовков и разбором таблиц маршрутизации. Любые методы удаления, перезаписи или изменения состояния на недокументированных адресах блокируются до отправки в сокет.
На испытательном стенде анализатор сопоставляет фактическую карту откликов сервера с утверждённой спецификацией OpenAPI и поведением защищённого шлюза-обманки. Обнаружение работающей ручки вне утверждённого реестра фиксируется свидетелем 29c6f183e5047b19 без ложных срабатываний.
Код класса: API-SHD-12 (shadow_zombie_api_discovery)
Международные матрицы: OWASP API9:2023 (Improper Inventory Management) | WSTG-CONFIG-05 / CWE-1059
Нормативная привязка: ГОСТ Р 56939-2024 §5.3.2; Приказ ФСТЭК России от 11.04.2025 № 117 п. 50
Режим проверки: Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд: GET /api/v1-beta/internal/users/export (Unlisted in OpenAPI v3 spec; missing rate-limit & MFA middleware)
Перехваченная мутация: Invoke undocumented administrative delete route or exfiltrate bulk records via legacy v1 endpoint
Инвариант решателя Z3: (assert (=> (not (member (tuple (http_method call) (canonical_route call)) signed_openapi_contract)) (= (gateway_allow call) false)))
Правило фильтра: SEC-ZD-V2-12
Хэш свидетеля: 29c6f183e5047b19
Скомпилированный фильтр: IMMUNE-SHD-29C6F183 (mcp-sentinel 1.1.2)
3. Автоматический выпуск защитного контракта IMMUNE-SHD-29C6F183 и квитанция ГОСТ Р 34.11-2012
На основании свидетеля 29c6f183e5047b19 компилятор в автоматическом режиме формирует контракт IMMUNE-SHD-29C6F183 для перехватчика mcp-sentinel. Правило вводит режим разрешительного белого списка, мгновенно отклоняя обращения к любым версиям и путям, отсутствующим в подписанном манифесте.
4. Инженерные разъяснения по проверке и закрытию класса API-SHD-12
Обнаружение теневых ручек без слепого словарного перебора сотен тысяч адресов
Испытатель совмещает разбор таблиц маршрутизации приложения, анализ клиентских сборок и точечную проверку соседних префиксов версий, выявляя расхождения со спецификацией в автоматическом режиме.
Исключение доступа к забытым тестовым веткам после выпуска нового релиза
Поскольку перехватчик mcp-sentinel пропускает только пары метода и пути из криптографически подписанного паспорта OpenAPI, любая старая или отладочная ручка блокируется на входе до вызова обработчика.