
Пёсик, который помогает выискивать проблемы безопасности в ваших репозиториях.
Layne — это self-hosted приложение GitHub, которое централизует сканирование безопасности во всех наших репозиториях. Поскольку мы не используем коммерческие инструменты 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 открыт или обновлен — или после запуска workflow/job, в зависимости от настроенного триггера, — 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 | Вредоносные намерения с помощью одного LLM-вызова на файл | Отключен по умолчанию; включается отдельно для каждого репозитория; поддерживает Anthropic, OpenAI, Google, Mistral, Bedrock |
| Dep Doctor | CVE, заброшенные и устаревшие зависимости | Отключен по умолчанию; включается отдельно для каждого репозитория; требует osv-scanner в PATH |
Вы также можете добавлять собственные сканеры. См. Расширение Layne.
Когда все настроено должным образом, Layne добавит run в 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.