Skip to content

docs: add SECURITY.md - #3

Merged
dabelle merged 3 commits into
mainfrom
docs/security-policy
Sep 17, 2026
Merged

dabelle merged 3 commits into
mainfrom
docs/security-policy

Conversation

@dabelle

@dabelle dabelle commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

The repo is public, security-positioned, and aimed at exactly the people who run govulncheck on what they install. Two advisories show up against the Docker client library, and until now there was no stated position on them, so whoever found them first had nothing to read.

Covers the disclosure channel, supported versions, the guarantees the agent enforces, and an assessment of the two Moby advisories (GO-2026-4887, GO-2026-4883) with a concrete trigger for revisiting: when github.com/moby/moby/v2 publishes a stable release.

The out-of-scope section is the part that saves time later. It rules out restic's own bugs, Docker daemon bugs, attackers who already hold write access to agent config or recipes, and scanner output submitted without an explanation of reachability.

Every guarantee listed was checked against the source rather than copied from design notes:

  • subcommand in agent/internal/restic/restic.go is an unexported type with seven read-only constants, so forget and prune genuinely do not compile
  • sandbox teardown at agent/internal/verify/verify.go:105 is deferred and covers every exit path including panics, and scrubs its own cleanup errors
  • containers are force-removed with volumes on the same guarantee
  • Scrub and RedactForTransport exist in agent/internal/report/report.go and run before strings are logged or transmitted

GitHub private vulnerability reporting has been enabled, since the doc points at it as the primary channel.

One line worth a deliberate look before merge: the doc promises acknowledgement of reports within a week. That is a public commitment on a real inbox.

thetechnologist1911 added 3 commits September 15, 2026 21:55
The repo is public, security-positioned, and aimed at people who run
govulncheck on what they install. Two advisories currently show up against
the Docker client library, and until now there was no stated position on
them, so the first person to find them would have had nothing to read.

Documents the disclosure channel (GitHub private vulnerability reporting,
now enabled), supported versions, the guarantees the agent actually enforces
in code, and the assessment of the two Moby advisories with a concrete
trigger for revisiting them.

Every guarantee listed was checked against the source rather than copied
from design notes: the restic subcommand type is closed and unexported, the
sandbox teardown is deferred so it survives panics, containers are
force-removed with volumes, and scrub/redaction runs before strings are
logged or transmitted.
The first draft read as generated: six consecutive bullets opening with a
bolded noun phrase, a balanced tricolon in the intro, and an antithetical
closer on the Moby assessment. Same content, first person, varied sentence
length, no listicle scaffolding.
The disclosure said "pass/fail, timings, snapshot IDs, recipe names and error
strings", which undersells it. The repository label is the repo string with
credentials stripped, so it still carries host and path, and it goes into the
title of every alert reaching Telegram, Discord, ntfy and email. Check
messages name paths from inside the snapshot; a checksum mismatch says which
file differed. Someone deciding whether to connect the cloud at all should be
able to see that from this page.

Also reconciles the recipe trust boundary with the code. Saying recipes are
"trusted input" contradicted files.go, which treats them as a boundary and
validates their paths. Both halves are true and neither alone is: paths are
contained, and a recipe still names the container images its checks run.
@dabelle
dabelle merged commit 869fd5f into main Sep 17, 2026
4 checks passed
dabelle pushed a commit that referenced this pull request Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant