Закрепление зависимостей (pinning)
Что такое Закрепление зависимостей (pinning)?
Закрепление зависимостей (pinning)Практика объявления зависимостей ПО точными версиями, часто с криптографическими хешами, чтобы сборки всегда получали одни и те же артефакты и были устойчивы к вмешательству в цепочку поставок.
Pinning заменяет нестрогие диапазоны вроде "^1.0.0" на точные версии и, в идеале, криптографические дайджесты в lock-файле (package-lock.json, poetry.lock, Pipfile.lock, Gemfile.lock, go.sum, Cargo.lock). Сборки становятся воспроизводимыми и устойчивыми к скрытым обновлениям, dependency confusion, typosquatting и компрометации версий. Современная практика также закрепляет GitHub Actions и другие CI-плагины на SHA коммита вместо изменяемых тегов. Pinning необходимо сочетать с активным мониторингом уязвимостей (SCA, Dependabot, Renovate), иначе приложения устаревают и накапливают CVE. Hash-pinning — ключевой контрол, на который ссылаются SLSA, NIST SSDF, OWASP и инициативы воспроизводимых сборок.
● Примеры
- 01
Закрепление всех сторонних GitHub Actions на SHA коммита вместо тегов вроде v3.
- 02
Использование pip --require-hashes с полностью хешированным requirements.txt в CI.
● Частые вопросы
Что такое Закрепление зависимостей (pinning)?
Практика объявления зависимостей ПО точными версиями, часто с криптографическими хешами, чтобы сборки всегда получали одни и те же артефакты и были устойчивы к вмешательству в цепочку поставок. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Закрепление зависимостей (pinning)?
Практика объявления зависимостей ПО точными версиями, часто с криптографическими хешами, чтобы сборки всегда получали одни и те же артефакты и были устойчивы к вмешательству в цепочку поставок.
Как работает Закрепление зависимостей (pinning)?
Pinning заменяет нестрогие диапазоны вроде "^1.0.0" на точные версии и, в идеале, криптографические дайджесты в lock-файле (package-lock.json, poetry.lock, Pipfile.lock, Gemfile.lock, go.sum, Cargo.lock). Сборки становятся воспроизводимыми и устойчивыми к скрытым обновлениям, dependency confusion, typosquatting и компрометации версий. Современная практика также закрепляет GitHub Actions и другие CI-плагины на SHA коммита вместо изменяемых тегов. Pinning необходимо сочетать с активным мониторингом уязвимостей (SCA, Dependabot, Renovate), иначе приложения устаревают и накапливают CVE. Hash-pinning — ключевой контрол, на который ссылаются SLSA, NIST SSDF, OWASP и инициативы воспроизводимых сборок.
Как защититься от Закрепление зависимостей (pinning)?
Защита от Закрепление зависимостей (pinning) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Закрепление зависимостей (pinning)?
Распространённые альтернативные названия: Фиксация версий, Hash pinning.
● Связанные термины
- appsec№ 1069
Безопасность цепочки поставок ПО
Дисциплина защиты каждого звена производства ПО — исходного кода, зависимостей, сборки, подписи, дистрибуции и деплоя — от вмешательства, вредоносного кода и потери целостности.
- appsec№ 304
Атака путаницы зависимостей (Dependency Confusion)
Атака на цепочку поставок ПО, при которой злоумышленник публикует в публичном реестре вредоносный пакет с именем, совпадающим с внутренней зависимостью организации, заставляя сборку подтягивать публичную версию.
- appsec№ 971
SCA (Software Composition Analysis)
Автоматический анализ open-source и сторонних компонентов приложения для выявления известных уязвимостей, лицензионных рисков и устаревших или опасных зависимостей.
- appsec№ 921
Воспроизводимые сборки
Практики сборки, обеспечивающие, что компиляция одного и того же исходного кода с теми же инструкциями даёт побитно идентичный артефакт независимо от времени и места сборки.
- appsec№ 166
Безопасность CI/CD
Совокупность контролей, защищающих конвейеры непрерывной интеграции и поставки от компрометации, инъекций кода, утечки секретов и несанкционированных деплоев.
- appsec№ 784
Подпись пакетов
Применение криптографической подписи к программному пакету, чтобы потребители могли проверить личность издателя и убедиться, что артефакт не был изменён после выпуска.