Skip to content

deps: bump golang.org/x/net 0.54.0 → 0.55.0 (fixes 6/8 Scorecard vulns)#289

Merged
Cre-eD merged 1 commit into
mainfrom
deps/bump-x-net-and-aws-sdk-v1
May 24, 2026
Merged

deps: bump golang.org/x/net 0.54.0 → 0.55.0 (fixes 6/8 Scorecard vulns)#289
Cre-eD merged 1 commit into
mainfrom
deps/bump-x-net-and-aws-sdk-v1

Conversation

@Cre-eD

@Cre-eD Cre-eD commented May 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Bumps golang.org/x/net indirect dep from v0.54.0 → v0.55.0 to close 6 of the 8 OpenSSF Scorecard Vulnerabilities-probe warnings on main.

Vuln-to-bump mapping

ID Module Fixed in Status here
GO-2026-5025 golang.org/x/net/html (namespaced elements in foreign content) v0.55.0 ✅ fixed
GO-2026-5026 golang.org/x/net/idna (Punycode → ASCII-only label) v0.55.0 ✅ fixed
GO-2026-5027 golang.org/x/net/html (HTML in foreign content → XSS) v0.55.0 ✅ fixed
GO-2026-5028 golang.org/x/net/html (parser CPU DoS) v0.55.0 ✅ fixed
GO-2026-5029 golang.org/x/net/html (character refs in DOCTYPE) v0.55.0 ✅ fixed
GO-2026-5030 golang.org/x/net/html (duplicate attributes → XSS) v0.55.0 ✅ fixed
GO-2022-0635 github.com/aws/aws-sdk-go/service/s3/s3crypto (CVE-2020-8911) no v1 fix ⚠ upstream-blocked
GO-2022-0646 github.com/aws/aws-sdk-go/service/s3/s3crypto (CVE-2020-8912) no v1 fix ⚠ upstream-blocked

OSV confirms golang.org/x/net@0.55.0 carries zero open advisories.

Why the 2 aws-sdk-go v1 vulns can't be bumped here

The s3crypto vulnerabilities were never patched in the v1 line — AWS only fixed them in aws-sdk-go-v2. We don't import aws/aws-sdk-go directly. It's pulled in transitively by:

  • github.com/pulumi/pulumi/pkg/v3 (latest v3.243.0 still requires aws-sdk-go v1.50.36)
  • github.com/pulumi/esc (latest v0.24.0 — same)
  • gocloud.dev (latest v0.45.0 still requires aws-sdk-go v1.55.8)

So we can't remove the v1 transitive without dropping Pulumi or gocloud.dev. Both advisories are already declared not_affected / vulnerable_code_not_in_execute_path in vex/openvex.jsongovulncheck -mode=source ./... reports zero reachable calls into s3crypto. Scorecard's hasOSVVulnerabilities probe does not consume OpenVEX (verified against probes/hasOSVVulnerabilities/impl.go), so these two warnings will continue to fire on main until upstream migrates.

Test plan

  • go mod tidy clean (no other deps shifted)
  • go build ./... succeeds
  • CI green (govulncheck, security-scan, semgrep, lint, tests)
  • post-merge Scorecard run drops to 2 remaining vulns (the documented aws-sdk-go v1 pair)

Closes 6 of 8 OpenSSF Scorecard Vulnerabilities-probe warnings
(`osv-scanner` against the full module tree, no reachability):

  GO-2026-5025  net/html  — namespaced elements in foreign content
  GO-2026-5026  net/idna  — Punycode → ASCII-only label accepted
  GO-2026-5027  net/html  — HTML elements in foreign content (XSS)
  GO-2026-5028  net/html  — CPU DoS on arbitrary HTML
  GO-2026-5029  net/html  — character refs in DOCTYPE nodes
  GO-2026-5030  net/html  — duplicate attributes → XSS

All six are fixed in golang.org/x/net v0.55.0 (released 2026-05-22).
OSV reports zero advisories against v0.55.0.

Remaining 2 warnings — GO-2022-0635 / GO-2022-0646
(aws-sdk-go v1 s3crypto, CVE-2020-8911/8912) — have NO fix in the
v1 line; the AWS SDK Go team only patched s3crypto in v2. Both
`github.com/pulumi/pulumi/pkg/v3@latest` and
`gocloud.dev@latest` still pull aws-sdk-go v1 transitively, so we
can't drop it without dropping Pulumi or gocloud.dev. Both
advisories are already documented as `not_affected` /
`vulnerable_code_not_in_execute_path` in vex/openvex.json and
govulncheck reachability confirms 0 calls into the s3crypto
subpackage. Scorecard's `hasOSVVulnerabilities` probe does not
consume OpenVEX, so the warnings will persist until upstream
migrates off aws-sdk-go v1.

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
@Cre-eD
Cre-eD requested a review from smecsia as a code owner May 24, 2026 14:26
@github-actions

