2.6 KiB
2.6 KiB
Workstream C: CrowdSec Go Version Fix
Date: 2026-01-10 Issue: CrowdSec binaries built with Go 1.25.1 containing 4 HIGH CVEs Solution: Pin CrowdSec builder to Go 1.25.5+
Problem
Trivy scan identified that the CrowdSec binaries (crowdsec and cscli) embedded in the container image were built with Go 1.25.1, which has 4 HIGH severity CVEs:
- CVE-2025-58183
- CVE-2025-58186
- CVE-2025-58187
- CVE-2025-61729
The CrowdSec builder stage in the Dockerfile was using golang:1.25-alpine, which resolved to the vulnerable Go 1.25.1 version.
Solution
Updated the CrowdSec Builder stage in the Dockerfile to explicitly pin to Go 1.25.5:
# Before:
FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS crowdsec-builder
# After:
# renovate: datasource=docker depName=golang versioning=docker
FROM --platform=$BUILDPLATFORM golang:1.25.5-alpine AS crowdsec-builder
Changes Made
File: Dockerfile
Line ~275-279: Updated the CrowdSec builder stage base image
- Changed from:
golang:1.25-alpine(resolves to 1.25.1) - Changed to:
golang:1.25.5-alpine(fixed version) - Added Renovate annotation to track future Go version updates
Impact
- Security: Eliminates 4 HIGH CVEs in the CrowdSec binaries
- Build Process: No changes to build logic, only base image version
- CrowdSec Version: Remains at v1.7.4 (no version change needed)
- Compatibility: No breaking changes; CrowdSec functionality unchanged
Verification
After this change, the following validations should be performed:
-
Rebuild the image (no-cache recommended):
# Use task: Build & Run: Local Docker Image No-Cache -
Run Trivy scan on the rebuilt image:
# Use task: Security: Trivy Scan -
Expected outcome:
- Trivy image scan should report 0 HIGH/CRITICAL vulnerabilities
- CrowdSec binaries should be built with Go 1.25.5+
- All CrowdSec functionality should remain operational
Related
- Plan: docs/plans/current_spec.md - Workstream C
- CVE List: Go 1.25.1 stdlib vulnerabilities (CVE-2025-58183, CVE-2025-58186, CVE-2025-58187, CVE-2025-61729)
- Dependencies: CrowdSec v1.7.4 (no change)
- Next Step: QA validation after image rebuild
Notes
- The Backend Builder stage already uses
golang:1.25-alpinebut may resolve to a patched minor version. If needed, it can be pinned similarly. - Renovate will track the pinned
golang:1.25.5-alpineimage and suggest updates when newer patch versions are available. - The explicit version pin ensures reproducible builds and prevents accidental rollback to vulnerable versions.