Перейти к содержанию

Безопасность

Этот проект представляет собой мост для автоматизации браузера. Рассматривайте его как инфраструктуру для выполнения доверенного кода.

Граница доверия

Внешний сервер поддерживает stdio и Streamable HTTP. Он запускает основной компонент Playwright MCP в качестве дочернего процесса и перенаправляет вызовы инструментов. Автоматизация браузера, вывод файлов, доступ к сети и поведение при небезопасной оценке регулируются основным компонентом Playwright MCP.

Не следует открывать доступ к серверу stdio через сетевой обёртку без аутентификации. Любой клиент, способный вызывать инструменты, может управлять браузером, считывать данные страниц, доступные браузеру, и запрашивать артефакты.

По умолчанию Streamable HTTP подключается к 127.0.0.1 по протоколу HTTP для локальных клиентов. Если вы привязываете его к 0.0.0.0 или публикуете его за пределами loopback, требуйте CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN или эквивалентную аутентификацию обратного прокси, используйте прямой HTTPS с CLOAK_PLAYWRIGHT_MCP_HTTP_PROTOCOL=https и файлами TLS или завершайте TLS на границе доверенной сети, а также ограничьте доступ доверенным клиентам.

Небезопасные инструменты

Upstream Playwright MCP включает такие инструменты, как browser_evaluate и browser_run_code_unsafe. Они позволяют выполнять JavaScript в браузере или в контексте сервера Playwright. Подключайте этот сервер только к тем клиентам MCP, которым вы доверяете.

Настройка

Используйте опции на верхних уровнях для управления доступом и защиты:

  • PLAYWRIGHT_MCP_ALLOWED_ORIGINS
  • PLAYWRIGHT_MCP_BLOCKED_ORIGINS
  • PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
  • PLAYWRIGHT_MCP_SECRETS_FILE

Это защитные меры для удобства, которые не заменяют изоляцию процессов, контейнеров, сетей и файловых систем.

По возможности используйте списки разрешенных адресов для доверенных целей. Рассматривайте неограниченный доступ к файлам и файлы с секретной информацией как функции, требующие особого внимания, и не включайте их в общие профили клиентов MCP.

Режим «песочницы»

По умолчанию для образа Docker используется значение CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX=true, поскольку в контейнерных средах выполнения CI и MCP функция «песочницы» браузера зачастую недоступна. Это компромисс, обусловленный необходимостью обеспечения совместимости. Если ваша среда выполнения на хосте и в контейнере поддерживает песочницу Chromium, установите:

CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX=false

При запуске без песочницы Chromium используйте Docker или другой механизм изоляции процессов и избегайте монтирования обширных каталогов хоста.

Артефакты и секреты

Скриншоты, моментальные снимки, загруженные файлы, сетевые журналы, журналы консоли и трассировки могут содержать учетные данные или конфиденциальный контент страниц. Подключайте только тот каталог с артефактами, который вам нужен, очищайте его после использования и избегайте публичного распространения пакетов артефактов.

Если ваш MCP-клиент вставляет учетные данные в сеансы браузера, отдавайте предпочтение краткосрочным учетным данным, действующим только на целевом сайте. Не размещайте долгосрочные токены на скриншотах, в сетевых ответах или в постоянных профилях браузера.

Docker

Docker рекомендуется использовать, если вам нужна изоляция и воспроизводимые зависимости браузера. Подключите только тот каталог с артефактами, который вам нужен, и используйте --init, чтобы дочерние процессы браузера правильно очищались.

При публикации Streamable HTTP из Docker рекомендуется использовать -p 127.0.0.1:3000:3000. Публикация непосредственно на общедоступный интерфейс предоставляет любому доступному клиенту возможность автоматизации браузера, если не добавить средства аутентификации и сетевого контроля.

Образ Docker проходит сканирование с помощью Trivy в рамках непрерывной интеграции (CI) и перед публикацией релиза. Сканер проверяет уязвимости ОС и библиотек с высоким и критическим уровнем риска и, если эта функция включена, загружает результаты в формате SARIF в систему сканирования кода GitHub.

Проверки цепочки поставок

В репозитории используются бесплатные встроенные в GitHub средства проверки с открытым исходным кодом:

  • CodeQL для статического анализа кода на JavaScript и TypeScript.
  • Dependency Review для проверки изменений зависимостей в пул-реквестах.
  • npm audit --omit=dev --audit-level=high для зависимостей npm, используемых во время выполнения.
  • OpenSSF Scorecard для отслеживания сигналов о цепочке поставок репозитория.
  • zizmor для проверки безопасности GitHub Actions.
  • Trivy для сканирования образов Docker на наличие уязвимостей.

Эти проверки не заменяют ручной анализ поведения средств автоматизации браузера или изменений в релизах.

Отчетность

Сообщайте об уязвимостях с помощью файла SECURITY.md.