Copy link
Copy Markdown

Semgrep Scan Results

Repository: api | Commit: 250ff32

Check Status Details
⚠️ Semgrep Warning 10 warning(s), 10 total

Scanned at 2026-05-24 14:26 UTC

@github-actions

Copy link
Copy Markdown

Security Scan Results

Repository: api | Commit: 250ff32

Check Status Details
✅ Secret Scan Pass No secrets detected
✅ Dependencies (Trivy) Pass 0 total (no critical/high)
✅ Dependencies (Grype) Pass 0 total (no critical/high)
📦 SBOM Generated 528 components (CycloneDX)

Scanned at 2026-05-24 14:27 UTC

@Cre-eD
Cre-eD merged commit eb52327 into main May 24, 2026
21 checks passed
@Cre-eD
Cre-eD deleted the deps/bump-x-net-and-aws-sdk-v1 branch May 24, 2026 15:36
Cre-eD added a commit that referenced this pull request May 24, 2026
…verage (#291)

## Summary

Cuts the 10 Semgrep WARNING findings the job has been posting on every
PR (and on #289) by disabling two registry-pack rules whose threat
models don't apply to SC code. Reachability-aware replacement coverage
ships in
[actions#23](simple-container-com/actions#23).

## Findings being silenced

All 10 are pre-existing intentional patterns:

**MD5-as-fingerprint (7)** — `use-of-md5` fires on every `md5.Sum()`
regardless of context. SC call sites are:

| File | Use |
|---|---|
|
[pkg/clouds/pulumi/aws/static_website.go:166](pkg/clouds/pulumi/aws/static_website.go#L166)
| upload-bundle checksum (S3 etag-style) |
|
[pkg/clouds/pulumi/gcp/bucket_uploader.go:55](pkg/clouds/pulumi/gcp/bucket_uploader.go#L55)
| upload-bundle checksum (S3 etag-style) |
|
[pkg/clouds/pulumi/gcp/gke_autopilot_stack.go:243,251](pkg/clouds/pulumi/gcp/gke_autopilot_stack.go#L243),
[pkg/clouds/pulumi/kubernetes/kube_run.go:225,233](pkg/clouds/pulumi/kubernetes/kube_run.go#L225)
| K8s annotation hash for Caddy restart trigger |
|
[pkg/clouds/pulumi/cloudflare/registrar.go:71](pkg/clouds/pulumi/cloudflare/registrar.go#L71)
| dedup suffix for Pulumi resource names on duplicate-name DNS records |

**yaml-into-interface{} (3)** — `unsafe-deserialization-interface` is
calibrated to Python pickle/yaml.load (executes on unmarshal). Go's
`yaml.v3` / `encoding/json` don't execute. SC call sites:

| File | Use |
|---|---|
|
[pkg/assistant/chat/commands_project.go:943](pkg/assistant/chat/commands_project.go#L943)
| obfuscate embedded YAML credentials before logging |
|
[pkg/assistant/security/secure_file_reader.go:93,339](pkg/assistant/security/secure_file_reader.go#L93)
| redact secrets in user YAML before logging |

The SC team already documented this exact reasoning in `go-canon.yml`
round-6 triage, where they dropped their own equivalent yaml-unmarshal
rule.

## What still catches the real threats

Disabling these two rules does NOT lose coverage; the genuine patterns
are caught by narrower rules in `go-canon.yml`:

- **MD5 in real crypto context** — new `go-md5-in-crypto-context` rule
(actions#23) fires on `hmac.New(md5.New, ...)` and on md5 result
assigned to a variable named `mac` / `hmac` / `signature` / `tag` /
`auth` / `token` / `password` / `digest`.
- **Untrusted-source → unmarshal → exec** — taint-aware coverage in
`p/golang` registry pack remains enabled. Only the generic shape-only
rule is disabled.

## Dependencies

⚠ **Pinned to a branch SHA on actions.** The reusable-workflow ref
currently points at `2a7604ddac4fd9f912a1ab6896ac87c5b07bc537` (the head
of actions#23). Before merging this PR, **bump the pin to the main-merge
SHA** that actions#23 produces.

## Test plan

- [ ] actions#23 merges and CI is green
- [ ] Bump reusable-workflow SHA pin to actions main-merge commit
- [ ] CI re-run: Semgrep posts 0 WARNING findings
- [ ] Spot-check: `go-md5-in-crypto-context` still fires if someone
writes `hmac.New(md5.New, key)` — verified in actions#23 fixtures (8 new
cases)

---------

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
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.

2 participants