Skip to main content

Сведения о безопасности цепочки поставок

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

Сведения о безопасности цепочки поставок на GitHub

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

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

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

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

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

В GitHub существуют следующие возможности цепочки поставок.

  • Граф зависимостей
  • Проверка зависимостей
  • Dependabot alerts
  • Dependabot updates
    • Dependabot security updates
    • Dependabot version updates

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

Другие возможности цепочки поставок в GitHub зависят от сведений, предоставляемых графом зависимостей.

  • Проверка зависимостей использует граф зависимостей для определения изменений зависимостей и помогает понять влияние этих изменений на безопасность при проверке запросов на вытягивание.
  • Dependabot перекрестно ссылается на данные зависимостей, предоставляемые граф зависимостей со списком рекомендаций, опубликованных в GitHub Advisory Database, сканирует зависимости и создает Dependabot alerts при обнаружении потенциальной уязвимости.
  • Dependabot security updates используют граф зависимостей и Dependabot alerts для обновления зависимостей с известными уязвимостями в репозитории.

Dependabot version updates не используют граф зависимостей и вместо него полагаются на семантическое управление версиями зависимостей. Dependabot version updates помогают поддерживать ваши зависимости в актуальном состоянии, даже если в них нет уязвимостей.

Рекомендации по обеспечению безопасности сквозной цепочки поставок, включая защиту личная учетная запись, кода и процессов сборки, см. в разделе "Защита сквозной цепочки поставок".

Обзор возможностей

Что такое граф зависимостей

Чтобы создать граф зависимостей, GitHub просматривает явные зависимости репозитория, объявленные в файлах манифеста и блокировки. Если этот параметр включен, граф зависимостей автоматически анализирует все известные файлы манифеста пакетов в репозитории и использует их для построения графа с известными именами и версиями зависимостей.

  • Граф зависимостей содержит сведения о ваших прямых и транзитивных зависимостях.
  • Граф зависимостей автоматически обновляется, когда вы отправляете в GitHub фиксацию, которая изменяет или добавляет поддерживаемый файл манифеста или блокировки в ветвь по умолчанию, а также когда кто-либо отправляет в репозиторий изменение одной из ваших зависимостей.
  • Чтобы просмотреть граф зависимостей, откройте главную страницу репозитория в GitHub и перейдите на вкладку Аналитика.
  • Если у вас есть по крайней мере доступ на чтение к репозиторию, вы можете экспортировать граф зависимостей для репозитория в качестве совместимого с SPDX программного обеспечения, счета за материалы (SBOM) с помощью пользовательского интерфейса GitHub или GitHub REST API. Дополнительные сведения см. в разделе Экспорт программного счета за материалы для репозитория.

Кроме того, можно использовать API отправки зависимостей для отправки зависимостей от выбранного диспетчера пакетов или экосистемы, даже если экосистема не поддерживается граф зависимостей для анализа манифестов или блокировки файлов. Зависимости, отправленные в проект с помощью API отправки зависимостей показывают, какой детектор использовался для их отправки и когда они были отправлены. Дополнительные сведения о API отправки зависимостейсм. в разделе "Использование API отправки зависимостей".

Дополнительные сведения о граф зависимостей см. в разделе "Сведения о графе зависимостей".

Что такое проверка зависимостей

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

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

Дополнительные сведения о проверке зависимостей см. в разделе "Сведения о проверке зависимостей".

Что такое Dependabot

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

Термин "Dependabot" включает следующие функции:

  • Dependabot alerts — отображаемые уведомления на вкладке Безопасность для репозитория и в графе зависимостей репозитория. Оповещение содержит ссылку на затронутый файл в проекте, а также сведения об исправленной версии.
  • Dependabot updates:
    • Dependabot security updates — инициированные обновления ваших зависимостей до безопасной версии при срабатывании оповещения.
    • Dependabot version updates — запланированные обновления до последней версии для поддержания ваших зависимостей в актуальном состоянии.

Запросы на вытягивание, открытые Dependabot, могут активировать рабочие процессы, выполняющие действия. Дополнительные сведения см. в разделе "Автоматизация Dependabot с помощью GitHub Actions".

