К обсуждениям

Meta Ads MCP: HTTP tools требуют auth и не раскрывают token

Редакция VOne Технологии

Безопасная проверка Meta Ads MCP Streamable HTTP по ghsa-9gw6-46qc-99vr: применимость, обратимый fixture, request auth / fallback env / handler calls / outbound request / response status / marker in body/log, PASS и stop-rule без production-данных.

Отделите симптом от предположения в Meta Ads MCP Streamable HTTP

Самостоятельная пользовательская боль: unauthenticated request достигает tool handler, тот берёт operator environment token, а ошибка возвращает URL с access_token. Механизм на проверяемом уровне: две trust-boundary ошибки складываются: middleware не завершает запрос 401, затем fallback credential и exception serialization раскрывают секрет. Поэтому рабочий invariant формулируется так: «без per-request auth tool не вызывается; operator token не служит guest fallback и redaction действует на errors/logs/URLs». Проверка полезна только тогда, когда positive и negative controls различимы. GitHub Reviewed Advisory ghsa-9gw6-46qc-99vr опубликована 2026-06-11, обновлена 2026-08-07; её summary — «Meta Ads MCP: Unauthenticated HTTP MCP Tool Execution Leaks Operator Meta Access Token». Запись задаёт технический сигнал и package boundary «pip/meta-ads-mcp <= 1.0.108; first patched 1.0.109», но сама по себе не доказывает наличие vulnerable path в fork, факт эксплуатации, пользовательский спрос, индексацию или влияние на позиции.

Постройте матрицу применимости до любого теста

Инвентаризация должна ответить на четыре независимых вопроса: присутствует ли Meta Ads MCP Streamable HTTP, попадает ли resolved dependency/build в «pip/meta-ads-mcp <= 1.0.108; first patched 1.0.109», достижим ли описанный code path и не перенесён ли фикс отдельно. Запишите только package manager lock, component build, feature/config state и происхождение образа; не делайте вывод по одному banner. Основная таблица применимости: request auth / fallback env / handler calls / outbound request / response status / marker in body/log. Отдельно пометьте `not_present`, `version_outside`, `path_disabled`, `backport_confirmed`, `needs_fixture`. Если версия неизвестна, это `unknown`, а не affected. Если upstream boundary и локальная сборка используют разные schemes, остановитесь и восстановите SBOM/commit provenance вместо угадывания.

Выполните обратимый fixture с двумя controls

Изолированный сценарий: ASGI test client, fake tool counter и dummy marker `TOKEN_DO_NOT_USE`; Meta Graph network заменена deterministic failing transport. Запускайте сценарий в disposable test context с запретом внешней сети. Positive control: валидный synthetic per-request credential доходит до fake handler, но даже injected error остаётся redacted. Negative case воспроизводит только нарушение invariant, без реальных секретов, чужих объектов, внешних targets и инструкций по эксплуатации. До запуска зафиксируйте expected calls/writes/bytes, после — сравните фактические счётчики и верните temporary state через rollback или уничтожение disposable context. Не повышайте риск ради реализма: доказательство должно находиться на unit/handler/converter/policy boundary, где причина видна без рабочей инфраструктуры.

Сведите наблюдения в decision matrix

Строка результата содержит: request auth / fallback env / handler calls / outbound request / response status / marker in body/log. PASS означает: guest получает 401 и ноль calls; dummy marker отсутствует в response/log при всех branches. FAIL допустимо фиксировать только когда negative fixture проходит до запрещённого эффекта, а positive control подтверждает, что test harness работоспособен. `Inconclusive` ставьте при missing build provenance, недоступном feature path, неоднозначном backport или сломанном control. Не заменяйте причинный результат отсутствием ошибок в журнале. Для каждого решения приложите hash fixture, test name, dependency resolution и нулевые/ожидаемые side-effect counters; содержимое секретов и персональные поля исключите.

Выберите безопасное действие и критерий остановки

При подтверждённой применимости предпочтительно перейти на исправленную ветку из официального источника, повторить тот же fixture и проверить регрессию штатного control. Компенсирующая мера принимается только если она реально разрывает описанный mechanism и имеет owner/expiry; общие WAF, ACL или log alerts не считаются автоматическим исправлением. Жёсткая stop-rule: не задавать реальный META_ACCESS_TOKEN и не открывать тестовый server на внешнем интерфейсе. Эскалируйте maintainer/security owner, если нужен production trace, реальные credentials, внешний target, необратимая миграция или решение расходится с upstream advisory. Минимальный пакет поддержки: component/build, boundary decision, включённые features, обезличенная matrix, fixture hash, PASS/FAIL/Unknown, control result и ссылка на два прямых источника.

Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.