Imported from DharmaDoll/product-security-controls (
controls/dependency-security/dependency-change-review/AGENTS.md). Install upstream withnpx skills add DharmaDoll/product-security-controls --skill dependency-change-review. Copyright stays with the author.
PSB-DEPS-004 implementation instructions
このfileはPSB-DEPS-004に固有の実装境界だけを定める。
repository instructionsと
control instructionsにある共通規約をここへ複製しない。
Control essence
Dependency変更は外部codeを取り込む変更である。ただし変更だけで被害になるのではない。選択されたaffected versionが build/test/runtimeへ入り、脆弱な機能へ攻撃入力または価値あるCI assetから到達でき、findingや評価失敗を止めずに mergeしたとき、advisoryに記載されたcode execution、情報漏えい、認証回避、DoS等が現実化し得る。このcontrolが 所有する成果は、pull requestで新しく追加・更新されるdirect/transitive dependencyをmerge前に可視化し、既知の 重大な脆弱性をrequired checkで止めることだけである。Reachabilityとimpactの最終判断は別途必要である。
次の3つを一読で確認できる状態を保つ。
Dependency diff: supported manifest/lockfileのbase-to-head dependency差分が表示される。Risk gate: changed dependencyにhigh以上の既知脆弱性があればjobが失敗する。Merge enforcement: failed、error、cancelled、missing checkではmergeできない。
Workflow fileやREADMEをcopyしただけではsecurity効果は発生しない。実repositoryでGitHub Dependency graphと active rulesetを有効にし、live pull requestで3つの成果を確認して初めて導入済みとする。
When this control is needed
- PRでdependency差分を評価するrequired SCA/dependency reviewがないrepositoryには必要である。
- 既存のSCAが上記3成果をすべて満たす場合、別workflowを追加しない。そのexisting checkを
PSB-DEPS-004の実装として記録する。 - Merge後または定期実行だけのSCAは、このcontrolの代替ではない。
Deliberately delegated concerns
このpackageへ次を実装しない。
- Registry route、release cooldown:
PSB-DEPS-001 - Install script/source build:
PSB-DEPS-002 - Exact version、frozen lockfile、artifact hash:
PSB-DEPS-003 - General SCA/artifact scanning:
PSB-DETECT-001 - Action SHA管理:
PSB-CICD-001 - Workflow permission:
PSB-CICD-004 - Untrusted PR境界:
PSB-CICD-005 - Provenance:
PSB-REL-001 - Exception lifecycle:
PSB-GOV-002
License policy、CODEOWNER approval、provider-neutral lockfile normalization、synthetic evidenceを基本profileへ 追加しない。具体的なadopter要件がある場合だけ、別profileとして責任者とlive testを定義する。
Trivyの通常のfilesystem/repository全体scanも基本profileへ重複追加しない。それは変更されていない既存dependencyと
merge後のadvisoryを含む継続SCAとしてPSB-DETECT-001が所有する。GitHub Dependency Reviewを利用できない環境で
Trivy等を代替PR gateにする場合は、base-to-headでchanged dependencyを特定する方法、scanner/DB errorのfail-closed、
required check、tool/databaseのintegrityを別profileで明示する。
Reference implementation
Referenceはsecure/github/dependency-review.ymlだけである。
これはGitHub固有のReference profileであり、controlの本質そのものをGitHub製品へ固定するものではない。実装説明では GitHub Dependency graphをdata source、dependency review/REST APIをbase-to-head diff、Dependency Review Actionをpolicy decision、active rulesetをmerge enforcementとして区別する。Action単体のsuccessをcontrol導入完了と表現しない。
- Triggerは
pull_requestだけにする。 - Workflow-levelは
permissions: {}、job-levelはcontents: readだけにする。 - Dependency Review Actionをreview済みfull commit SHAへ固定する。
vulnerability-check: true、fail-on-severity: high、warn-only: falseを明示する。- Runtime、development、unknown scopeを除外しない。
- このbasic profileで判定しない
license-checkとshow-openssf-scorecardは明示的に無効化する。 - Snapshot warningをbounded retryする。
- Checkout、PR comment、write permission、broad allow、package exclusionを追加しない。
Pinned Action:
Action更新時はrelease、exact commit、runtime、input behaviorを再reviewする。Floating tagを入れない。
Verification contract
Repository testはreference workflowの次だけを確認する。
pull_request、deny-all top permission、contents: read- Full SHA-pinned Dependency Review Action
- Vulnerability check、high threshold、全scope、blocking mode
- Insecure fixtureの
warn-only: trueを拒否 - Missing workflowをclean resultにしない
これはlive GitHub settingを証明しない。導入先では次の4ケースを必ず試す。
- Safe lockfile-only updateでdependency差分が表示される。
- Installせずに記録した既知high vulnerabilityでjobが失敗する。
- Failed jobのままmergeできない。
- Jobをcancelまたはrequired checkをmissingにしてもmergeできない。
Unsupported ecosystem、empty diff、snapshot warningのままでは導入済みとしない。Providerの仕様上
評価できない状態はNOT_CHECKED、実行失敗はERRORであり、どちらもPASSではない。
Metadata
control.yamlにはDCR-001、DCR-004、DCR-009の3 checkだけを置く。
各checkは固有のactor、scenario、target、why-requiredを持つ。Framework mappingはsupporting
relationshipであり、dependencyの安全性、organization adoption、formal complianceを主張しない。
References
- GitHub dependency review
- Configure the dependency review action
- Supported package ecosystems
- GitHub ruleset rules
- OpenSSF OSPS Baseline 2026.02.19
- NIST SP 800-218 SSDF 1.1
- MITRE ATT&CK T1195.001
Required local test
Repository rootから実行する。
make verify-control CONTROL=PSB-DEPS-004
make validate-controls
control.yaml変更後はcanonical generatorを実行して参照切れがないことを確認する。Testを通すために
threshold、scope、required check、fail-closed behaviorを弱めない。