Harden Dependabot config: cooldown + Go/Rust ecosystems#240
Conversation
Adds a cooldown window to every ecosystem block (3 days default, 7 for major, 3 for minor, 1 for patch) so freshly published versions get a buffer before being PR'd — mitigates the auto-upgrade-on-day-zero supply-chain risk that zizmor's dependabot-cooldown rule flags. Cooldown applies only to version-update PRs; security advisories (GHSA) bypass it and continue to file immediately. Adds gomod and cargo ecosystem blocks covering the seven Go modules and two Cargo crate roots, both grouped per-ecosystem with semver-major version updates ignored (mirroring the existing npm pattern). Security advisories are unaffected by that filter and continue to file individually. Without these, the existing 16 Rust and 2 Go Dependabot alerts were never auto-PR'd because neither ecosystem was being watched.
Dependabot rejects semver-{major,minor,patch}-days for ecosystems
that don't track semver. github-actions are pinned by ref/SHA and
docker base-image tags don't follow semver, so only default-days
is accepted on those two blocks. npm, gomod, and cargo keep the
full semver-aware cooldown.
There was a problem hiding this comment.
Pull request overview
This PR hardens the repository’s Dependabot configuration by adding a consistent “cooldown” window for version updates and extending Dependabot coverage to Go modules and Rust crates across the monorepo, aiming to reduce supply-chain risk while enabling automated advisory-driven PR filing.
Changes:
- Added
cooldownsettings to each existing Dependabot update block. - Added new
gomodandcargoupdate blocks covering multiple module/crate roots viadirectories:. - Grouped Go and Rust version updates into single PRs per ecosystem and ignored semver-major version updates.
zizmor's dependabot-cooldown rule requires default-days >= 7; the 3-day value the rule flagged matches xz/ua-parser-js/eslint detection windows but sits below the documented threshold, so the audit kept firing on every block. Raises default-days to 7 across all ecosystems. Keeps a wider semver-major-days: 14 for non-security regression signal to surface in upstream issue trackers before a major bump auto-PRs, and a narrower semver-patch-days: 3 so patch-level security fixes still land quickly. semver-minor-days falls back to default-days (7). Security-update PRs continue to bypass cooldown regardless of these values, so this does not lengthen exposure to known CVEs.
Other ecosystem entries use root-relative paths (/, /server, ...). Dependabot's directory values are documented as root-relative; align the npm block to the same convention.
🔐 Codex Security Review
Review SummaryOverall Risk: MEDIUM Findings[MEDIUM] Wildcard major-version ignores can suppress security remediation paths
NotesThe reviewed diff only changes Generated by Codex Security Review | |
Summary
gomodandcargoecosystem coverage so existing Rust/Go advisories begin auto-filing.directoryto the same root-relative form (/client) as the rest of the file.zizmor/dependabot-cooldowncode-scanning alerts on.github/dependabot.yml.Cooldown values
For ecosystems that track semver (
npm,gomod,cargo):For ecosystems that do not track semver (
github-actionsis pinned by ref/SHA,dockerbase-image tags don't follow strict semver):Notes on each value:
default-days: 7— Matches zizmor's documenteddependabot-cooldownthreshold and the broadly-cited "1 week" convention for letting a new release settle before auto-PR. Most documented supply-chain compromises in these ecosystems (xz-utils, ua-parser-js, eslint-scope, node-ipc) were detected and yanked within roughly 24–72 hours of the malicious release; 7 days is a comfortable margin over that observed window.semver-minor-daysfalls back to this value.semver-patch-days: 3— Patch releases are predominantly bug or security fixes with small diffs and review surface, so the buffer is shortened to keep patch uptake fast.semver-major-days: 14— Not for security but for non-security regression signal (API breakage, behavior drift) to surface in upstream issue trackers and downstream consumers before a major bump is auto-PR'd.Cooldown applies only to version-update PRs. Security-update PRs driven by GHSA advisories bypass cooldown and file immediately, so this configuration does not lengthen exposure to known CVEs.
New ecosystems
gomodandcargoblocks use thedirectories:plural form to cover all module/crate roots in one entry each:gomod—server,server/fake-antminer,server/fake-proto-rig,plugin/proto,plugin/antminer,plugin/virtual,tests/plugin-contractcargo—sdk/rust/proto-fleet-plugin,plugin/asicrsBoth ecosystems group version updates into a single PR per ecosystem and ignore
semver-majorversion-update PRs, mirroring the existing npm pattern. Security advisories ignore this filter and continue to file individually.Until this change, neither ecosystem was being watched by Dependabot, which is why the 16 open Rust and 2 open transitive Go advisories had never produced auto-PRs.
What this closes
zizmor/dependabot-cooldowncode-scanning alerts on.github/dependabot.yml.