Две механизмы защиты анализируют сам код: Сканирование кода применяет фиксированные правила ко каждому изменению и к основной ветке, а также Рецензирование безопасности в слияниях запросов проверяет проблемы безопасности, выявленные при рецензировании Coroid, перед тем как они могут привести к отклонению pull request.
Сканирование кода
Правила Coroid
Отдел безопасности отвечает за эти правила. Они ранее входили в состав проверки на анти-шлак в модуле Quality Control и теперь размещены здесь, поэтому у каждого правила есть свое место:
| Правило | Ищет |
|---|---|
security.hardcoded-secret | Учетные данные, встроенные в код. См. Утекшие секреты. |
security.tls-disabled | Отключена проверка TLS-сертификатов. |
security.auth-removed | Удалены или закомментированы механизмы аутентификации, разрешений, декораторы или промежуточное ПО. |
security.cors-wildcard-credentials | Разрешен доступ с любого источника при наличии учетных данных. |
security.sql-concat | SQL-запросы формируются из интерполированных строк и передаются в функцию выполнения запроса. |
security.eval | Код, выполняемый из входных данных: eval, new Function, неочищенные dangerouslySetInnerHTML. |
security.remote-script-exec | Загруженные скрипты напрямую передаются в оболочку или интерпретатор. |
security.policy-changed | Изменения в конфигурации сканера. См. Механизмы защиты и их применение. |
deps.nonexistent | Новые зависимости, которых нет в их реестре. |
deps.known-malicious | Новые зависимости с предупреждением о вредоносном пакете. |
deps.suspicious-new | Новые зависимости, опубликованные менее 30 дней назад, с очень малым количеством загрузок, название которых отличается на одну-две буквы от популярного пакета, или с недавним изменением владельца. |
deps.install-script | Новые npm-зависимости, выполняющие скрипт при установке. |
Правила гигиены зависимостей, незафиксированные версии, расхождения между манифестом и файлом блокировки остаются в модуле Quality Control в рамках проверки на анти-шлак. См. Анти-шлак.
Правила применяются к изменениям, в том же сканировании, что и проверка на анти-шлак в Quality Control, и к основной ветке при каждой отправке и раз в день, независимо от того, включена ли проверка на анти-шлак. Отдел безопасности, а не настройки анти-шлака, определяет действие каждого правила. Их список доступен в разделе Безопасность → Настройки → Сканирование кода. До тех пор, пока сканирование кода не начнет применять правила, каждое правило сохраняет прежнее действие из Quality Control, так что правило, настроенное на блокировку, продолжит блокировать.
Ваша собственная команда сканирования
Если в вашем проекте уже используется сканер безопасности, введите его команду в поле
Ваша собственная команда сканирования в настройках сканирования кода. Она будет выполняться как
security_scan проверка при каждом изменении. Оставьте поле пустым, чтобы отключить эту функцию.
Результаты внешних инструментов, таких как SonarQube, Snyk или Semgrep, также могут поступать в Coroid в виде доказательств рецензирования. См. Поставщики доказательств рецензирования.
Рецензирование безопасности в слияниях запросов
Система Coroid Review проводит рецензирование слияний запросов в Quality Control. Если она обнаруживает проблему безопасности, она не записывает ее в отзыв в виде текста. Вместо этого проблема указывается как структурированное утверждение: тип уязвимости, имя файла и строки, а также уровень серьезности. Отдел безопасности регистрирует каждое утверждение как Еще не подтверждено.
Независимая проверка
Для критических и высоких утверждений система Coroid проводит независимую проверку: отдельный ограниченный запуск модели, который анализирует файл, указанный в утверждении, на основе коммита pull request, и должен самостоятельно выявить проблему. Если это удается, утверждение становится подтвержденным статическим результатом. Если код, определяющий наличие проблемы, находится в другом файле, проверка не может подтвердить его, и утверждение остается неподтвержденным.
Эта проверка расходует кредиты вашей организации так же, как и другие задачи модели, в рамках установленных лимитов для pull request. Когда кредиты или часы работы исчерпаются, проверка не запустится, и в отзыве будет указано: «Возможную проблему безопасности не удалось подтвердить: исчерпаны кредиты или часы работы организации».
Что приводит к отклонению рецензирования
| Наблюдать | Применять | |
|---|---|---|
| Подтвержденное утверждение уровня порога и выше (по умолчанию — высокий) | Нейтрально, «УТВЕРЖДЕНИЕ ПОДТВЕРЖДЕНО» | Проверка Coroid Review завершается отклонением, «УТВЕРЖДЕНИЕ ПОДТВЕРЖДЕНО» |
| Утверждение, которое не подтверждено | Никогда не отклоняет | Никогда не отклоняет |
Подтвержденное критическое или высокое утверждение приводит к отклонению рецензирования Coroid даже если в Quality Control рецензирование настроено как рекомендательное. Это единственное исключение из правила, согласно которому рекомендательные рецензирования никогда не отклоняют. Рецензирование, требующее внесения изменений только из-за неподтвержденных утверждений о безопасности, считается рекомендательным.
Для рецензирования безопасности в проекте должна быть включена функция Coroid Review. Если Coroid Review отключена, соответствующая строка в разделе Безопасность → Настройки будет об этом указывать.
Что поступает в GitHub
Перед тем как любой текст отзыва, комментарий или проверка попадут в GitHub, они проходят через этап публикации. В публичном репозитории или в репозитории, видимость которого не может подтвердить Coroid, информация о неопубликованной проблеме безопасности заменяется на сообщение «Coroid обнаружил возможную проблему безопасности; подробности — в Coroid», с указанием ссылки. См. Раскрытие информации.