Исправление проблем, обнаруженных в коде (SAST)

Обзор

Функция исправления кода (SAST) на базе ИИ в Mend использует передовую модель искусственного интеллекта, на основе ChatGPT, для повышения безопасности кода. Она предоставляет практические рекомендации по исправлению обнаруженных уязвимостей и автоматизирует процесс их устранения. Это решение беспрепятственно интегрируется в рабочий процесс безопасности, гарантируя эффективное снижение рисков благодаря автоматизированному исправлению кода.

После активации система оценивает обнаруженные проблемы с помощью механизма обнаружения Mend SAST Gen 2 и предлагает высоконадежные исправления кода, которые можно просмотреть как в Mend Repository Integrations, так и в Mend Platform. Отзывы на эти предложения помогают усовершенствовать будущие рекомендации, а дешборды в приложении Mend дают представление о тенденциях и объемах исправлений на разных организационных уровнях.

Какие данные собирает Mend для исправления кода на основе ИИ?

Данные клиентов

Исправление кода на основе Mend AI не собирает данные клиентов для обучения и не передает их третьим лицам.

  • Процесс исправления основан исключительно на фрагментах исходного кода, связанных с результатами проверки кода.
  • Дополнительные данные не собираются, а модель искусственного интеллекта работает на отдельном экземпляре, гарантируя, что никакие данные не передаются сторонним LLM-провайдерам.
  • При желании можно предоставить обратную связь, чтобы помочь Mend отслеживать и улучшать решение.

Как это сделать

Необходимые условия

  • Учетная запись Mend SAST на платформе Mend
  • Включена функция исправления кода для нужной организации Mend
  • Подключить Mend к необходимому проекту Jira (чтобы просматривать предложения по исправлениям в Jira)
  • Включить Code Findings Remediation в меню General Administration:
AI Usage
  • Если включено, фрагменты исходного кода будут отправлены в ИИ-модель Mend.io для предоставления рекомендаций по исправлению. Чтобы получить предложения по исправлению, размер фрагмента должен быть не менее 10 строк кода, что является значением по умолчанию. Можно отключить эту опцию, чтобы предотвратить любой обмен кодом с моделью и полностью отключить исправления на основе Mend Code AI.
  • После включения Code Findings Remediation, чтобы исправление кода заработало, проекты нужно повторно отсканировать. Затем нужно выйти из системы и войти снова, чтобы обновить интерфейс и просмотреть исправление кода.

Языки, которые поддерживаются исправлением кода на основе ИИ в Mend

Исправление кода на основе ИИ в Mend поддерживает следующие языки и CWE (Common Weakness Enumeration – общий перечень уязвимостей):

Язык CWE
C#
Java
JavaScript
Python
CWE-22 – Обход пути (Path Traversal)
CWE-79 – Межсайтовый скриптинг (XSS)
CWE-89 – SQL-инъекция
CWE-117 – Инъекция журналов (Log Injection)
CWE-601 – Открытое перенаправление (Open Redirect)

Включение исправления кода на основе ИИ в Mend в интеграциях репозитория Mend

Чтобы настроить исправление кода на основе ИИ через поддерживаемые интеграции репозитория Mend, необходимо добавить параметр “enableRemediation”: true в секцию scanSettingsSAST в файле .whitesource.

 "scanSettingsSAST": {
    "enableScan": true,
    "enableRemediation": true,
    "scanPullRequests": true,
    "incrementalScan": true,
    "baseBranches": [],
    "snippetSize": 10
  }

Просмотр предложенных исправлений кода

Платформа Mend

В рамках платформы Mend исправления кода вычисляются по запросу и могут быть просмотрены в представлении результатов анализа кода программы/проекта:

1. Нужно выбрать проект и перейти в раздел Code Findings.

Code Findings

2. В таблице Code Findings необходимо убедиться, что столбец Remediation добавлен к представлению, чтобы увидеть, для каких находок доступно исправление.

3. Выбрать Code Finding с доступным исправлением, чтобы просмотреть детали исправления.

4. Можно просмотреть описание исправления, предложенное Mend.

5. Есть возможность оставить отзыв о предложенном исправлении (Like / Unlike). Эти отзывы отслеживаются, но не используются для улучшения предложений, поскольку Mend не делится пользовательским кодом с моделью.

6. Также можно предоставить подробный отзыв, стоит нажать на Provide detailed feedback.

Provide detailed feedback

7. Появится всплывающее окно с различными вариантами для выбора, также можно описать отзыв своими словами. Чтобы отправить отзыв, следует нажать Submit Feedback.

Submit Feedback

Интеграция с репозиторием Mend

Чтобы просмотреть предложения по исправлениям в репозитории исходного кода, следует активировать и настроить интеграцию с репозиторием Mend с помощью лицензионного ключа Mend.

Если репозиторий просканирован, то есть возможность просмотреть и применить предложенные исправления кода двумя способами:

Отчет о безопасности кода Mend

