Skip to content

Commit 4ab15b0

Browse files
committed
πŸ”§ chore(release): prep v1.3.0 β€” changelog, README, chart bump, docs
- πŸ“ changelog: cut [1.3.0] - 2026-06-11 promoting 1.3.0-rc.3 to stable (no binary delta; content = rc.2 + rc.3 entries) - πŸ”§ chart: bump version + appVersion to 1.3.0 - πŸ“ docs(README): v1.3.0 release banner, Recent Updates highlight, 'Shipped in v1.3.0' table (swarm posture parity, security fixes, operational fixes, build/internals) - πŸ“ docs(verification): bump example image tag to 1.3.0
1 parent 541345b commit 4ab15b0

4 files changed

Lines changed: 19 additions & 5 deletions

File tree

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.3.0] - 2026-06-11
11+
12+
v1.3.0 promotes `1.3.0-rc.3` to stable with no binary delta β€” the release content is the `[1.3.0-rc.2]` and `[1.3.0-rc.3]` entries below, validated during the rc soak behind a live drydock deployment. Headlines: swarm service create/update now enforces the same identity/privilege rails as container create (closing the posture bypass where a service could request a workload shape `/containers/create` would deny), a zero-padded-UID root-user bypass is sealed across container create and exec, a wide-open dedicated admin listener is rejected at validation rather than just warned about, admin endpoint paths are normalized before matching, non-upgrade hijack responses strip hop-by-hop headers, the `signature_path` hot-reload wedge and three silently-ignored `SOCKGUARD_*` env vars are fixed, release images carry real `commit`/`built` metadata, and multi-arch images cross-compile natively.
13+
1014
## [1.3.0-rc.3] - 2026-06-11
1115

1216
### Added

β€ŽREADME.mdβ€Ž

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<hr>
6969

7070
> [!NOTE]
71-
> **v1.2.0 is released.** The YAML schema, CLI flags, env vars, admin endpoints, and Prometheus metric names are stable under the v1.x contract. See [CHANGELOG.md](CHANGELOG.md) for the latest release notes and the current `Unreleased` work.
71+
> **v1.3.0 is released.** The YAML schema, CLI flags, env vars, admin endpoints, and Prometheus metric names are stable under the v1.x contract. See [CHANGELOG.md](CHANGELOG.md) for the latest release notes and the current `Unreleased` work.
7272
7373
<h2 align="center" id="quick-start">πŸš€ Quick Start</h2>
7474

@@ -213,6 +213,7 @@ To run fully unprivileged with a unix socket, pre-create a host directory with t
213213
<details>
214214
<summary><strong>Latest release highlights</strong></summary>
215215

216+
- **v1.3.0 shipped on 2026-06-11** β€” swarm posture parity and admin-surface hardening. Swarm **service create/update now enforces the container-create identity/privilege rails** (`require_non_root_user`, `require_no_new_privileges`, `require_readonly_rootfs`, `require_drop_all_capabilities` on `ContainerSpec`), closing the bypass where a service could request a workload shape `/containers/create` would deny. A **zero-padded-UID root bypass** (`"00"`, `"0000:5"`) is sealed across container create and exec. A **wide-open dedicated admin listener is now a validation error**; admin paths are normalized before matching; non-upgrade hijack responses strip hop-by-hop headers. Operational fixes: the `signature_path` hot-reload wedge, three silently-ignored `SOCKGUARD_*` env vars, oversized bodies returning `403` instead of `413`, and release images now carrying real `commit`/`built` metadata. Multi-arch images cross-compile natively (no more emulated toolchain faults).
216217
- **v1.2.0 shipped on 2026-06-02** β€” operational resilience for a wedged daemon. An opt-in **readiness probe** (`health.readiness.*`, default `/ready`) issues a real `GET /containers/json` against the Docker API and returns `503` when the daemon accepts connections but no longer answers β€” the gap the raw-dial `/health` watchdog misses. An opt-in **`upstream.request_timeout`** bounds finite proxied requests with a total deadline, converting a hung body or heavy read into a fast `504` (`reason_code=upstream_request_timeout`) while exempting streaming and long-lived endpoints. New metrics `sockguard_upstream_api_up` + `sockguard_upstream_readiness_checks_total` mirror the watchdog. The bundled **drydock preset** now allowlists the stock `runc` runtime so drydock recreation stops getting 403'd out of the box. Dependency hygiene: the Go toolchain moves to `1.26.4` (clearing two *reachable* stdlib advisories, GO-2026-5037 / GO-2026-5039), plus the `go-minor` / `npm-minor` / `actions-minor` groups; `govulncheck` reports zero vulnerabilities.
217218
- **v1.1.0 shipped on 2026-06-01** β€” image-trust verification wired end to end: registry digest resolution, cosign signature discovery (classic tag + OCI 1.1 referrers), digest-pinned forwarding, keyed (PEM) and keyless (Fulcio + Rekor) both enforced, swarm-service create/update now subject to the same image-trust policy as container create. A 21-finding security audit landed alongside: closed request-inspection bypasses (plugin multipart, BuildKit `# syntax=`, gzip bombs, swarm-service capability/sysctl/image-trust escapes), read-side sub-resource visibility gating, new `allowed_runtimes` allowlist, hardened config/admin paths (signed-bundle TOCTOU, PID-only peer rejection, admin-listener CIDR backstop), response redaction extended to `HostConfig.Mounts[].Source` and service `PreviousSpec`. CodeQL `actions` analysis and supply-chain dependency hygiene (`govulncheck` reports zero vulnerabilities) round out the release.
218219
- **v1.0.0 shipped on 2026-05-20** with the public proxy contract locked: YAML schema, CLI flags, env vars, admin endpoints, and Prometheus metric names are now under the v1.x compatibility promise.
@@ -425,7 +426,16 @@ LinuxServer's socket-proxy env surface is already Tecnativa-compatible for the b
425426
<details>
426427
<summary><strong>Version themes & highlights</strong></summary>
427428

