✨ New features to highlight in this version
Enjoy them all now for free at https://cloud.prowler.com/
🚨 Emerging Threats — Affected Machine Images on AWS, Azure and Google Cloud
When a new vulnerability lands in an operating system image or a vendor appliance, the first question is which instances run an affected image. Answering it used to take a new check per vulnerability. A vulnerability is now described as data, a threat signature, and three new checks match every compute instance against the signatures in force for the scan:
ec2_instance_emerging_threat_imagematches the Amazon Machine Image (AMI) by name and, when the signature requires a verified publisher, by owner account,vm_emerging_threat_imagematches Azure gallery, custom and marketplace images, andcompute_instance_emerging_threat_imagematches the boot disk source image of Google Cloud instances.- A signature lists the affected image publishers, a name pattern and one version range per release branch, so the fixed point release of a branch is not flagged, plus the exposed ports, the impact and the remediation. A signature can carry examples of image names its pattern must match and must miss; they are checked when it loads, so a pattern that disagrees with its examples is rejected before it reaches a scan.
- Prowler ships the engine and the checks with no signatures of its own. Signatures are supplied per scan under the new
threat_signaturesconfiguration key for AWS, Azure and Google Cloud. - On AWS, Amazon Inspector confirms or clears a match when it scans the instance's packages: an active finding for the Common Vulnerabilities and Exposures (CVE) entry of the threat confirms the match, and an instance Inspector scans with no such finding passes, as long as Inspector knows every CVE of the threat, so a host patched in place clears. The lookup needs the new
inspector2:SearchVulnerabilitiespermission, included in the Prowler additions policy and the CloudFormation scan role; without it, matches are never cleared. - To support the match, the EC2 service keeps the owner and name of third-party AMIs, Azure VMs keep their full image reference and Google Cloud instances keep their boot disk source image. Each failed finding stores the matched threats in its raw result through the new
Check_Report.rawpayload.
See Emerging Threat Signatures to write a signature from the template.
☁️ Prowler Cloud — Threat Catalog and Exploitability Issues
- Prowler Cloud maintains a threat catalog and adds it to every AWS, Azure and Google Cloud scan. A new threat reaches scans as soon as it is published, without waiting for a release, and a signature in a scan configuration with the same
idreplaces the catalog one. - Each threat becomes one Exploitability issue per account, listing its affected hosts. An image match alone is at most
likely; the issue isexploitableonly when a vulnerability scanner reports the CVE on the host and the threat needs no credential. GET /api/v1/issuesandGET /api/v1/issues/overviewacceptfilter[threat]to list one threat andfilter[search]to match threat names and CVE IDs.
See Exploitability Issues for how a threat is judged and cleared.
🏛️ AWS — Organizations and CloudWatch Observability Access Manager Checks
organizations_security_services_delegated_admin_not_management_accountverifies that security services with trusted access in the organization have a delegated administrator instead of being administered from the management account. Contributed by @tamg-aws. Thank you!- A new
oamservice withoam_sink_not_publicly_accessible, which reports CloudWatch Observability Access Manager sinks whose resource policy lets any AWS account link to them. Contributed by @tamg-aws. Thank you!
Explore all checks at Prowler Hub.
🛠️ Improvements and Fixes
- The CloudFormation scan role grants
lambda:GetLayerVersion, and its StackSet roleamplify:ListAppsandamplify:ListBranches, soawslambda_layer_no_secrets_in_contentandamplify_app_no_secrets_in_environmentcan scan accounts onboarded with it. Update the stack to pick up the new actions. Contributed by @oleksii-udovychenko. Thank you! organizations_delegated_administratorsno longer reports PASS when an untrusted delegated administrator is listed before a trusted one, or when delegated administrators cannot be listed because of throttling or service errors.- AWS resource policy checks accept
aws:PrincipalOrgPathsandForAnyValueoperators as restrictive organization conditions, and no longer treat a wildcard organization ID inside a list as restrictive. elbv2_insecure_ssl_ciphersno longer fails load balancers that use secure non-PQ FIPS TLS policies. Contributed by @Puro-33. Thank you!- Google Cloud Storage buckets are still listed and evaluated when the IAM policy of one bucket cannot be read;
cloudstorage_bucket_public_accessreports that bucket asMANUAL. Contributed by @wils0ns. Thank you! compute_loadbalancer_logging_enabledno longer fails load balancers whose URL map default service is a global backend bucket, which has nologConfigand always logs requests. Contributed by @jamalkamaladdin. Thank you!vm_emerging_threat_imagematches marketplace offers, SKUs and gallery image names regardless of case.- The Sentry browser and server setup no longer passes the deprecated
profilesSampleRateoption, which had no effect without a profiling integration. Contributed by @jasontd92. Thank you! - Prowler Local Server: adding Amazon S3 integrations is a Prowler Cloud feature; the button opens the upgrade dialog, and existing integrations can still be edited, tested, toggled and deleted. Realtime appears in the sidebar as a Prowler Cloud feature.
- Prowler Private Cloud: on AWS Marketplace, a plan change during a month is billed that month at the plan it started on, with the new plan's prices from the 1st of the next month.
🔐 Security Updates
pyjwtupgraded to 2.15.0 in the SDK, the API and the MCP Server, patching CVE-2026-101918 and CVE-2026-102275.- PowerShell upgraded to 7.6.10 in the SDK and API images, bundling .NET runtime 10.0.15, and
uvto 0.13.7, patching the rustls advisories. zlibupgraded to its patched release in the SDK, API, UI and MCP Server images, and Trivy to 0.76.2 in the SDK and API images.mcpupgraded to 1.30.0 in the MCP Server image, together withjoserfc,opentelemetry-api,pydantic-settingsandpython-multipart.multidict,opentelemetryandsetuptoolsupgraded to patched versions in the SDK and API images.
🙌 External Contributors
Thank you to our community contributors for this release!
- @tamg-aws: AWS Organizations delegated administration check and the new
oamservice with its sink exposure check (#12565, #12562) - @oleksii-udovychenko: missing actions in the CloudFormation scan role (#12923)
- @Puro-33: non-PQ FIPS TLS policies in
elbv2_insecure_ssl_ciphers(#13292) - @wils0ns: Google Cloud Storage bucket IAM policy fix (#13333)
- @jamalkamaladdin: load balancer logging fix for backend buckets (#12904)
- @jasontd92: deprecated Sentry option cleanup (#13119)
- @baggers27: Python version requirement in the README (#12951)
See the full release notes on GitHub for the complete list of changes.
UI
🔄 Changed
- Sentry browser and server SDK setup no longer passes the deprecated
profilesSampleRateoption, which had no effect without a profiling integration (#13119)
🔐 Security
- zlib to 1.4-r0 in the UI container image, patching CVE-2026-4738 (#13322)
API
🔄 Changed
regexconstraint raised to 2026.5.9 to match the pin the Prowler SDK requires (#13330)
🔐 Security
pyjwtfrom 2.14.0 to 2.15.0, patching CVE-2026-101918 and CVE-2026-102275 (#13297)- zlib1g to 1:1.3.dfsg+really1.3.1-1+deb13u1 and Trivy from 0.76.1 to 0.76.2 in the API container image, patching CVE-2026-76844, CVE-2026-85091 and CVE-2026-78661 (#13322)
- PowerShell from 7.5.13 to 7.6.10 (.NET runtime 10.0.15), uv from 0.13.4 to 0.13.7 and multidict, opentelemetry and setuptools in the API container image, patching CVE-2026-109475, CVE-2026-104874, CVE-2026-114603, CVE-2026-59890 and the rustls advisories in uv (#13342)
SDK
🚀 Added
oam_sink_not_publicly_accessiblecheck for AWS provider, reporting CloudWatch Observability Access Manager sinks whose resource policy lets any AWS account link to them (#12562)organizations_security_services_delegated_admin_not_management_accountcheck for AWS provider, verifying that security services with trusted access in the organization have a delegated administrator instead of being administered from the management account (#12565)- Threat signatures (
prowler/lib/threats): emerging vulnerabilities described as data (affected image publishers, names and per-branch version ranges proven by examples, exposed ports, impact and remediation), supplied per scan underthreat_signaturesfor AWS, Azure and GCP (#13317) - Developer guide for writing an emerging threat signature, with a signature template (#13317)
Check_Report.raw, a structured payload a check can attach to its finding raw result (#13317)ec2_instance_emerging_threat_image,vm_emerging_threat_imageandcompute_instance_emerging_threat_imagechecks for AWS, Azure and GCP, matching compute instances against threat signatures (#13317)- Image provenance for compute instances: owner and name of third-party AMIs in the EC2 service, the full image reference of Azure VMs, and the boot disk source image of GCP instances (#13317)
🐞 Fixed
- Organization condition parsing for AWS resource policy checks accepts
aws:PrincipalOrgPathsandForAnyValueoperators as restrictive, and no longer treats a wildcard organization ID inside a list as restrictive (#12562) organizations_delegated_administratorsno longer reports PASS when an untrusted delegated administrator is listed before a trusted one (#12565)organizations_delegated_administratorsno longer reports PASS when delegated administrators cannot be listed because of throttling or service errors (#12565)compute_loadbalancer_logging_enabledno longer reports FAIL for load balancers whose URL map default service is a global backend bucket, which has nologConfigand always logs requests (#12904)- CloudFormation scan role now grants
lambda:GetLayerVersion, and its StackSet roleamplify:ListAppsandamplify:ListBranches, soawslambda_layer_no_secrets_in_contentandamplify_app_no_secrets_in_environmentcan scan accounts onboarded with it (#12923) - False positives for secure non-PQ FIPS TLS policies in
elbv2_insecure_ssl_ciphers(#13292) - GCP Cloud Storage buckets are still listed and evaluated when the IAM policy of one bucket cannot be read;
cloudstorage_bucket_public_accessreports that bucket asMANUAL(#13333) vm_emerging_threat_imageno longer misses VMs whose marketplace offer, SKU or gallery image name was given in a different case than the threat signature'sname_regex(#13336)
🔐 Security
pyjwtfrom 2.14.0 to 2.15.0, patching CVE-2026-101918 and CVE-2026-102275 (#13297)- zlib1g to 1:1.3.dfsg+really1.3.1-1+deb13u1 and Trivy from 0.76.1 to 0.76.2 in the SDK container image, patching CVE-2026-76844, CVE-2026-85091 and CVE-2026-78661 (#13322)
- PowerShell from 7.5.13 to 7.6.10 (.NET runtime 10.0.15), uv from 0.13.4 to 0.13.7 and joserfc, multidict, opentelemetry and setuptools in the SDK container image, patching CVE-2026-109475, CVE-2026-104874, CVE-2026-114603, CVE-2026-119284, CVE-2026-59890 and the rustls advisories in uv (#13342)
MCP
🔐 Security
pyjwtfrom 2.14.0 to 2.15.0, patching CVE-2026-101918 and CVE-2026-102275 (#13297)- zlib to 1.4-r0 in the MCP Server container image, patching CVE-2026-4738 (#13322)
- mcp from 1.28.1 to 1.30.0 plus joserfc, opentelemetry-api, pydantic-settings and python-multipart in the MCP Server container image, patching CVE-2026-59951, CVE-2026-116684, CVE-2026-116685, CVE-2026-116686, CVE-2026-119284, CVE-2026-114603, CVE-2026-53540 and GHSA-4xgf-cpjx-pc3j (#13342)