При обучении коду обычно случайно вводить уязвимости в проекты. Если эти проблемы безопасности не устранены перед предоставлением общего доступа к работе, злоумышленники могут использовать их для управления кодом и доступа к конфиденциальным данным, поэтому важно определить и исправить их как можно скорее.
К счастью, существуют такие инструменты code scanning , которые автоматически находят, объясняют и даже исправляют уязвимости в ваших публичных репозиториях. В этом уроке вы научитесь сохранять безопасность своей работы с code scanningпомощью .
Настройка демонстрационного репозитория
Давайте приступим к работе с вилкой демонстрационного проекта с уязвимостью безопасности. Этот проект создает простую веб-страницу, но так как мы не развернем проект, в этом упражнении отсутствует риск безопасности.
- Перейдите в репозиторий
new2code/code-scanning-demo. - В правом верхнем углу страницы нажмите «Форк».
- На появившемся экране нажмите кнопку "Создать вилку".
Поиск уязвимостей в коде
Теперь, когда мы настроили проект, давайте включим code scanning форк, чтобы проверить уязвимости в коде.
- Вернувшись на GitHub, на главной странице вашего репозитория, нажмите Security and quality.
- В строке «Code scanning уведомления» нажмите Настроить code scanning.
- В разделе «Инструменты» рядом с «CodeQL анализом» выберите «Настройка», затем нажмите «По умолчанию».
- В всплывающем окне нажмите Включить CodeQL. Это запустит GitHub Actions рабочий процесс, который сканирует ваш код на наличие уязвимостей.
- Чтобы проверить статус вашего рабочего процесса, в панели навигации нажмите «Действия».
- Когда рабочий процесс завершён, в панели навигации нажмите Security and quality.
- Чтобы просмотреть code scanning уведомление, обнаруженное рабочим процессом, в боковой навигации нажмите Code scanning, затем нажмите Отражённое кросс-сайтовое скриптирование.
Понимание code scanning предупреждения
Теперь, когда code scanning обнаружена уязвимость в коде, давайте разберём информацию, предоставленную в оповещении.
Расположение
В оповещении отображается небольшая предварительная версия файла, в центре строк кода, создающих уязвимость. В нашем случае уязвимость обнаруживается в строке 8 файла index.js , где мы реализуем предоставленные пользователем входные данные на нашем сайте.
Если мы рассмотрим более подробный взгляд, мы можем увидеть, что базовая проблема возникает в строке 7, когда мы назначаем greet входные данные пользователя без проверки вредоносного кода. Чтобы просмотреть пошаговые представления уязвимости в нашем коде, в выноске под уязвимыми линиями нажмите кнопку "Показать пути".

Описание и рекомендация
Под предварительным просмотром файла code scanning приведено более подробное описание уязвимости. Чтобы увидеть рекомендуемое исправление, а также примеры уязвимого и исправленного кода, нажмите «Показать больше».

В нашем случае рекомендация заключается в очистке входных данных пользователей перед его использованием. Это означает, что необходимо проверить входные данные для вредоносного кода, а затем очистить его при необходимости.
Совет
Если вы не совсем понимаете, как рекомендуется, попробуйте спросить Копилот Чат объяснение.
Временная шкала
Наконец, можно увидеть временную шкалу оповещения в нижней части страницы. Наша временная шкала содержит фиксацию, в которой обнаружена уязвимость, и автоматически обновляется при исправлении уязвимости.

Автоматическое исправление уязвимости
Чтобы быстро и легко обеспечить безопасность нашего проекта, давайте используем GitHub Copilot Автофикс для code scanning.
-
Под заголовком оповещения, в поле с предложением «Ускорить устранение этого оповещения с Автофикс второго пилота помощью для CodeQL», нажмите Generate fix.
-
После Copilot генерации предложения исправления оно описывает предлагаемые изменения, отображает предварительный просмотр изменений и выявляет любые добавленные зависимости. Уделите минуту, чтобы прочитать Copilotработу .
-
Чтобы создать запрос на вытягивание с исправлением, нажмите кнопку "Зафиксировать в новую ветвь", а затем нажмите кнопку "Зафиксировать изменение".
-
После создания запроса на вытягивание черновика в нижней части страницы нажмите кнопку "Готово к просмотру ", чтобы сделать его слиянием.
-
Чтобы применить исправление, нажмите кнопку "Объединить запрос на вытягивание", а затем нажмите кнопку "Подтвердить слияние".
После слияния pull-запроса и повторного code scanning запуска рабочего процесса оповещение автоматически закроется, а фиксация, исправляющая уязвимость, будет добавлена на таймлайн.
Примечание.
В реальных проектах всегда стоит просматривать предлагаемые Copilot изменения, прежде чем фиксировать их в коде.
Следующие шаги
Теперь, когда вы попробовали code scanning демо-репозиторий, включите его в своих проектах , чтобы быстро находить и исправлять текущие и будущие уязвимости.
Теперь, когда вы обеспечили код, который вы написали самостоятельно, выполните следующий шаг к безопасному коду, проверив безопасность зависимостей. См . раздел AUTOTITLE.