428-
**v1.2.0 shipped on 2026-06-02** and is the latest release. **v1.0.0 shipped on 2026-05-20** with the YAML schema, CLI flags, env vars, admin endpoints, and Prometheus metric names under the v1.x compatibility contract. See [CHANGELOG.md](CHANGELOG.md) for the full per-release detail.
429+
**v1.3.0 shipped on 2026-06-11** and is the latest release. **v1.0.0 shipped on 2026-05-20** with the YAML schema, CLI flags, env vars, admin endpoints, and Prometheus metric names under the v1.x compatibility contract. See [CHANGELOG.md](CHANGELOG.md) for the full per-release detail.
430+
431+
### Shipped in v1.3.0
432+
433+
| Track | Surface |
434+
|---|---|
435+
| **Swarm posture parity** | Service create/update enforces the container-create identity/privilege rails on `ContainerSpec`: `require_non_root_user` (numeric-UID parsing, zero-padded forms rejected), `require_no_new_privileges`, `require_readonly_rootfs`, `require_drop_all_capabilities` β€” all opt-in, closing the bypass where a service could request a workload shape `/containers/create` would deny |
436+
| **Security fixes** | Zero-padded-UID root bypass sealed (container create `require_non_root_user` + exec `allow_root_user` parse the UID instead of comparing to `"0"`); wide-open dedicated admin listener (non-loopback plaintext, no CIDR backstop) is a validation error unless explicitly acknowledged; admin endpoint paths `path.Clean`-normalized before matching; non-upgrade hijack fallbacks strip hop-by-hop headers; container-label ACL exclusivity warning at startup; `filters` query params capped at 64 KiB |
437+
| **Operational fixes** | `signature_path` hot-reload no longer wedges subsequent reloads; three silently-ignored `SOCKGUARD_*` env vars registered; oversized bodies return `413` (was `403`) on node-update and build; coalesced inspect-cache waiters honor their own context; release images carry real `commit`/`built` metadata |
438+
| **Build & internals** | Multi-arch images cross-compile natively (`--platform=$BUILDPLATFORM`), fixing emulated-toolchain faults; shared `internal/dockerfilters` decoder with deterministic legacy-format ordering; upstream inspect responses drained for keep-alive reuse |
429439

430440
### Shipped in v1.2.0
431441

β€Žchart/sockguard/Chart.yamlβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: sockguard
33
description: A security-first Docker socket proxy β€” filters Docker API requests before they reach the daemon.
44
type: application
5-
version: 1.2.0
6-
appVersion: "1.2.0"
5+
version: 1.3.0
6+
appVersion: "1.3.0"
77
keywords:
88
- docker
99
- socket-proxy

β€Ždocs/content/docs/verification.mdxβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ sudo mv cosign /usr/local/bin/
5353
## One-liner verify
5454

5555
Replace `<TAG>` with the release tag you're pulling (for example
56-
`1.2.0` or `latest`):
56+
`1.3.0` or `latest`):
5757

5858
```bash
5959
cosign verify \

0 commit comments

Comments
Β (0)