fix: patch CVE-2026-39892 and CVE-2026-33186 across SDK, API and MCP images#10978
fix: patch CVE-2026-39892 and CVE-2026-33186 across SDK, API and MCP images#10978HugoPBrito wants to merge 8 commits intomasterfrom
Conversation
|
✅ Conflict Markers Resolved All conflict markers have been successfully resolved in this pull request. |
|
✅ All necessary |
🔒 Container Security ScanImage: 📊 Vulnerability Summary
3 package(s) affected
|
🔒 Container Security ScanImage: 📊 Vulnerability Summary
3 package(s) affected
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #10978 +/- ##
===========================================
+ Coverage 59.14% 87.98% +28.83%
===========================================
Files 8 1962 +1954
Lines 399 90901 +90502
===========================================
+ Hits 236 79980 +79744
- Misses 163 10921 +10758 Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
🔒 Container Security ScanImage: 📊 Vulnerability Summary
3 package(s) affected
|
- Patch out-of-bounds read on non-contiguous buffers in Hash.update et al. in the API image transitively via the prowler SDK pin - Lockfile regen deferred to a follow-up commit on this branch after #10978 lands on master (api/pyproject.toml resolves prowler from git@master, blocking the lock until then)
- Patch out-of-bounds read on non-contiguous buffers in Hash.update et al. in the API image transitively via the prowler SDK pin - Lockfile regen deferred to a follow-up commit on this branch after #10978 lands on master (api/pyproject.toml resolves prowler from git@master, blocking the lock until then)
- Merge per-image security entries into a single line per changelog - Add PR #10978 reference to each entry
- Bump cryptography 46.0.6 -> 46.0.7 (CVE-2026-39892, out-of-bounds read on non-contiguous buffers in Hash.update et al.) - Bump bundled Trivy binary 0.69.2 -> 0.70.0 (CVE-2026-33186, gRPC-Go authorization bypass via missing leading slash in HTTP/2 :path) - Regenerate poetry.lock with updated cryptography hashes
- Patch gRPC-Go auth bypass (missing leading slash in HTTP/2 :path) also in the API container image, which bundles the same Trivy CLI - Update SDK changelog entry to reflect both images are now covered
- Patch CVE-2026-39892 (out-of-bounds read on non-contiguous buffers) along with prior 46.x security fixes (CVE-2026-26007, CVE-2026-34073) in the MCP server image - Resolved transitively via uv.lock; no direct dep added
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
- Patch out-of-bounds read on non-contiguous buffers in Hash.update et al. in the API image transitively via the prowler SDK pin - Temporarily pin the prowler git ref in api/pyproject.toml to this branch's HEAD SHA so api/poetry.lock can resolve cryptography 46.0.7 before the SDK bump lands on master; revert to @master in a follow-up (or let the next Dependabot run reset it) once this PR is merged
- Merge per-image security entries into a single line per changelog - Add PR #10978 reference to each entry
8c5e2d6 to
3e50d40
Compare
Context
AWS Inspector flagged the latest Prowler container images for two CVEs in bundled dependencies:
pyca/cryptography>=45.0.0,<46.0.7when a non-contiguous buffer is passed to APIs likeHash.update(). Fixed upstream incryptography==46.0.7and clean again in47.0.0.gRPC-Go<1.79.3via missing leading slash in HTTP/2:path. The vulnerable Go binary lands in our images through the bundled Trivy CLI (bothDockerfileandapi/Dockerfileship0.69.2). Upstream Trivy includes the patchedgrpc-gofromv0.70.0.This PR consolidates all image-level fixes for both CVEs across SDK, API and MCP. It supersedes Dependabot #10623 (SDK cryptography), #10622 (MCP cryptography), #10769 (API cryptography), and the now-closed stacked follow-up #10979.
Description
pyproject.toml(SDK):cryptography==46.0.6→46.0.7poetry.lock(SDK): regenerated with updatedcryptography-46.0.7wheel hashesDockerfile(SDK image):ARG TRIVY_VERSION=0.69.2→0.70.0api/Dockerfile(API image):ARG TRIVY_VERSION=0.69.2→0.70.0api/pyproject.toml: temporarily pins theprowlergit ref to this branch's SHA soapi/poetry.lockcan resolvecryptography 46.0.7atomically (revert to@masterpost-merge, or let the next Dependabot run reset it)api/poetry.lock: regenerated;cryptography46.0.6→46.0.7transitivelymcp_server/uv.lock:cryptography46.0.1→47.0.0(transitive, unconstrained — uv resolved to latest patch-clean version)### 🔐 Security):prowler/CHANGELOG.md→5.26.0UNRELEASEDapi/CHANGELOG.md→1.27.0UNRELEASEDmcp_server/CHANGELOG.md→ new0.7.0UNRELEASED blockNo application code changes; all bumps are drop-in patch upgrades from the same minor lines or transitive resolutions and contain no breaking changes per upstream changelogs.
Coverage matrix
./Dockerfile)api/Dockerfile)mcp_server/Dockerfile)ui/Dockerfile)Both CVEs are closed across every affected image with this single merge.
Note on the temporary prowler git ref
api/pyproject.tomlcurrently pinsprowler @ git+https://github.com/prowler-cloud/prowler.git@<this-branch-SHA>instead of@master. This is intentional and required to atomically resolvecryptography 46.0.7inapi/poetry.lockwithin this PR (master still hascryptography==46.0.6). After merge:@masterin a tiny follow-up, or let the next scheduled Dependabot run rewrite it naturally. Both paths are zero-risk.Steps to review
git diff master -- pyproject.toml poetry.lock Dockerfile api/Dockerfile api/pyproject.toml api/poetry.lock mcp_server/uv.lock prowler/CHANGELOG.md api/CHANGELOG.md mcp_server/CHANGELOG.mdgrep -A1 '^name = "cryptography"' poetry.lock→46.0.7grep -A1 '^name = "cryptography"' api/poetry.lock→46.0.7grep -A1 '^name = "cryptography"' mcp_server/uv.lock→47.0.0docker build -t prowler-sdk-cve . && docker run --rm prowler-sdk-cve trivy --version→Version: 0.70.0docker build -f api/Dockerfile -t prowler-api-cve api && docker run --rm prowler-api-cve trivy --version→Version: 0.70.0docker run --rm prowler-sdk-cve python -c "import cryptography; print(cryptography.__version__)"→46.0.7docker run --rm prowler-api-cve python -c "import cryptography; print(cryptography.__version__)"→46.0.7docker run --rm prowler-mcp-cve python -c "import cryptography; print(cryptography.__version__)"→47.0.0trivy imageagainst the rebuilt images to confirm both CVEs disappear.Checklist
Community Checklist
SDK/CLI
API (if applicable)
License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.