Skip to content

Commit 2f1303f

Browse files
committed
Merge branch 'master' into PROWLER-2466-aws-iso-partitions
2 parents e478cca + 865eebe commit 2f1303f

44 files changed

Lines changed: 1281 additions & 534 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
# SDK
2-
/* @prowler-cloud/detection-remediation
3-
/prowler/ @prowler-cloud/detection-remediation
4-
/tests/ @prowler-cloud/detection-remediation
5-
/dashboard/ @prowler-cloud/detection-remediation
6-
/docs/ @prowler-cloud/detection-remediation
7-
/examples/ @prowler-cloud/detection-remediation
8-
/util/ @prowler-cloud/detection-remediation
9-
/contrib/ @prowler-cloud/detection-remediation
10-
/permissions/ @prowler-cloud/detection-remediation
11-
/codecov.yml @prowler-cloud/detection-remediation @prowler-cloud/api
2+
/* @prowler-cloud/engineering
3+
/prowler/ @prowler-cloud/engineering
4+
/tests/ @prowler-cloud/engineering
5+
/dashboard/ @prowler-cloud/engineering
6+
/docs/ @prowler-cloud/engineering
7+
/examples/ @prowler-cloud/engineering
8+
/util/ @prowler-cloud/engineering
9+
/contrib/ @prowler-cloud/engineering
10+
/permissions/ @prowler-cloud/engineering
11+
/codecov.yml @prowler-cloud/engineering
1212

1313
# API
14-
/api/ @prowler-cloud/api
14+
/api/ @prowler-cloud/engineering
1515

1616
# UI
17-
/ui/ @prowler-cloud/ui
17+
/ui/ @prowler-cloud/engineering
1818

1919
# AI
20-
/mcp_server/ @prowler-cloud/detection-remediation
20+
/mcp_server/ @prowler-cloud/engineering
2121

2222
# Platform
2323
/.github/ @prowler-cloud/platform

.github/workflows/backport.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
4040
- name: Check labels
4141
id: label_check
42-
uses: agilepathway/label-checker@c3d16ad512e7cea5961df85ff2486bb774caf3c5 # v1.6.65
42+
uses: agilepathway/label-checker@c324842522fbd012e4f590afe3b4e591301322ed # v1.6.66
4343
with:
4444
allow_failure: true
4545
prefix_mode: true

.grype.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ ignore:
2727
package:
2828
name: google.golang.org/grpc
2929
version: v1.82.1
30+
# CVE-2026-84445 is the same temporary exception documented in .trivyignore.yaml:
31+
# Trivy 0.74.0 still embeds grpc 1.82.1, while the 1.82.2 / 1.83.2 fix is not in any
32+
# release. The panic needs a gRPC server built with `xds.NewGRPCServer()`; Prowler only
33+
# runs `trivy image` / `trivy fs`, so the image serves no gRPC at all. Pinned to the
34+
# embedded version so the rule stops matching on its own once Trivy bumps grpc. Remove
35+
# with the Trivy exception by 2026-10-15.
36+
# https://github.com/advisories/GHSA-2v4p-qf9q-27wj
37+
- vulnerability: CVE-2026-84445
38+
package:
39+
name: google.golang.org/grpc
40+
version: v1.82.1
3041
# CVE-2026-56855 / CVE-2026-78662 are the same temporary exception documented in
3142
# .trivyignore.yaml: Trivy 0.74.0 still embeds golang.org/x/crypto v0.55.0, while the
3243
# 0.56.0 fix (published 2026-09-02) hasn't reached any Trivy release, or even Trivy

.trivyignore.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,25 @@ vulnerabilities:
176176
- "pkg:golang/google.golang.org/grpc"
177177
expired_at: 2026-10-15
178178

179+
# CVE-2026-84445 is a DoS in grpc-go servers built with `xds.NewGRPCServer()`: a request
180+
# carrying neither `:authority` nor `Host` reaches the xDS routing interceptor, which
181+
# indexes an empty slice of authorities and panics. The per-RPC goroutine does not
182+
# recover, so the whole server process dies. Fixed in 1.82.2 and 1.83.2 (published
183+
# 2026-09-08). Trivy 0.74.0, the latest published release and the version the images
184+
# ship, pins 1.82.1 as an indirect dependency:
185+
# https://github.com/aquasecurity/trivy/blob/v0.74.0/go.mod
186+
# Trivy main already carries 1.83.2, but no published release includes it yet.
187+
# The reachability argument is the one made for CVE-2026-84304 above, only narrower:
188+
# this panic needs an xDS-managed gRPC server. Prowler invokes Trivy exclusively as
189+
# `trivy image` and `trivy fs` on a local path, never `trivy server`, so the image runs
190+
# no gRPC server at all, xDS or otherwise. Remove this temporary suppression as soon as
191+
# a Trivy release pins grpc >= 1.83.2.
192+
# https://github.com/advisories/GHSA-2v4p-qf9q-27wj
193+
- id: CVE-2026-84445
194+
purls:
195+
- "pkg:golang/google.golang.org/grpc@v1.82.1"
196+
expired_at: 2026-10-15
197+
179198
# CVE-2026-56855 and CVE-2026-78662 are DoS deadlocks in x/crypto/ssh: a malicious peer
180199
# can flood or misuse channel messages (RFC 4254) to block the whole connection.
181200
# Fixed in golang.org/x/crypto v0.56.0 (published 2026-09-02). Trivy 0.74.0, the latest

docs/getting-started/basic-usage/prowler-cli.mdx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
title: 'Basic Usage'
33
---
44

5+
import { VersionBadge } from "/snippets/version-badge.mdx"
6+
57
## Running Prowler
68

79
Running Prowler requires specifying the provider (e.g. `aws`, `gcp`, `azure`, `kubernetes`, `m365`, `github`, `iac` or `mongodbatlas`):
@@ -91,6 +93,18 @@ By default, `prowler` will scan all AWS regions.
9193
</Note>
9294
See more details about AWS Authentication in the [Authentication Section](/user-guide/providers/aws/authentication) section.
9395

96+
- **AWS Retrier and Timeout Configuration**
97+
98+
<VersionBadge version="5.42.0" />
99+
100+
Tune the Boto3 standard retrier and the endpoint timeouts when AWS throttles the scan or when some endpoints are unreachable from the network Prowler runs in:
101+
102+
```console
103+
prowler aws --aws-retries-max-attempts 5 --aws-connect-timeout 5 --aws-read-timeout 30
104+
```
105+
106+
See the [Boto3 configuration](/user-guide/providers/aws/boto3-configuration) page for defaults and environment variables.
107+
94108
## Azure
95109

96110
Azure requires specifying the auth method:

docs/user-guide/providers/aws/boto3-configuration.mdx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,39 @@
11
---
2-
title: "Boto3 Retrier Configuration in Prowler"
2+
title: "Boto3 Retrier and Timeout Configuration in Prowler"
33
---
44

5+
import { VersionBadge } from "/snippets/version-badge.mdx"
6+
57
Prowler's AWS Provider leverages Boto3's [Standard](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html) retry mode to automatically retry client calls to AWS services when encountering errors or exceptions.
68

9+
## Timeout Configuration
10+
11+
<VersionBadge version="5.42.0" />
12+
13+
Every AWS API call is bounded by two timeouts:
14+
15+
- Connect timeout: seconds to wait to establish a connection (TCP, proxy tunnel and TLS handshake) to the AWS endpoint. Prowler's default is 10 seconds, configurable via `--aws-connect-timeout 5`.
16+
- Read timeout: seconds to wait for a response once connected. Prowler's default is 60 seconds, configurable via `--aws-read-timeout 30`.
17+
18+
Both timeouts can also be set through environment variables, which is the way to tune them in Prowler Cloud and other deployments without a CLI:
19+
20+
```console
21+
export PROWLER_AWS_BOTO3_CONNECT_TIMEOUT=5
22+
export PROWLER_AWS_BOTO3_READ_TIMEOUT=30
23+
```
24+
25+
CLI flags take precedence over the environment variables. Prowler sets both timeouts explicitly, so `AWS_DEFAULTS_MODE` and a `connect_timeout` in `~/.aws/config` are ignored; use the flag or the environment variable instead.
26+
27+
<Note>
28+
Boto3 defaults both timeouts to 60 seconds. In networks with restricted egress (for example VPC endpoints for a subset of services, GovCloud or private deployments), every AWS service without a reachable endpoint used to cost up to 4 attempts × 60 seconds (the first call plus the 3 retries) for each region. Prowler lowers the connect timeout to 10 seconds so unreachable endpoints fail fast; lower it further together with `--aws-retries-max-attempts 0`, which disables retries and leaves a single attempt per call, if a scan still spends most of its time waiting on unreachable services.
29+
30+
</Note>
31+
732
## Retry Behavior Overview
833

934
Boto3's Standard retry mode includes the following mechanisms:
1035

11-
- Maximum Retry Attempts: Default value set to 3, configurable via the `--aws-retries-max-attempts 5` argument.
36+
- Maximum Retry Attempts: Default value set to 3, configurable via the `--aws-retries-max-attempts 5` argument. `0` disables retries.
1237

1338
- Expanded Error Handling: Retries occur for a comprehensive set of errors.
1439

docs/user-guide/providers/aws/regions-and-partitions.mdx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,28 @@ When scanning the China (`aws-cn`), European Sovereign Cloud (`aws-eusc`) or Gov
2121

2222
- Specify the regions to audit within that partition using the `-f/--region` flag.
2323

24+
- Declare the partition with the `PROWLER_AWS_PARTITION` environment variable, set to `aws`, `aws-cn`, `aws-eusc` or `aws-us-gov`.
25+
2426
<Note>
2527
Refer to: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials for more information about the AWS credential configuration.
2628

2729
</Note>
30+
### Declaring the Partition
31+
32+
`PROWLER_AWS_PARTITION` tells Prowler which partition the scan runs against, without relying on a region being configured:
33+
34+
```bash
35+
export PROWLER_AWS_PARTITION="aws-us-gov"
36+
```
37+
38+
It matters most where nothing else says. Resolving an identity means calling STS before anything is known about the credentials, and with no region configured Prowler would otherwise start from the commercial endpoints. Declaring the partition makes that first call go to the right place, which is the difference between a scan that starts and one that fails on an endpoint the credentials cannot use.
39+
40+
A region configured for the session still wins when it belongs to the declared partition, so a deployment in `us-gov-west-1` is not sent to `us-gov-east-1`. A region belonging to a different partition is ignored, since a partition that has been declared explicitly is the more deliberate statement of the two.
41+
42+
<Note>
43+
Set it wherever the scan runs. For deployments that scan from containers, that means the environment of the containers doing the scanning, not only the one accepting the request.
44+
</Note>
45+
2846
### Scanning Specific Regions
2947

3048
To scan a particular AWS region with Prowler, use:

docs/user-guide/providers/image/getting-started-image.mdx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,29 @@ Install Trivy using one of the following methods:
9696

9797
For additional installation methods, see the [Trivy installation guide](https://trivy.dev/latest/getting-started/installation/).
9898

99+
### Vulnerability Database Cache
100+
101+
<VersionBadge version="5.42.0" />
102+
103+
Trivy keeps its vulnerability database in a cache directory. By default Prowler gives it a temporary one and removes it when the scan ends, so the database is downloaded again for every scan.
104+
105+
Set `TRIVY_CACHE_DIR` to a directory that persists and the database is downloaded once and reused:
106+
107+
```bash
108+
export TRIVY_CACHE_DIR="$HOME/.cache/trivy"
109+
prowler image --image <image>
110+
```
111+
112+
Prowler never deletes a directory you supply. Trivy still creates and updates its cache and database files inside it.
113+
114+
<Note>
115+
A host with no internet access needs a pre-populated vulnerability database in a persistent directory, with `TRIVY_CACHE_DIR` pointing at it. Populate the directory on a machine that does have access and copy it across.
116+
117+
Trivy tries to refresh the database when it considers it stale, and that download fails without network access. Set `TRIVY_SKIP_DB_UPDATE=true` (and `TRIVY_SKIP_JAVA_DB_UPDATE=true` if Java scanning is enabled) so it uses the supplied database as is.
118+
119+
The database ages. A scan run against an old one reports only the vulnerabilities known when it was built, and nothing in the output says so, so keep track of when it was last refreshed.
120+
</Note>
121+
99122

100123
### Supported Scanners
101124

mcp_server/Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ LABEL maintainer="https://github.com/prowler-cloud"
3232
# High CVEs fixed in Alpine 3.23 but not yet in the pinned base image:
3333
# sqlite-libs 3.53.4-r0 CVE-2026-11822, CVE-2026-11824 (image ships 3.51.2-r0)
3434
# libcrypto3/libssl3 3.5.8-r0 CVE-2026-14456 (image ships 3.5.7-r0)
35+
# libuuid 2.41.6-r1 CVE-2026-53612, -53613, -53614, -76642, -78408, -78410
36+
# (image ships 2.41.4-r0; -78408 is the one that needs -r1 rather than -r0)
3537
# The base image pins python 3.13.14, which has not been rebuilt since those
3638
# packages were published, so the upgrade is taken here rather than by moving
3739
# the pin -- the newest published python:3.13-alpine3.23 carries the same
@@ -43,7 +45,8 @@ LABEL maintainer="https://github.com/prowler-cloud"
4345
RUN apk add --no-cache --upgrade \
4446
"sqlite-libs>=3.53.4-r0" \
4547
"libcrypto3>=3.5.8-r0" \
46-
"libssl3>=3.5.8-r0"
48+
"libssl3>=3.5.8-r0" \
49+
"libuuid>=2.41.6-r1"
4750

4851
# Create non-root user for security
4952
# Using specific UID/GID for consistency across environments
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
`libuuid` upgraded to 2.41.6-r1 in the container image, patching CVE-2026-53612, CVE-2026-53613, CVE-2026-53614, CVE-2026-76642, CVE-2026-78408 and CVE-2026-78410

0 commit comments

Comments
 (0)