Правила выявляют известные шаблоны. Аудит безопасности ищет то, что упускают правила: модель AI анализирует самый важный код проекта и код, измененный после последнего аудита, чтобы обнаружить уязвимости. Только результаты независимой проверки считаются подтвержденными результатами.
Включение функции
Безопасность → Настройки → Аудит безопасности У него есть переключатель и возможность задать частоту выполнения: ежедневно, еженедельно (по умолчанию) или ежемесячно. Пока вы не включите его, он будет работать согласно вашему плану: для платных тарифов — включен, для бесплатного тарифа — отключен. Вы можете включить его для организации с бесплатным тарифом или отключить для платной организации, как для настроек всей организации, так и для отдельного проекта.
Аудит анализирует ветку по умолчанию каждого проекта, где эта функция включена.
Что делает один запуск
- Выберите файлы. Модель Coroid ранжирует исходные файлы проекта и анализирует сначала самые важные: код, относящийся к модели угроз's высокоприоритетным участкам и точкам входа, причем код, измененный после последнего аудита, анализируется раньше, чем код, не менялся. Один запуск анализирует не более 40 файлов.
- Ищите уязвимости. Для каждого файла модель ищет фиксированный набор типов уязвимостей: SQL-инъекции, командные и другие инъекции, межсайтовый скриптинг, межсайтовая подделка запросов, подделка запросов на стороне сервера, обход путей доступа, открытые перенаправления, небезопасная десериализация, нарушение контроля доступа, нарушение аутентификации, жестко закодированные учетные данные, слабое шифрование, утечка информации и исчерпание ресурсов. Модель должна указать номера строк; ответ, указывающий за пределы показанного кода, игнорируется.
- Подтвердите. Каждая проблема регистрируется как Еще не подтверждено. Для критических и высокоприоритетных проблем независимая проверка повторно определяет наличие проблемы по коду в данном коммите. Если это подтверждается, проблема становится подтвержденным результатом с валидированным статическим доказательством в качестве подтверждения. См. Доказательства.
- Подтвердите. Для подтвержденной критической или высокоприоритетной проблемы аудит создает доказательство и запускает его против собранного вами приложения дважды. См. Доказательства.
- Ищите варианты. Ошибки часто бывают группами. Для каждой подтвержденной проблемы Coroid ищет в репозитории такой же шаблон и проверяет каждое совпадение тем же способом.
Результаты аудита отображаются в разделе Аудит безопасности в качестве источника в разделе Безопасность → Результаты.
Стоимость использования
Для аудита используется модель AI, поэтому он расходует ваши кредиты и часы работы агентов так же, как и другие задачи, и отображается в Mission Control во время выполнения, а также в разделе Настройки → Активность с указанием своей стоимости.
Каждый запуск имеет свой бюджет. Когда бюджет исчерпан или заканчиваются ваши кредиты или часы работы агентов, запуск останавливается, сохраняя уже подтвержденные результаты; следующий запуск начинается с анализа самого важного кода. Запуск для крупного проекта продолжается в нескольких задачах, поэтому один запуск никогда не занимает слот агента надолго.
Исправление найденных ошибок
Подтвержденная проблема с уровнем серьезности, достаточным для исправления, автоматически инициирует процесс исправления в рамках обязательства по устранению уязвимостей в безопасности, так же как и уязвимая зависимость. Владельцы и администраторы также могут выбрать Исправить для любой открытой проблемы с кодом. См. Pull-запросы на исправление.
Результаты аудита относятся к вашему собственному коду, поэтому они не являются публичными. В публичном репозитории или в репозитории, видимость которого не может подтвердить Coroid, исправление хранится в приватном режиме до тех пор, пока владелец или администратор не опубликует его. См. Раскрытие информации.
Доказательства
Для подтвержденной критической или высокоприоритетной проблемы аудит также создает доказательство: небольшой тест «черного ящика», демонстрирующий уязвимое поведение извне запущенного приложения, например, когда один пользователь читает заказ другого пользователя. Модель может отказаться от создания доказательства, если такой вариант невозможен; в этом случае проблема сохраняет независимую проверку в качестве подтверждения.
Coroid запускает доказательство против вашего проекта, собранного из коммита, использованного для аудита:
- Система извлекает этот коммит, устанавливает его зависимости и собирает проект, как это делается для предпросмотра.
- Сборка запускается в изолированной среде без возможности выхода наружу: без доступа в интернет, без внешних запросов на разрешение имен, без других сервисов, без учетных данных и без клиентских данных. База данных, кэш или очередь, необходимые приложению, запускаются внутри той же среды, но пустые. Перед запуском доказательства среда проверяется на возможность доступа к чему-либо внешнему; если такой доступ есть, запуск останавливается и ничего не регистрируется.
- Доказательство, написанное так, чтобы создавать собственных пользователей и данные через приложение, запускается и сообщает о наличии ошибки.
Второй запуск в новой среде с собственной сборкой также должен зафиксировать ошибку. Только после этого проблема получает воспроизведенную ошибку в качестве подтверждения. Доказательство, которое не воспроизводит ошибку или которое не подтверждается вторым запуском, ничего не меняет.
Раздел Доказательства проблемы показывает, что было запущено: файлы и команды доказательства, коммит и конечные результаты его выполнения. Все, кто может видеть проблему, могут прочитать эту информацию. Доказательства сохраняются до тех пор, пока проблема открыта, и в течение 90 дней после ее закрытия.
Сохранение доказательства для проверки регрессии
Владельцы и администраторы могут сохранить воспроизведённое доказательство с помощью Продолжайте проверять каждое изменение. Затем проверка запускается повторно в новой изолированной среде при каждом выполнении Quality Graph для проекта, относительно коммита этой версии: проверка проходит успешно, пока проблема остаётся устранённой, и завершается неудачей, если она возвращается. В системе GitHub проверка лишь указывает на то, что проверка регрессии в области Безопасности прошла или не прошла; само доказательство хранится в Coroid. Сохранённое доказательство хранится до тех пор, пока проверка активна. Для этого проекту требуется Quality Graph (настройка осуществляется в разделе Quality Control).
Для работы доказательств необходим модуль запуска доказательств, который Coroid включает по отдельным средам. Там, где он ещё не включён, подтверждающим доказательством служит описанная выше независимая проверка.
Отчёт аудита Безопасности
В разделе Новая работа больше не предоставляется письменный отчёт аудита Безопасности. Вместо него предусмотрена ссылка на результаты аудита в разделе Безопасность.