mirror of
https://github.com/certctl-io/certctl.git
synced 2026-08-26 12:51:26 +02:00
Two-fer in one commit:
(1) Dependabot security alerts on go-jose/v4 v4.0.4. Both alerts
flagged on commit 44a85d6 (the Phase 1b push that introduced
the dep):
- GHSA-c6gw-w398-hv78 (CVE-2025-27144): DoS in JWS Compact
parsing when input has many `.` characters; excessive
memory consumption via strings.Split. Fixed in v4.0.5.
Same shape as CVE-2025-22868 in golang.org/x/oauth2/jws.
- GHSA-78h2-9frx-2jm8 (CVE-2026-34986): JWE decryption
panic when alg is a key-wrapping algorithm (`*KW` other
than the GCMKW family) and encrypted_key is empty. Maps
to a denial-of-service via panic. Fixed in v4.1.4.
The certctl ACME server only invokes ParseSigned for JWS verify
(the JWS path); we never call ParseEncrypted/Decrypt. So the JWE
panic doesn't reach our code path. The JWS DoS is a low-grade
concern (an attacker submitting JWS objects with many dots
could amplify memory). Both are still real CVEs; upgrading
is cheap and right.
(2) ci: fix `go mod tidy` drift on commit a05a7d3. When I added
go-jose to the direct require block, I missed removing the
duplicate `// indirect` line in the indirect block. CI's
`go mod tidy && git diff --exit-code go.mod go.sum` flagged
the drift. Running `go mod tidy` (combined with the v4.1.4
upgrade above) cleans up both.
Verified locally:
- go.mod has exactly one `github.com/go-jose/go-jose/v4 v4.1.4`
line (in the direct require block); no `// indirect` duplicate.
- go test -count=1 -short ./internal/api/acme/ green —
confirms v4.1.4 has the same API surface (ParseSigned with
SignatureAlgorithm allowlist, Header.ExtraHeaders[HeaderKey],
JSONWebKey.Thumbprint(crypto.SHA256), Signer with
SignerOptions.WithHeader). 16-case JWS verifier suite all
pass.
- go test -count=1 -short ./internal/service/ green.
- go test -count=1 -short ./internal/api/handler/ -run TestACME
green.
- go build ./cmd/server → server binary clean.
4.9 KiB
4.9 KiB