Skip to main content

Поиск и исправление первой уязвимости кода

Изучите основы защиты кода, разрешив оповещение code scanning в демо-репозитории.

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

К счастью, существуют такие инструменты code scanning , которые автоматически находят, объясняют и даже исправляют уязвимости в ваших публичных репозиториях. В этом уроке вы научитесь сохранять безопасность своей работы с code scanningпомощью .

Настройка демонстрационного репозитория

Давайте приступим к работе с вилкой демонстрационного проекта с уязвимостью безопасности. Этот проект создает простую веб-страницу, но так как мы не развернем проект, в этом упражнении отсутствует риск безопасности.

  1. Перейдите в репозиторий new2code/code-scanning-demo .
  2. В правом верхнем углу страницы нажмите «Форк».
  3. На появившемся экране нажмите кнопку "Создать вилку".

Поиск уязвимостей в коде

Теперь, когда мы настроили проект, давайте включим code scanning форк, чтобы проверить уязвимости в коде.

  1. Вернувшись на GitHub, на главной странице вашего репозитория, нажмите Security and quality.
  2. В строке «Code scanning уведомления» нажмите Настроить code scanning.
  3. В разделе «Инструменты» рядом с «CodeQL анализом» выберите «Настройка», затем нажмите «По умолчанию».
  4. В всплывающем окне нажмите Включить CodeQL. Это запустит GitHub Actions рабочий процесс, который сканирует ваш код на наличие уязвимостей.
  5. Чтобы проверить статус вашего рабочего процесса, в панели навигации нажмите «Действия».
  6. Когда рабочий процесс завершён, в панели навигации нажмите Security and quality.
  7. Чтобы просмотреть code scanning уведомление, обнаруженное рабочим процессом, в боковой навигации нажмите Code scanning, затем нажмите Отражённое кросс-сайтовое скриптирование.

Понимание code scanning предупреждения

Теперь, когда code scanning обнаружена уязвимость в коде, давайте разберём информацию, предоставленную в оповещении.

Расположение

В оповещении отображается небольшая предварительная версия файла, в центре строк кода, создающих уязвимость. В нашем случае уязвимость обнаруживается в строке 8 файла index.js , где мы реализуем предоставленные пользователем входные данные на нашем сайте.

Если мы рассмотрим более подробный взгляд, мы можем увидеть, что базовая проблема возникает в строке 7, когда мы назначаем greet входные данные пользователя без проверки вредоносного кода. Чтобы просмотреть пошаговые представления уязвимости в нашем коде, в выноске под уязвимыми линиями нажмите кнопку "Показать пути".

Снимок экрана: расположение оповещения code scanning. Кнопка "Показать пути" выделена оранжевым цветом.

Описание и рекомендация

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

Снимок экрана: сведения о оповещении code scanning. Раскрывающийся список с надписью "Показать больше" описывается оранжевым цветом.

В нашем случае рекомендация заключается в очистке входных данных пользователей перед его использованием. Это означает, что необходимо проверить входные данные для вредоносного кода, а затем очистить его при необходимости.

Совет

Если вы не совсем понимаете, как рекомендуется, попробуйте спросить Копилот Чат объяснение.

Временная шкала

Наконец, можно увидеть временную шкалу оповещения в нижней части страницы. Наша временная шкала содержит фиксацию, в которой обнаружена уязвимость, и автоматически обновляется при исправлении уязвимости.

Снимок экрана: временная шкала для оповещения code scanning.

Автоматическое исправление уязвимости

Чтобы быстро и легко обеспечить безопасность нашего проекта, давайте используем GitHub Copilot Автофикс для code scanning.

  1. Под заголовком оповещения, в поле с предложением «Ускорить устранение этого оповещения с Автофикс второго пилота помощью для CodeQL», нажмите Generate fix.

  2. После Copilot генерации предложения исправления оно описывает предлагаемые изменения, отображает предварительный просмотр изменений и выявляет любые добавленные зависимости. Уделите минуту, чтобы прочитать Copilotработу .

  3. Чтобы создать запрос на вытягивание с исправлением, нажмите кнопку "Зафиксировать в новую ветвь", а затем нажмите кнопку "Зафиксировать изменение".

  4. После создания запроса на вытягивание черновика в нижней части страницы нажмите кнопку "Готово к просмотру ", чтобы сделать его слиянием.

  5. Чтобы применить исправление, нажмите кнопку "Объединить запрос на вытягивание", а затем нажмите кнопку "Подтвердить слияние".

    После слияния pull-запроса и повторного code scanning запуска рабочего процесса оповещение автоматически закроется, а фиксация, исправляющая уязвимость, будет добавлена на таймлайн.

Примечание.

В реальных проектах всегда стоит просматривать предлагаемые Copilot изменения, прежде чем фиксировать их в коде.

Следующие шаги

Теперь, когда вы попробовали code scanning демо-репозиторий, включите его в своих проектах , чтобы быстро находить и исправлять текущие и будущие уязвимости.

Теперь, когда вы обеспечили код, который вы написали самостоятельно, выполните следующий шаг к безопасному коду, проверив безопасность зависимостей. См . раздел AUTOTITLE.