Сведения о безопасности цепочки поставок на 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 Actions. Некоторые экосистемы пакетов извлекают большую часть их транзитивных зависимостей во время сборки, поэтому отправка сведений о зависимостях, так как сборка происходит, обеспечивает более полное представление цепочки поставок.
- Вы можете увидеть граф зависимостей, открыв главную страницу репозитория на GitHub, и перейдя на вкладку Insights .
- Если у вас есть по крайней мере доступ на чтение к репозиторию, вы можете экспортировать граф зависимостей для репозитория в качестве совместимого с SPDX программного обеспечения, счета за материалы (SBOM) с помощью пользовательского интерфейса GitHub или GitHub REST API. Дополнительные сведения см. в разделе Экспорт программного счета за материалы для репозитория.
Вы можете использовать API отправки зависимостей для отправки зависимостей из выбранного менеджера пакетов или экосистемы, даже если экосистема не поддерживается графом зависимостей для анализа манифеста или блокировки файлов. Зависимости, отправленные в проект с помощью API отправки зависимостей показывают, какой детектор использовался для их отправки и когда они были отправлены. Дополнительные сведения о API отправки зависимостейсм. в разделе Использование API отправки зависимостей.
Дополнительные сведения о граф зависимостей см. в разделе Сведения о графе зависимостей.
Что такое проверка зависимостей?
Проверка зависимостей помогает рецензентам и участникам разобраться в изменениях зависимостей и понять их влияние на безопасность в каждом запросе на вытягивание.
- Проверка зависимостей сообщает, какие зависимости были добавлены, удалены или обновлены в запросе на вытягивание. Вы можете использовать даты выпуска, популярность зависимостей и сведения об уязвимостях, чтобы решить, следует ли принять изменение.
- Чтобы просмотреть проверку зависимостей для запроса на вытягивание, откройте расширенный инструмент сравнения на вкладке Измененные файлы.
Дополнительные сведения о проверке зависимостей см. в разделе Сведения о проверке зависимостей.
Что такое Dependabot?
Dependabot Держит ваши зависимости в актуальном состоянии, информируя о любых уязвимостях безопасности в зависимости и автоматически открывая pull requests для их обновления.
Dependabot Pull-запросы будут нацелены на следующую доступную защищённую версию при срабатывании Dependabot оповещения или на последнюю версию при публикации релиза.
Термин «Dependabot» включает следующие характеристики: * Dependabot alerts: Отображалось уведомление на Security вкладке репозитория и в графе зависимостей репозитория. Оповещение содержит ссылку на затронутый файл в проекте, а также сведения об исправленной версии. * Dependabot updates: * Dependabot security updates: Запускались обновления для обновления зависимостей до защищённой версии при срабатывании оповещения. * Dependabot version updates: Запланированные обновления, чтобы ваши зависимости были в актуальном состоянии с последней версией.
Dependabot security updates и Dependabot version updates требует GitHub Actions работы на GitHub Enterprise Server.
Dependabot alerts не требуется GitHub Actions. Дополнительные сведения см. в разделе [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).
Dependabot security updates может исправить уязвимые зависимости в GitHub Actions. При включении обновлений системы безопасности Dependabot автоматически создает запрос на вытягивание для обновления уязвимых данных GitHub Actions, используемых в рабочих процессах до минимальной исправленной версии. Для получения дополнительной информации см. [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates).
Что такое оповещения Dependabot?
Dependabot alerts Выделите репозитории, затронутые недавно обнаруженной уязвимостью, основанные на графе зависимостей и GitHub Advisory Database, который содержит предупреждения по известным уязвимостям.
* Dependabot выполняет сканирование для выявления небезопасных зависимостей и отправляет Dependabot alerts если:
- Новые данные о рекомендациях синхронизируются с вашим экземпляром каждый час с .GitHub.com Дополнительные сведения см. в разделе Просмотр рекомендаций по безопасности в базе данных рекомендаций по GitHub.
- Граф зависимостей для репозитория меняется
-
Dependabot alerts отображаются на **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** вкладке репозитория и в графе зависимостей репозитория. Оповещение содержит ссылку на затронутый файл в проекте, а также сведения об исправленной версии.
Дополнительные сведения см. в разделе Сведения об оповещениях Dependabot.
Что такое обновления Dependabot?
Существует два типа Dependabot updates: Dependabot_обновления безопасности_ и обновления версий . Dependabot В обоих случаях генерирует автоматические pull requests для обновления ваших зависимостей, но есть несколько различий.
Dependabot security updates:
-
Срабатывает Dependabot по сигналу тревоги
-
обновляют зависимости до минимальной версии, которая устраняет известную уязвимость;
-
поддерживаются для экосистем, поддерживаемых графом зависимостей.
-
файл конфигурации не является обязательным, но его можно использовать для переопределения поведения по умолчанию.
Dependabot version updates: -
файл конфигурации является обязательным;
-
запускаются по настроенному вами расписанию;
-
обновляют зависимости до последней версии, которая соответствует конфигурации;
-
поддерживаются для другой группы экосистем.
Для получения дополнительной информации Dependabot updatesсм. Сведения об обновлениях для системы безопасности Dependabot и Сведения об обновлениях версий Dependabot.
Что такое неизменяемые релизы?
Репозитории могут включать неизменяемые релизы, чтобы предотвратить изменение ассетов и связанного с ним тега Git релиза после публикации. Это снижает риск атак на цепочку поставок, предотвращая внедрение уязвимостей злоумышленниками в используемые вами релизы. Это также означает, что проекты, зависящие от конкретных релизов, реже ломаются.
Создание неизменяемого релиза автоматически генерирует аттестацию для этого релиза. Вы можете использовать это подтверждение, чтобы убедиться, что релиз и его артефакты совпадают с опубликованной информацией.
Что такое аттестации артефактов?
Поставщики программного обеспечения могут генерировать аттестации для программного обеспечения, построенного на GitHub Actionsоснове . Аттестации — это криптографически подписанные утверждения, которые устанавливают происхождение сборки (исходный код и рабочий процесс, использованный для её создания) или соответствующий программный список материалов (SBOM).
Вы можете повысить безопасность цепочки поставок, проверяя подтверждения ваших зависимости. Хотя аттестации не гарантируют безопасность, они дают информацию о том, где и как было создано программное обеспечение, чтобы вы могли быть уверены, что ваши зависимости не были изменены. Вы можете ограничить развертывания с помощью такого инструмента, как Kubernetes Admissions Controller, чтобы предотвратить развертывание незаверённых сборок.
Когда вы создаёте GitHub Actions аттестации для собственных билдов вашей организации, созданные артефакты автоматически загружаются в linked artifacts page. Эта платформа позволяет просматривать записи хранения и развертывания всех связанных артефактов, чтобы найти исходный код и рабочий процесс, запущенный для создания артефакта, или фильтровать оповещения безопасности по контексту развертывания.
Доступность функций
-
**Граф зависимостей и Dependabot alerts:** По умолчанию не включено. Обе возможности настраиваются на уровне предприятия владельцем предприятия. Дополнительные сведения см. в разделе [AUTOTITLE и [AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise)](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise). -
**Проверка зависимости:** Доступно, когда для вашего экземпляра включён граф зависимостей и GitHub Advanced Security для организации или репозитория. Дополнительные сведения см. в разделе [AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security). -
** Dependabot security updates:** По умолчанию не включено. Вы можете включить Dependabot security updates любой репозиторий, который использует Dependabot alerts граф зависимостей. Сведения о включении обновлений системы безопасности см. в разделе [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates). -
** Dependabot version updates:** По умолчанию не включено. Люди с разрешениями записи в репозиторий могут включить Dependabot version updates. Сведения о включении обновлений версий см. в разделе [AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates).