Я пытаюсь интегрировать сканирование кода безопасности с Gitlab CI. Я читал документацию, но все равно не могу понять, как именно нужно писать команды для SCS в файле yml (исходный файл: предупреждение SCS[идентификатор правила]: [описание предупреждения] [файл_проекта]). Мой Gitlab размещен на компьютере с Windows 10 без контейнера. Это проект .NET Framework 4.6.2, и я использую Visual Studio 2019. Я уже получил пакет SCS от NuGet. Кроме того, я читал о Fortify, но я застрял в той же проблеме.
Согласно документации GitLab, вы просто добавляете это включение в свой основной .gitlab-ci.yml
файл.
include:
- template: Security/SAST.gitlab-ci.yml
Шаблон определяет задание , которое использует пользовательский образ Docker и оболочку Go вокруг пакета сканирования кода безопасности. На самом деле он динамически добавляет пакет SCS к обнаруженным проектам, запускает сборку, фиксирует и анализирует выходные данные для создания отчета о безопасности.
Это происходит таким образом, потому что проект Security Code Scan запускается как анализатор во время сборки... это не обычное приложение CLI, хотя проблемы с этой опцией в основном игнорируются.
Обновление: вы можете просто добавить пакет сканирования кода безопасности в свой проект (ы)
$ dotnet add package SecurityCodeScan --version 3.5.3
И запустите обычную сборку в конвейере GitLab, читая предупреждения, которые появляются в журналах конвейера.
build:
stage: build
image: mcr.microsoft.com/dotnet/core/sdk:3.1
script:
- dotnet build
Вы также можете включить TreatWarningsAsErrors
, чтобы сломать сборку.
dotnet build /p:TreatWarningsAsErrors=true
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<PropertyGroup>
Таким образом вы не получите хороший прикрепленный отчет MR, только журналы конвейера. Интерактивный отчет конвейера не отображается, если у вас нет плана Gold.
С GitLab 13.9 (февраль 2021 г.) это будет работать и для нескольких проектов:
Поддержка нескольких проектов для сканирования .NET SAST
GitLab сканирование безопасности автоматически определяет язык кода и запускает соответствующие анализаторы.
При использовании монорепозиториев, микросервисов и многопроектных репозиториев в одном репозитории GitLab может существовать более одного проекта. Ранее наш инструмент .NET SAST мог обнаруживать в репозиториях только отдельные проекты.
В этом выпуске наш анализатор .NET SAST теперь может интеллектуально обнаруживать несколько файлов решений (.sln) в проектах .NET и сообщать об уязвимостях в них.
Это упростит и упростит пользователям многопроектных репозиториев .NET использование нашего сканирования SAST.
И виднее (ещё с GitLab 13.9, февраль 2021)
Страница конфигурации безопасности для всех пользователей
С SAST и Secret Detection , доступными для всех клиентов GitLab , мы хотели улучшить опыт разработчиков, включив доступное сканирование безопасности. У нас есть управляемая конфигурация для пользователей Ultimate, а теперь упрощенная версия этой возможности доступна для всех пользователей. Этот новый способ настройки позволяет разработчикам понять, какие проверки безопасности им доступны, найти соответствующую документацию и предоставить простые инструменты включения. В этом начальном выпуске мы поддерживаем кнопку для создания запроса на слияние для SAST. В будущем выпуске мы добавим дополнительные кнопки, чтобы легко включать другие типы сканирования.
-- Страница конфигурации безопасности для всех пользователей
Смотрите Документацию и Epic.
Он развивается с GitLab 13.11 (апрель 2021 г.)
GitLab + Semgrep: обновление SAST для будущего
GitLab SAST исторически работал на базе более дюжины анализаторов безопасности с открытым исходным кодом. Эти анализаторы ежемесячно выявляли миллионы уязвимостей для разработчиков, использующих GitLab.
Каждый из этих анализаторов зависит от языка и использует разные технологические подходы к сканированию. Эти различия приводят к накладным расходам на обновление, управление и поддержку дополнительных функций, которые мы строим на основе этих инструментов, и они создают путаницу для всех, кто пытается отлаживать.Команда GitLab Static Analysis постоянно оценивает новые анализаторы безопасности. Нас впечатлил относительно новый инструмент от команды разработчиков r2c под названием Semgrep.
Это быстрый инструмент статического анализа с открытым исходным кодом для поиска ошибок и обеспечения соблюдения стандартов кода.
Правила Semgrep выглядят как код, который вы ищете; это означает, что вы можете писать свои собственные правила без необходимости разбираться в абстрактных синтаксических деревьях (AST) или бороться с регулярными выражениями.Гибкий синтаксис правил Semgrep идеально подходит для оптимизации функции GitLab Пользовательские наборы правил для расширения и изменения правил обнаружения, что является популярным запросом от клиентов GitLab SAST. Semgrep также имеет растущий реестр с открытым исходным кодом, содержащий более 1000 правил сообщества.
Мы находимся в процессе перевода многих наших анализаторов SAST на основе ворса на Semgrep.
Этот переход поможет повысить стабильность, производительность, охват правил и предоставит клиентам GitLab доступ к правилам сообщества Semgrep и дополнительным возможностям пользовательских наборов правил, которые мы добавим в будущем. Нам понравилось работать с командой r2c, и нам не терпится перевести больше наших анализаторов на Semgrep. Вы можете прочитать больше в нашей эпопее перехода или попробовать наши первые экспериментальные анализаторы Semgrep для JavaScript, TypeScript и Python.
(Так что пока не для .Net, но скоро)
Мы в восторге от того, что этот переход означает для будущего GitLab SAST и более широкого сообщества Semgrep.
GitLab будет вносить свой вклад в проект с открытым исходным кодом Semgrep, включая дополнительные правила, чтобы гарантировать, что охват соответствует нашим существующим анализаторам или превосходит их.Смотрите Документацию и Epic.
Тот же GitLab 13.11 анонсирует:
См. GitLab 13.12 (май 2021 г.)
Semgrep SAST Analyzer для JavaScript, TypeScript и Python
В GitLab 13.11 мы анонсировали экспериментальный выпуск Semgrep, нового анализатора SAST для JavaScript, TypeScript и Python. Этот переход был разработан в сотрудничестве с r2c , командой Semgrep, которая разделяет нашу миссию — помогать разработчикам писать более безопасный код. После обширного бета-тестирования, когда сотни клиентов опробовали наш экспериментальный анализатор, мы готовы начать переход на Semgrep.
В версии 13.12 мы обновляем наш управляемый шаблон
SAST.gitlab-ci.yml
CI, чтобы автоматически запускать этот новый анализатор вместе с нашим существующим анализатором JavaScript и TypeScript, ESlint. В будущем выпуске мы полностью отключим ESLint, но пока он будет работать в унисон с Semgrep. Мы проделали работу по дедупликации результатов, поэтому вы не заметите никакой разницы в результатах. Если вы включите нашSAST.gitlab-ci.yml
, вам не нужно ничего делать, чтобы начать пользоваться преимуществами анализатора Semgrep, однако, если вы переопределяете или управляете своей собственной конфигурацией SAST CI, вам следует обновить свою конфигурацию CI.И GitLab, и r2c рады будущему этого перехода, который предоставит вам быстрое и широкое статическое тестирование безопасности приложений (SAST). Мы продолжим расширять анализатор Semgrep за счет новых правил обнаружения безопасности, а также расширять охват на другие языки. Мы создали выпуск отзывов, где вы можете поделиться своими впечатлениями об этом переходе или задать вопросы.
Смотрите Документацию и Epic.
См. GitLab 15.0 (май 2022 г.)
Сканирование SAST на основе Semgrep доступно для раннего внедрения
Теперь вы можете переключиться на сканирование на основе Semgrep для многих языков в GitLab SAST. Сканирование на основе Semgrep обеспечивает значительно более быстрый анализ, сокращение использования минут CI и более настраиваемые правила сканирования по сравнению с существующими языковыми анализаторами. Начиная с GitLab 15.0, он поддерживает C, Go, Java, JavaScript, Python и TypeScript.
В будущем выпуске мы изменим GitLab SAST, чтобы по умолчанию использовать только сканирование на основе Semgrep для поддерживаемых языков, и мы удалим анализаторы для конкретных языков, которые также сканируют их . (Это изменение ранее было запланировано для GitLab 15.0; работа по его завершению отслеживается в этой проблеме устаревания.)
Теперь вы можете заранее отключить устаревшие анализаторы для конкретных языков и вместо этого использовать сканирование на основе Semgrep, прежде чем мы изменим поведение по умолчанию. Мы обновили документацию, чтобы объяснить переход, включая рекомендации о том, когда вносить изменения в ваши конвейеры.
Несколько улучшений в версии 14.2 (август 2021 г.): about.gitlab.com/releases/2021/08/22/gitlab-14-2-released/…
CLI был недавно добавлен в версию 5.0.0 nuget.org/packages/security-scan