stackabletech / stackabletech/docker-images

Fix CVE-2024-45337: Update golang.org/x/crypto in statsd_exporter to >= v0.31.0

Open
#1,480 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Dockerfile
Stars
22
Forks
6
Avg merge
16h 59m
Merged PRs (30d)
30

Description

Fix CVE-2024-45337: Update golang.org/x/crypto in statsd_exporter to >= v0.31.0

Part of https://github.com/stackabletech/docker-images/issues/xxx


Problem

The stackable/statsd_exporter image embedded in the Superset product image contains a CRITICAL vulnerability:

CVE Library Installed Fixed Severity
CVE-2024-45337 golang.org/x/crypto v0.27.0 v0.31.0 CRITICAL

Description: Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto/ssh. See: https://avd.aquasec.com/nvd/cve-2024-45337

This CVE is present in both:

  • oci.stackable.tech/sdp/superset:4.1.4-stackable26.3.0
  • oci.stackable.tech/sdp/superset:6.0.0-stackable26.3.0

The statsd_exporter binary is compiled with golang.org/x/crypto v0.27.0. The fix requires rebuilding the binary with golang.org/x/crypto >= v0.31.0.

Note: While statsd_exporter does not expose SSH functionality and the vulnerable PublicKeyCallback code path is not reachable at runtime, the vulnerability still triggers CRITICAL findings in standard security scanners (Trivy, Wiz, etc.), blocking internal compliance and image promotion pipelines.


  • Add: statsd_exporter built with golang.org/x/crypto >= v0.31.0
  • Remove: statsd_exporter built with golang.org/x/crypto v0.27.0

[!TIP] Please add the scheduled-for/YY.M.X label, and add to the Stackable Engineering project.

Update tasks

  • [ ] Update boil-config.toml to reflect the agreed upon versions in the spreadsheet (including the removal of old versions).
  • [ ] Create a new constraints file (see superset/README.md).
  • [ ] Create a file: superset/stackable/patches/x.y.z/.gitkeep, add patches if applicable.
  • [ ] Delete old constraint files and patch directories.
  • [ ] Update golang.org/x/crypto dependency in statsd_exporter to >= v0.31.0 and rebuild the binary.
  • [ ] Update other dependencies if applicable (e.g. python, auth_lib, cyclonedx-bom, etc).
  • [ ] Check other operators (getting_started / kuttl / supported-versions) for usage of the versions. Add the PR(s) to the list below.
  • [ ] Ensure prerequisites are up to date (required-external-components.adoc).
  • [ ] Update the version in demos. Add the PR(s) to the list below.

Related Pull Requests

[!TIP] Delete any items that do not apply so that all applicable items can be checked.

  • Link to the docker-images PR (statsd_exporter rebuild with patched crypto)
  • Link to the operator PR (getting_started / kuttl / supported-versions)
  • Link to any other operator PRs (getting_started / kuttl)
  • Link to demo PR (raise against the main branch)
  • Link to the Release Notes PR in the documentation repo (if not a comment below)

Acceptance

[!TIP] This list should be completed by the assignee(s), once respective PRs have been merged. Once all items have been checked, the issue can be moved into Development: Done.

  • [ ] Can build image (either locally, or in CI)
  • [ ] Trivy scan of rebuilt image shows CVE-2024-45337 resolved (no CRITICAL findings for golang.org/x/crypto)
  • [ ] All kuttl tests pass (either locally, or in CI)
  • [ ] Release notes added to documentation and linked as a PR above
  • [ ] Release notes written in a comment below
  • [ ] Applicable release-note label added to this issue
<details> <summary>Testing instructions</summary>
# Verify the CVE is resolved after rebuild
trivy image oci.stackable.tech/sdp/superset:x.y.z-stackable0.0.0-dev | grep CVE-2024-45337
# Should return no results

Standard image build and test

Where x.y.z is the new version added in this PR

boil build superset=x.y.z --strip-architecture --load
kind load docker-image oci.stackable.tech/sdp/superset:x.y.z-stackable0.0.0-dev

Change directory into the superset-operator repository and update the

product version in tests/test-definition.yaml

./scripts/run-tests --test-suite smoke-latest # or similar


</details>

Please consider updating this template if these instructions are wrong, or could be made clearer.

# Fix CVE-2024-45337: Update `golang.org/x/crypto` in `statsd_exporter` to >= v0.31.0

Part of https://github.com/stackabletech/docker-images/issues/xxx


Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with boil-config.toml and superset/README.md to identify the version, constraints file, patch directory, and statsd_exporter rebuild inputs. Follow the listed build and testing commands, including the Trivy check and operator smoke tests. Done means the rebuilt image has no CVE-2024-45337 finding, applicable tests pass, and required release-note updates are linked.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
build-system, devops, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.