Сведения о безопасности цепочки поставок на GitHub
При разработке проекта программного обеспечения, скорее всего, вы используете другое программное обеспечение для создания и запуска приложения, таких как библиотеки с открытым кодом, платформы или другие средства. Эти ресурсы совместно называются "зависимостями", так как проект зависит от них для правильной работы. Проект может полагаться на сотни этих зависимостей, формируя то, что называется вашей "цепочкой поставок".
Цепочка поставок может представлять проблему безопасности. Если у одной из зависимостей есть известная слабость системы безопасности или ошибка, злоумышленники могут использовать эту уязвимость, например вставлять вредоносный код ("вредоносные программы"), украсть конфиденциальные данные или вызвать другой тип нарушений в проекте. Этот тип угрозы называется "атакой цепочки поставок". Наличие уязвимых зависимостей в цепочке поставок компрометирует безопасность собственного проекта, и вы также рискуете у пользователей.
Одной из наиболее важных вещей, которые можно сделать для защиты цепочки поставок, заключается в исправлении уязвимых зависимостей и замене любых вредоносных программ.
Вы добавляете зависимости непосредственно в цепочку поставок, когда указываете их в файле манифеста или файле блокировки. Зависимости также могут быть включены транзитивно, то есть, даже если вы не указываете конкретную зависимость, но ваша зависимость использует ее, вы также зависите от этой зависимости.
GitHub Enterprise Server предоставляет ряд функций, которые помогут вам понять зависимости в вашей среде, узнать об уязвимостях в этих зависимостях и исправить их.
В GitHub Enterprise Server существуют следующие возможности цепочки поставок.
- Граф зависимостей
- Проверка зависимостей
- 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 Enterprise Server и перейдите на вкладку Аналитика.
- Если у вас есть по крайней мере доступ на чтение к репозиторию, вы можете экспортировать граф зависимостей для репозитория в качестве совместимого с 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 security updates и Dependabot version updates требуют от GitHub Actions для выполнения на GitHub Enterprise Server. Dependabot alerts не требуют GitHub Actions. Дополнительные сведения см. в разделе Включение Dependabot для предприятия.
Dependabot security updates может исправить уязвимые зависимости в GitHub Actions. При включении обновлений системы безопасности Dependabot автоматически создает запрос на вытягивание для обновления уязвимых данных GitHub Actions, используемых в рабочих процессах до минимальной исправленной версии. Дополнительные сведения см. в разделе "Сведения об обновлениях для системы безопасности Dependabot".
Что такое оповещения Dependabot
Dependabot alerts выделите репозитории, затронутые недавно обнаруженной уязвимостью на основе граф зависимостей и GitHub Advisory Database, которая содержит рекомендации по известным уязвимостям.
- Dependabot выполняет сканирование для обнаружения небезопасных зависимостей и отправляет Dependabot alerts, когда происходит следующее.
- Новые консультативные данные синхронизируются с экземпляром каждый час с GitHub.com. Дополнительные сведения см. в разделе Просмотр рекомендаций по безопасности в базе данных рекомендаций по GitHub.
- Изменяется граф зависимостей для репозитория.
- 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 — не включены по умолчанию. Обе возможности настраиваются на уровне предприятия владельцем предприятия. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Включение Dependabot для предприятия](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise)".
-
Проверка зависимостей— доступна при включении граф зависимостей для экземпляра, а для организации или репозитория включена функция Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.
-
Dependabot security updates — не включены по умолчанию. Вы можете включить Dependabot security updates для любого репозитория, использующего Dependabot alerts и граф зависимостей. Сведения о включении обновлений системы безопасности см. в разделе "Настройка обновлений для системы безопасности Dependabot".
-
Dependabot version updates — не включены по умолчанию. Включать Dependabot version updates могут пользователи с разрешениями на запись в репозитории. Сведения о включении обновлений версий см. в разделе "Настройка обновлений версий Dependabot".