supply-chain: gate our own deps, ship the verdict signed
dep-scan.sh gates go/npm/cargo on push and bakes an attested posture into the release — embedded in the server, signed into the manifest. Reasoning and the two Moby exceptions are in SECURITY.md. (posture-builder runs rustup; bookworm's cargo is too old for cargo-audit.)
This commit is contained in:
parent
938a8f6dbb
commit
e2dab2845a
18 changed files with 5563 additions and 27 deletions
23
SECURITY.md
23
SECURITY.md
|
|
@ -54,6 +54,29 @@ Before any package install: the agent fetches the expected SHA-256 from the serv
|
|||
|
||||
---
|
||||
|
||||
## Our Own Dependencies
|
||||
|
||||
RedFlag holds itself to the standard it enforces on the fleet. Every push runs
|
||||
dependency vulnerability scanning in CI: `govulncheck` (reachability-based) on the Go
|
||||
server and agent, `npm audit` on the web tree, `cargo audit` on the Rust helper. A
|
||||
reachable vulnerability that isn't explicitly accepted fails the build — the same
|
||||
fail-closed posture the binary takes at runtime.
|
||||
|
||||
Some findings have no fix to take. RedFlag links the Docker engine library as a
|
||||
*client* (for container scanning) and inherits daemon-side Moby advisories that carry
|
||||
no patched version. We don't bury those: each one is a documented entry in a
|
||||
machine-readable exception register, every entry naming the advisory and the reason
|
||||
it's accepted. That register is the source of truth — it's surfaced **in the app**, so
|
||||
RedFlag's own residual exposure is visible the same way fleet exposure is, and can't
|
||||
quietly rot in a doc nobody re-reads. When an upstream fix ships, the dependency is
|
||||
bumped and the entry is removed; CI warns on an exception that no longer applies.
|
||||
|
||||
The build substrate itself is recorded on every run (toolchain and engine versions) so
|
||||
"what built this" is never a mystery. Enforcing a minimum-patched floor on that
|
||||
substrate is the next layer.
|
||||
|
||||
---
|
||||
|
||||
## Visibility
|
||||
|
||||
**Security Health** is surfaced as a dashboard panel on each agent — signing status, nonce protection, machine binding violations, command validation — so the posture is visible without digging through logs. All operations are logged with full context, sanitized against log injection (ANSI stripping, control character replacement, field truncation) with the content preserved.
|
||||
|
|
|
|||
Loading…
Reference in a new issue