1. Перейти к отчету Mend Code Security Report в разделе GitHub Issues.

2. Нажать на Remediation Suggestion, чтобы просмотреть доступное исправление кода для данной проблемы.

Mend Code Security Report 1

3. Вы можете просмотреть предложенные исправления и использовать следующий метод, чтобы понять результаты:

  • Красные линии обозначают удаленные строки исходного кода.
  • Зеленые линии обозначают добавленный код для завершенного исправления.
Mend Code Security Report 2

4. Также можно оставить отзыв о предоставленном исправлении (Like / Unlike). Эти отзывы отслеживаются, но не используются для улучшения предложений, поскольку Mend не делится пользовательским кодом с моделью.

Проверка безопасности кода Mend

1. После создания запроса на удаление в ветке функций, нужно перейти в раздел Conversation.

Mend Code Security Check 1

2. Нажать на Remediation Suggestion, чтобы просмотреть доступное исправление кода для данной находки.

Mend Code Security Check 2

3. Можно просмотреть предложенные исправления и воспользоваться следующим методом, чтобы понять результаты:

  • Красные линии обозначают удаленные строки исходного кода.
  • Зеленые линии обозначают добавленный код для завершенного исправления.
Mend Code Security Check 2

4. Есть возможность оставить отзыв о предоставленном исправлении (Like / Unlike). Эти отзывы отслеживаются, но не используются для улучшения предложений, поскольку Mend не делится пользовательским кодом с моделью.

Mend CLI

В Mend CLI после завершения сканирования кода в результатах консоли отображается количество предложенных исправлений:

Mend CLI

Интеграция Mend с Jira

Чтобы просматривать предложения по исправлениям на доске проекта Jira, нужно подключить интеграцию Mend с проектом Jira. Кроме того, Mend рекомендует настроить рабочие процессы так, чтобы они автоматически создавали проблему в Jira для результатов анализа кода.

Когда результаты сканирования соответствуют условиям рабочего процесса и выбрано действие – создание Jira Issue, Mend создаст проблемы для этих результатов. Если есть предложение по исправлению, оно будет включено в описание задачи.

Также можно создать задачу Jira вручную по требованию для находки.

1. В настроенном проекте Jira с интеграцией Mend, нужно перейти в раздел Issues:

Mend for Jira Integration 1

2. Просмотреть результаты и найти Remediation Suggestion и Remediation Suggestion Snippet, где можно найти рекомендацию Mend.io, включая собственное предложенное исправление кода.

Mend for Jira Integration 2

3. Следует использовать следующий метод, чтобы понять результаты:

  • Красные линии обозначают удаленные строки оригинального кода.
  • Зеленые линии показывают добавленный код для завершенного исправления.

Примечание: Номера строк во фрагменте не совпадают с номерами строк исходного кода, поскольку фрагмент кода Jira начинается со строки 1, а не с фактических строк исходного кода.

Как исправить результаты проверки кода

После завершения проверки безопасности кода Mend Code Security Check (SAST) в репозитории, можно просмотреть предложенные исправления и создать Pull-запрос для внедрения исправления кода.

Отчет о безопасности кода Mend

1. Перейти к Mend Code Security Report в созданной задаче GitHub.

2. Нажать на Remediation Suggestion, чтобы просмотреть доступное исправление кода для данной находки.

Code Security Report 1

3. Если нужно применить предложенное исправление, стоит нажать Create Pull Request.

Code Security Report 2

4. Перейти в раздел Pull Requests репозитория.

5. Открыть вновь созданный Pull Request после применения предложения по исправлению Mend.

Code Security Report 3

6. Можно просмотреть PR Explanation (объяснение PR) в комментариях к разговору.

7. Нажать Merge pull request, чтобы перенести исправление кода Mend в нужную ветку. Mend рекомендует дождаться завершения проверки безопасности кода исправления, прежде чем перемещать PR в соответствующую ветку.

Code Security Report 4

Проверка безопасности кода Mend

1. Перейти к Mend Code Security Check в созданном Pull-запросе GitHub и нажать на раздел Conversation.

2. Нажать Remediation Suggestion, чтобы просмотреть доступное исправление кода для данной находки.

Code Security Check 1

Если нужно применить предложенное исправление, можно выбрать один из двух способов:

3. Можно создать запрос, нажав на “Create Pull Request into название вашей ветки функций.

4. Обновить ветку функций с помощью комита, нажав “Update название вашей ветки функций.

Code Security Check 2

5. Если был создан Pull-запрос, следует перейти в раздел Pull Requests репозитория.

6. Открыть вновь созданный Pull-запрос после применения предложения по исправлению Mend.

Code Security Check 3

7. Можно просмотреть PR Explanation (объяснение PR) в комментариях к разговору.

8. Нажать Merge pull request, чтобы перенести исправление кода Mend в необходимую ветку. Mend рекомендует дождаться завершения проверки безопасности кода исправления, прежде чем перемещать этот PR в соответствующую ветку.

Code Security Check 4

Подписаться на новости