Skip to content

security(deps): 🛡️ Go 1.26.8, gRPC 1.83.2, x/net 0.59.0, aws-sdk-go-v2 s3 1.113.4 - #203

Merged
pacificcode merged 2 commits into
mainfrom
security/go-1.26.8-grpc-xnet
Sep 25, 2026
Merged

pacificcode merged 2 commits into
mainfrom
security/go-1.26.8-grpc-xnet

Conversation

@pacificcode

@pacificcode pacificcode commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Clears all 52 Snyk findings in dsv-cli, including 2 CRITICAL. govulncheck goes from 42 reachable vulnerabilities → 0.

dsv-cli isn't onboarded to the ArmorCode runbook, so these were ticketed manually:
AB#766146 (grpc, CRITICAL) · AB#766148 (x/net, CRITICAL) · AB#766149 (aws-sdk-go-v2, HIGH) · AB#766150 (Go toolchain / stdlib, HIGH)

Scans (local)

critical high medium low total govulncheck (called)
main 2 26 22 2 52 42
this PR 0 0 0 0 0 0

Changes

  • Toolchain: toolchain go1.24.1 → go1.26.8. The go directive goes 1.23.0 → 1.26.0 because current golang.org/x/* modules declare it; dsv-cli is a binary, so only builders are affected. aqua.yaml golang/go (which the ADO pipelines read their Go version from) and the three GoTool@0 pins in pipelines/vault-cli-pr.yml move to 1.26.8 to match.
  • Dependencies:
    • google.golang.org/grpc 1.64.1 → 1.83.2
    • golang.org/x/net 0.38.0 → 0.59.0; x/text, x/crypto refreshed
    • aws-sdk-go-v2/service/s3 1.55.1 → 1.113.4 (aws/protocol/eventstream → 1.7.20)
  • vendor/ regenerated. ⚠️ .gitignore's unanchored tools rule silently excluded the newly vendored golang.org/x/tools/, which builds locally and fails in CI. Anchored to /tools, so it still ignores only the root tools/ directory. A fresh clone builds and tests with -mod=vendor.
  • Tests: Go ≥ 1.24 vet (run by go test) rejects fmt.Errorf with a non-constant format string, and main never hit this because it declared go 1.23. Three test stubs now use fmt.Errorf("%s", …) with a scoped //nolint:err113.
  • Trunk: trivy 0.53.0 (release deleted upstream, so the hermetic install 404s) → 0.74.0; go@1.26.8; golangci-lint 1.64.8 (last v1, keeps .golangci.yaml v1); node@22.16.0. Removed golangci output.formats: tab, which breaks Trunk's parser.

Testing

  • go test ./...: 15/15 packages pass; pre-push hook: 675 tests, 1 skipped (GCP creds).
  • Fresh clone: go build -mod=vendor . and go test -mod=vendor ./... pass.
  • trunk check --upstream origin/main: no new issues.
  • Live end-to-end against a dev tenant, using the built binary (go1.26.8). It covers secret create/read/field-filter/update/version/search/describe/soft-delete/restore, role, policy and client create/read, client-credential auth with a policy-scoped read, auth, config read and whoami. Result: 20/21, identical to the released v1.41.1 run through the same script. The one miss (secret read --version 0 -f data.k: "Failed to apply the filter") fails the same way on v1.41.1, so it's a pre-existing quirk, not a regression. All test objects deleted (404 verified).

Not in this PR

  • Release. Customers get this only through a release (ADO pipelines/vault-cli.yml: goreleaser → GitHub, S3, brew, scoop, snap, docker; plus signing). The last release was v1.41.1 (2024-05). There are 8 unreleased changie entries, including a feature, so the next is v1.42.0. That's a follow-up with its own pre-flight.
  • Pre-existing and unchanged: go vet ./... still reports vaultcli unkeyed struct fields, and go build ./... reports "main is undeclared" for magefiles and cicd-integration (both package main without a regular main). Both are identical on main.

🤖 Generated with Claude Code

…2 s3 1.113.4

Clears all 52 Snyk findings (2 CRITICAL, 26 HIGH, 22 MEDIUM, 2 LOW);
govulncheck: 0 reachable (was 42). Tracked by AB#766146 (grpc),
AB#766148 (x/net), AB#766149 (aws-sdk-go-v2), AB#766150 (toolchain).

- go.mod: toolchain go1.24.1 -> go1.26.8; go directive 1.23.0 -> 1.26.0
  (current golang.org/x/* modules require it). aqua.yaml golang/go and
  the ADO PR pipeline's GoTool pin move to 1.26.8 to match.
- grpc 1.64.1 -> 1.83.2, x/net 0.38.0 -> 0.59.0, x/text, x/crypto,
  aws-sdk-go-v2 service/s3 1.55.1 -> 1.113.4 (eventstream 1.7.20).
- vendor/ regenerated. .gitignore 'tools' anchored to '/tools': the
  unanchored rule silently dropped the newly vendored golang.org/x/tools.
- go >= 1.24 vet rejects fmt.Errorf with a non-constant format string:
  three test stubs now use fmt.Errorf("%s", ...).
- Trunk: trivy 0.53.0 (deleted upstream) -> 0.74.0, go@1.26.8,
  golangci-lint 1.64.8, node@22.16.0; drop golangci 'output: tab',
  which breaks Trunk's parser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ changie entry was found

@snyk-io

snyk-io Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@codecov

codecov Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 48.28%. Comparing base (a2521eb) to head (e8ee6b4).
⚠️ Report is 132 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main     #203       +/-   ##
===========================================
+ Coverage   32.61%   48.28%   +15.67%     
===========================================
  Files          80       87        +7     
  Lines       10855    11914     +1059     
===========================================
+ Hits         3540     5753     +2213     
+ Misses       7027     5866     -1161     
- Partials      288      295        +7     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pacificcode

Copy link
Copy Markdown
Contributor Author

Why dsv-cli.tests.integration fails: dev environment, not this PR

Result: 63/70 pass. All 7 failures are the crypto-manual-* cases (key-upload, then key-read, encrypt, decrypt, key-update, key-delete, which depend on the uploaded key, plus the parent TestCliArgs). Each shows Error processing API response.

Not caused by this PR:

  1. The released dsv v1.41.1 fails identically. With the same test key, nonce and scheme against a dev tenant, crypto manual key-upload returns Error processing API response from both v1.41.1 and this branch's build. --verbose shows the server answering POST /v1/crypto/manual/key/<path> with 403 Forbidden, even for a tenant admin.

  2. Dev's /v1/crypto/* fails at the AWS edge, before the application. Unauthenticated probes:

    request dev (*.devbambe.com) QA (*.qabambe.com)
    GET /v1/secrets/x 401 {"message":"Unauthorized"} (app) n/a
    POST /v1/crypto/manual/key/x 403, empty body 401 {"message":"Unauthorized"} (app)
    POST /v1/crypto/auto/key/x 403, empty body n/a
    POST /v1/crypto/manual/encrypt 403, empty body n/a

    No app-api span exists for the failing requests (checked in Datadog dsvdevqa), so the 403 comes from API Gateway or the edge, not from DSV code. QA's same route reaches the app.

  3. The server code hasn't changed. api-bambe domains/encryption/ was last modified 2023-10, and there are no crypto, permission or licence commits since 2026-02.

  4. History: the last integration run whose tests actually executed passed on 2026-02-10 (PR build(gomod): ⚡ patch gomod #190). The 09-17 runs (Renovate build(aqua-proj): 🌊 major aqua major (major) #191) died at mage build:single, before any tests ran.

Most likely cause: the dev environment's partly failed September API deploy (Thycotic.Vault-API Release-1943 failed at dev-us-east-1) left the encryption-as-a-service routes or their Lambda broken on dev. This is being tracked separately as part of the release-pipeline repair.

Everything else passes: all GitHub checks (lint, test, both Snyk checks, codecov, Trunk), dsv-cli.tests.end-to-end, and the live end-to-end run described in the PR body.

Merge plan: once a dsv-contributors review is in, merge with admin bypass for (1) this required integration check, which fails on the dev outage above, and (2) the dsv-admins code-owner requirement. The only admin-owned path in the diff is the vendored third-party file vendor/go.opentelemetry.io/otel/CODEOWNERS, which matches because the root CODEOWNERS patterns are unanchored. A follow-up will anchor them to /CODEOWNERS and /.github.

🤖 Generated with Claude Code

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ changie entry was found

@pacificcode
pacificcode merged commit e8bc8d2 into main Sep 25, 2026
12 of 14 checks passed
@pacificcode
pacificcode deleted the security/go-1.26.8-grpc-xnet branch September 25, 2026 18:58
pacificcode added a commit that referenced this pull request Sep 30, 2026
…ly disabled (#204)

The required **`dsv-cli.tests.integration`** check has failed on every
PR since Feb 2026 because of the crypto cases. That's why recent PRs
(e.g. #203) needed admin bypass.

## Why
The DSV crypto API (EaaS, `/v1/crypto/*`) is **intentionally disabled
server-side**. An API Gateway **MOCK integration returns 403** on
`/v1/crypto/{proxy+}` on dev (2026-02-06/12) and in **all four prod
regions** (2026-02-20). **Tom Dillenbeck confirmed** (2026-09-29) he
added it after a security finding; the feature had no customer usage.
Every `crypto-manual-*` case gets a 403 from the edge and fails.

## Change
- `cicd-integration/integration_test.go`: cases named `crypto-*` call
`t.Skip(...)` with the reason, so they show as **SKIP** in the output
instead of vanishing. That's the 6 cases: 5 `EaaS-Manual` +
`crypto-manual-key-delete` in cleanup. No other case depends on them.
Re-enabling is deleting the guard.
- changie entry.

The CLI's `crypto` commands are unchanged; only the integration test
stops expecting the server to answer.

Companion change for the backend acceptance tests: api-bambe PR 228980
(ADO).

## Testing
`go vet ./cicd-integration/` and `gofmt`: clean. The real verification
is this PR's `dsv-cli.tests.integration` run against the dev tenant:
expect the `crypto-*` subtests as SKIP and everything else as PASS.

🤖 Generated with [Claude Code](https://claude.com/claude-code)


[AB#767047](https://thycotic.visualstudio.com/4a89362e-1361-424f-a291-a8f57c2a8991/_workitems/edit/767047)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.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.

3 participants