
Пёсик, который помогает выискивать проблемы безопасности в ваших репозиториях.
Layne — это самостоятельно размещаемое приложение GitHub App, которое централизует сканирование безопасности по всем нашим репозиториям. Поскольку мы не используем коммерческие инструменты SAST/сканирования секретов и у нас нет доступа к GitHub Enterprise, становится сложно поддерживать различные файлы рабочих процессов GitHub Actions в разных репозиториях — особенно по мере роста их числа. Вместо этого мы устанавливаем Layne один раз, и он прослушивает события pull request, запускает наши инструменты безопасности на стороне сервера, публикует результаты обратно в виде нативных аннотаций GitHub Check Run и уведомляет канал уведомлений безопасности нашей команды.
Этот инструмент основан на реализации Reddit.
┌─────────────────────────────────┐
│ GITHUB PULL REQUEST │◀────────────────────────┐
│ (OPEN, SYNC, REOPEN) │ │
└─────────────────────────────────┘ │
│ Check run │
HTTP Post /webhook │
│ │
┌──────────────────────────────────────────────────────────────────────────────────────────┐
│ EC2 Instance (Docker) │ │ │
│ ┌───────▼────────┐ │ │
│ │ NGINX + TLS │ │ │
│ └───────┬────────┘ │ │
│ │ │ │
│ ┌─────────────────────┘ │ │
│ │ │ │
│┌─────────────┐ │ Schedules job ┌────────────────┐ ┌────────────┐ │ │
││ LAYNE │◀─┘ ─────────────────▶│ REDIS │───▶│ TRUFFLEHOG │──┐ │ │
││ SERVER │ │ (BULLMQ) │ │ └────────────┘ │ │ │
│└─────────────┘ └────────────────┘ │ ┌────────────┐ │ │ │
│ │─▶│ SEMGREP │──┤ │ │
│ │ └────────────┘ │ │ │
│ │ ┌────────────┐ │ ┌──────────┐│
│ ├─▶│ CLAUDE │──┼─▶│ REPORTER ││
│ │ └────────────┘ │ └──────────┘│
│ │ ┌────────────┐ │ │
│ ├─▶│ SPECTRE │──┤ │
│ │ └────────────┘ │ │
│ │ ┌────────────┐ │ │
│ └─▶│ DEP DOCTOR │──┘ │
│ └────────────┘ │
└──────────────────────────────────────────────────────────────────────────────────────────┘
Когда PR открывается или обновляется — или после запуска рабочего процесса/задания, в зависимости от настроенного триггера — GitHub отправляет вебхук в Layne. Сервер немедленно ставит задание сканирования в очередь и возвращает GitHub 200 OK. Воркер забирает задание, клонирует именно тот коммит, который вызвал событие, передаёт изменённые файлы каждому настроенному сканеру (Semgrep, Trufflehog, Claude, Spectre, Dep Doctor), собирает их находки и публикует результаты в виде встроенных аннотаций в Check Run.
Каждому сканеру передаются только файлы, изменённые в PR. Находки в файлах, которые вы не трогали, никогда не сообщаются.
Layne поставляется с пятью встроенными сканерами. Вы можете включать, отключать или настраивать каждый из них для каждого репозитория в config/layne.json.
| Сканер | Что обнаруживает | Примечания |
|---|---|---|
| Semgrep | SAST — ошибки, уязвимости, небезопасные паттерны | По умолчанию запускает semgrep scan --config auto; полностью настраивается через extraArgs |
| Trufflehog | Секреты, API-ключи и учётные данные | Запускает trufflehog filesystem; используйте --only-verified для снижения шума |
| Claude | Злонамеренные намерения, бэкдоры, обфусцированные полезные нагрузки, атаки на цепочку поставок | Отключён по умолчанию; включается для каждого репозитория; требует ANTHROPIC_API_KEY |
| Spectre | Злонамеренные намерения на основе ограниченных типизированных диффов PR | Отключён по умолчанию; анализ всего PR, когда он небольшой, иначе — по чанкам; поддерживает Anthropic, OpenAI, Google, Mistral, Bedrock |
| Dep Doctor | CVE, заброшенные и устаревшие зависимости | Отключён по умолчанию; включается для каждого репозитория; требует osv-scanner в PATH |
Вы также можете добавить собственные сканеры. См. Расширение Layne.
После правильной настройки Layne добавит запуск в pull request и запустит настроенные инструменты сканирования. Когда сканирование завершается неудачей, это выглядит так.

Находки Layne будут записаны в PR в виде встроенных аннотаций, указывающих точные строки, где были обнаружены проблемы безопасности.

Вы также можете увидеть находки Layne и их сводку, нажав на саму проверку.

И вы можете настроить Layne для отправки уведомления через вебхук в канал Rocket.Chat — также можно настроить Slack, и легко добавить новые уведомители, если вы используете другую платформу чата.

Запустите сайт документации локально:
npm run docs:dev
Затем откройте http://localhost:3000.
Полная документация охватывает развёртывание, конфигурацию, сканеры, уведомители, комментарии в PR, подавление находок, метрики, архитектуру безопасности и многое другое.
Layne лицензирован под Apache License 2.0 (Apache-2.0). Полный текст см. в LICENSE.
Copyright 2026 Rocket.Chat Technologies Corp.