Зато проверка, появляющаяся в pull request, встаёт на пути команды каждый рабочий день — в хорошем смысле. Она запускает те же детекторы, что и веб-сканер, на каждом коммите: внутри вашего собственного раннера, так что неопубликованный код остаётся на вашей машине.
Это возражение обрывает большинство разговоров о сканере безопасности, поэтому оно заслуживает быть сказанным первым и однозначно.
Движок с 201 детектором скачивается на ваш раннер и работает там. Обратно в SaferICO отправляются число по каждому уровню критичности и идентификаторы правил с именем файла и номером строки — но никогда сам код и никогда тексты доказательств, потому что они цитируют ваш исходник.
Тестовый набор ищет в теле исходящего запроса фрагменты только что просканированного исходника. Утверждение — не фраза, а свойство, проверяемое на каждом прогоне.
Движку на настоящей кодовой базе нужно гораздо больше. На раннере GitHub есть целое ядро и нет лимита времени, поэтому проверка, выполняемая на вашем коммите, полная, а не урезанная.
Раннер подтягивает актуальный движок на каждом прогоне. Рабочий процесс, зафиксированный год назад, получает сегодняшние детекторы.
Один файл в .github/workflows/. Раннер не скачивает дерева зависимостей — инструмент безопасности, тянущий собственные зависимости в ваш конвейер, работает против самого себя.
Необязательный последний шаг загружает SARIF, и находки появляются во вкладке Security на GitHub и прямо поверх диффа — там, где разработчик действительно их прочитает.
Сами инструменты (сканер, панели, рабочее пространство SAFI) пока работают на английском языке. Эти страницы объясняют всё по-русски — до того, как вы туда перейдёте.
Один файл, один секрет и порог, определяющий, когда ронять сборку.
Детекторы и так открыты по адресу /sfi-engine.js, и мы не утверждаем обратного. Здесь продаётся лицензия, история прогонов, политика, решающая, ронять ли сборку, и обзор по всей организации.
Вы кладёте один файл в .github/workflows/: код выгружается, sfi-ci.mjs скачивается и запускается, при желании загружается SARIF. Полный текст лежит на самой странице, готовый к копированию.
Сам раннер — это один файл, который можно прочитать до запуска: https://saferico.com/sfi-ci.mjs
Ключ создаётся во вкладке API-ключей вашего аккаунта и добавляется в секреты репозитория как SAFERICO_API_KEY.
До 5 ключей на аккаунт, каждый можно отозвать, и у каждого свой счётчик вызовов.
Уровни критичности, о которых сообщает движок: критический, высокий, средний, низкий, информационный. По умолчанию — «ронять на высоком и выше».
Пока разгребаете накопившееся, снизьте порог, а после — поднимите. Порог, который никто не может пройти, отключают за неделю, а отключённая проверка не защищает ничего.
Вставьте адрес контракта и посмотрите полномочия владельца, ликвидность и результат симуляции продажи — прежде чем рисковать. Небольшая плата за разовую проверку показывается до подписи, а в любой подписке проверки безлимитны.