По умолчанию:

  • Если для репозитория включен параметр GitHub Actions, GitHub запускает Dependabot updates на GitHub Actions.

  • Если GitHub Actions не включен для репозитория, GitHub создает Dependabot alerts с помощью встроенного приложения Dependabot в GitHub.

Дополнительные сведения см. в разделе Сведения о зависимостях на GitHub Actions runners.

Dependabot security updates может исправить уязвимые зависимости в GitHub Actions. При включении обновлений системы безопасности Dependabot автоматически создает запрос на вытягивание для обновления уязвимых данных GitHub Actions, используемых в рабочих процессах до минимальной исправленной версии. Дополнительные сведения см. в разделе "Сведения об обновлениях для системы безопасности Dependabot".

Что такое оповещения Dependabot

Dependabot alerts выделите репозитории, затронутые недавно обнаруженной уязвимостью на основе граф зависимостей и GitHub Advisory Database, которая содержит рекомендации по известным уязвимостям.

  • Dependabot выполняет сканирование для обнаружения небезопасных зависимостей и отправляет Dependabot alerts, когда происходит следующее.
    • В GitHub Advisory Database добавляется новая рекомендация.
    • Изменяется граф зависимостей для репозитория.
  • Dependabot alerts отображаются на вкладке "Безопасность" для репозитория и в граф зависимостей репозитория. Оповещение содержит ссылку на затронутый файл в проекте, а также сведения об исправленной версии.

Дополнительные сведения см. в разделе Сведения об оповещениях Dependabot.

Что такое обновления Dependabot

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

Dependabot security updates:

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

Dependabot version updates:

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

Дополнительные сведения о Dependabot updatesсм. в разделе "[AUTOTITLE" и "Сведения об обновлениях для системы безопасности Dependabot](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)".

Доступность функций

Общедоступные репозитории:

  • Граф зависимостей — включен по умолчанию и его нельзя отключить.
  • Проверка зависимостей — включена по умолчанию и ее нельзя отключить.
  • Dependabot alerts  — не включены по умолчанию. GitHub обнаруживает небезопасные зависимости и отображает сведения в графе зависимостей, но не создает Dependabot alerts по умолчанию. Владельцы репозитория или пользователи с правами администратора могут включить Dependabot alerts. Вы также можете включить или отключить оповещения Dependabot для всех репозиториев, принадлежащих вашей учетной записи пользователя или организации. Дополнительные сведения см. в разделе "[AUTOTITLE" илиУправление параметрами безопасности и анализа для личной учетной записи](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)".

Частные репозитории

  • Граф зависимостей — не включен по умолчанию. Эту возможность могут включать администраторы репозитория. Дополнительные сведения см. в разделе Изучение зависимостей репозитория.

  • Проверка зависимостей — доступна в частных репозиториях, принадлежащих организациям, которые используют GitHub Enterprise Cloud и имеют лицензию на GitHub Advanced Security. Дополнительные сведения см. в документации по GitHub Enterprise Cloud.

  • Dependabot alerts  — не включены по умолчанию. Владельцы частных репозиториев или пользователи с правами администратора могут включить Dependabot alerts путем включения графа зависимостей и Dependabot alerts для своих репозиториев. Вы также можете включить или отключить оповещения Dependabot для всех репозиториев, принадлежащих вашей учетной записи пользователя или организации. Дополнительные сведения см. в разделе "[AUTOTITLE" илиУправление параметрами безопасности и анализа для личной учетной записи](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)".

Репозиторий любого типа

  • Dependabot security updates  — не включены по умолчанию. Вы можете включить Dependabot security updates для любого репозитория, использующего Dependabot alerts и граф зависимостей. Сведения о включении обновлений системы безопасности см. в разделе "Настройка обновлений для системы безопасности Dependabot".
  • Dependabot version updates  — не включены по умолчанию. Включать Dependabot version updates могут пользователи с разрешениями на запись в репозитории. Сведения о включении обновлений версий см. в разделе "Настройка обновлений версий Dependabot".