依存関係のピン留め
依存関係のピン留め とは何ですか?
依存関係のピン留めソフトウェア依存関係を厳密なバージョン、可能なら暗号学的ハッシュとともに固定し、ビルドが常に同一の成果物を取得することでサプライチェーン改ざんへの耐性を高める手法。
依存関係ピン留めでは、"^1.0.0" のような緩い範囲指定を、厳密なバージョンと、できれば暗号学的ダイジェストを含むロックファイル(package-lock.json、poetry.lock、Pipfile.lock、Gemfile.lock、go.sum、Cargo.lock など)に置き換えます。これにより、ビルドは再現可能になり、サイレントアップデート、依存関係混同、タイポスクワッティング、改ざんバージョンに対しても耐性を持ちます。最近では、GitHub Actions などの CI プラグインも可変タグではなくコミット SHA で固定するのが定石です。一方、SCA、Dependabot、Renovate などによる脆弱性監視と組み合わせなければ、アプリは古くなり CVE が蓄積します。ハッシュ付きピン留めは、SLSA、NIST SSDF、OWASP、Reproducible Builds などが共通して挙げる重要統制です。
● 例
- 01
サードパーティの GitHub Actions を v3 のような可変タグではなくコミット SHA に固定する運用。
- 02
CI で完全にハッシュ化された requirements.txt を pip --require-hashes と組み合わせて使う例。
● よくある質問
依存関係のピン留め とは何ですか?
ソフトウェア依存関係を厳密なバージョン、可能なら暗号学的ハッシュとともに固定し、ビルドが常に同一の成果物を取得することでサプライチェーン改ざんへの耐性を高める手法。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
依存関係のピン留め とはどういう意味ですか?
ソフトウェア依存関係を厳密なバージョン、可能なら暗号学的ハッシュとともに固定し、ビルドが常に同一の成果物を取得することでサプライチェーン改ざんへの耐性を高める手法。
依存関係のピン留め はどのように機能しますか?
依存関係ピン留めでは、"^1.0.0" のような緩い範囲指定を、厳密なバージョンと、できれば暗号学的ダイジェストを含むロックファイル(package-lock.json、poetry.lock、Pipfile.lock、Gemfile.lock、go.sum、Cargo.lock など)に置き換えます。これにより、ビルドは再現可能になり、サイレントアップデート、依存関係混同、タイポスクワッティング、改ざんバージョンに対しても耐性を持ちます。最近では、GitHub Actions などの CI プラグインも可変タグではなくコミット SHA で固定するのが定石です。一方、SCA、Dependabot、Renovate などによる脆弱性監視と組み合わせなければ、アプリは古くなり CVE が蓄積します。ハッシュ付きピン留めは、SLSA、NIST SSDF、OWASP、Reproducible Builds などが共通して挙げる重要統制です。
依存関係のピン留め からどのように防御しますか?
依存関係のピン留め に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
依存関係のピン留め の別名は何ですか?
一般的な別名: バージョン固定, ハッシュ固定。
● 関連用語
- appsec№ 1069
ソフトウェアサプライチェーンセキュリティ
ソースコード・依存関係・ビルド・署名・配布・デプロイに至るまで、ソフトウェア製造の各リンクを改ざん・悪意あるコード・完全性喪失から守る取り組み。
- appsec№ 304
依存関係混同攻撃(Dependency Confusion)
攻撃者が組織内部の依存関係と同じ名前の悪意あるパッケージをパブリックレジストリに公開し、ビルドツールにパブリック版を取得させるサプライチェーン攻撃。
- appsec№ 971
SCA(ソフトウェアコンポジション解析)
アプリケーションが利用するオープンソース・サードパーティコンポーネントを自動解析し、既知の脆弱性、ライセンス問題、古い・危険な依存関係を洗い出す手法。
- appsec№ 921
再現可能ビルド
同じソースコードを同じ手順でビルドすれば、いつどこで実行しても1ビットまで同一の成果物が得られるように設計するビルド手法。
- appsec№ 166
CI/CD セキュリティ
継続的インテグレーションと継続的デリバリーのパイプラインを、侵害・コード注入・シークレット漏洩・不正デプロイから守るための一連の統制。
- appsec№ 784
パッケージ署名
ソフトウェアパッケージに暗号学的署名を付与し、利用者が発行者の身元と公開後に改ざんされていないことを検証できるようにする仕組み。