Repository navigation
Prepare v2.10.9: audit fixes and Go security update - #52
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepare v2.10.9 with fixes for signed bootstrap downgrades, SSH Include path analysis through symlink parents, and incomplete Latest restoration after publication signals. Align the release/rebuild toolchain with Go 1.26.10 and remove the unused ID-only at cancellation API.
Bootstrap checks the signed candidate version before execution and holds the lifecycle lock through installation and reactivation. Explicit recovery requires both a pinned release and LTA_ALLOW_DOWNGRADE=1. It now commits directly and reports through its exit status/output; the former candidate install audit event is no longer emitted, as documented in both installation guides.
The static version scan normalizes NUL bytes before matching so BusyBox utilities detect duplicate witnesses, and fails closed on conversion, matching or size-limit failures. Regression coverage runs both default tools and explicit BusyBox applets across available shells.
The release procedure now defines a shared GitHub publication lock with atomic acquisition, ownership checks and conditional cleanup across workstations.
Testing
Build, vet with ordinary/integration tags, gofmt, Staticcheck with both tags, module verification and govulncheck pass with Go 1.26.10.
Ordinary and race suites each pass 2,042 tests/subtests. All 136 non-root skips pass in the root suite.
Serialized root integration and integration-race suites each pass 2,594 tests/subtests with no test skips in disposable Debian containers.
Shell syntax, ShellCheck, actionlint, shared safety primitives and 49 Python mirror tests pass; static amd64/arm64 builds pass.
Real OpenSSH comparisons, publisher signal fault injection, bootstrap version/lock/durability regressions and signed installer integration pass.
Real systemd/SSH/PTY/PAM/sudo canary covers install, expiry, active-session revocation, persistent cleanup across a container restart and uninstall.
The final BusyBox correction passes Debian/Ubuntu real BusyBox regression matrices, signed ELF installer/fallback integration, and complete releasecheck/selfmanage race suites: 711 ordinary and 761 root-integration passing test events, with no skips.
Safety Notes