Evidence
{
"summary": "The generic normalizer assigns the entire scanner item to the normalized evidence field. The report generator then renders the evidence field into HTML and PDF. HTML escaping is present, but no recursive redaction or evidence minimization is applied before report generation.",
"observed_code_paths": [
"normalize_generic stores evidence: item",
"render_html renders finding evidence through html_block",
"flatten_for_pdf serializes finding evidence into PDF text"
],
"positive_control": "HTML content is escaped, reducing script injection risk. This does not prevent disclosure of sensitive scanner evidence."
}
Attack Path
A Burp, Qualys, Sonar, or custom scanner export includes request headers, cookies, bearer tokens, API keys, session identifiers, request bodies, or response snippets. normalize_findings.py copies the raw item into the evidence field. generate_report.py embeds that evidence in a polished report. The report is then shared more broadly than the raw scanner export, leaking sensitive operational details.
AI / Agent Relevance
The skill explicitly treats scanner output as untrusted input, and the report agent turns that input into downstream deliverables. In an agentic workflow, this expands the blast radius of sensitive scanner evidence unless redaction is deterministic.
Threat Intelligence
As of 2026-05-28
Current AI security guidance treats tool output, scanner output, and report artifacts as sensitive context that can leak credentials or operational details when copied without minimization.
- Evidence exfiltration through polished reports: Scanner exports commonly contain request headers, tokens, session values, response snippets, and internal hostnames. Action: Add recursive redaction and evidence-minimized report modes before supporting live scanner exports.
Mapped Techniques
{
"mitre_atlas": "Exfiltration and credential access through tool-output handling",
"cwe": "CWE-200; CWE-532"
}Detection / Test Impact
Use fixtures with nested secrets and assert normalized JSON, HTML, and PDF bytes do not contain secret values.
Sources
Freshness: Checked against official sources on 2026-05-28Confidence: High
Attack Path Visualization
How This Vulnerability Works
For Hades Blackwatch Skill Repository, Raw scanner evidence can be copied into shareable HTML/PDF reports without secret redaction can be understood as a control failure where untrusted influence reaches scanner evidence normalization and report generation and can affect HTML/PDF security reports generated from scanner exports. A Burp, Qualys, Sonar, or custom scanner export includes request headers, cookies, bearer...
1
Influence
Untrusted input or context reaches the reviewed workflow.
Actor: Attacker-controlled inputGap: Input is treated as more trusted than it should be.Break: Classify the source as untrusted and constrain it early.
2
Trust Boundary
The workflow passes data into scanner evidence normalization and report generation.
Actor: Application or agent runtimeGap: A deterministic policy check is missing or incomplete.Break: Validate before the data crosses the boundary.
3
Control Failure
A Burp, Qualys, Sonar, or custom scanner export includes request headers, cookies, bearer tokens, API keys, session identifiers, request bodies, or response snippets. normalize_findings.py copies the raw item...
Actor: Vulnerable componentGap: Authorization, validation, isolation, or evidence minimization does not fully hold.Break: Add a recursive redaction layer before storing normalized evidence and before rendering reports. Redact key names and values matching Authorization, Cookie, Set-Cookie, token, secret, passw...
4
Impact
The unsafe path can affect HTML/PDF security reports generated from scanner exports.
Actor: Impacted assetGap: Blast radius is not contained.Break: Limit privileges, scope, data exposure, and egress.
5
Detect / Break
Create a fixture with nested request and response objects containing Authorization, Cookie, Set-Cookie, api_key, password, bearer token, private key markers, and session IDs. Run normalize_findings.py and gene...
Actor: Security controlGap: Regression coverage or monitoring may be missing.Break: Turn the regression test and detection point into a release gate.
Attacker Goal
Influence scanner evidence normalization and report generation so the workflow reaches HTML/PDF security reports generated from scanner exports in an unintended way.
Preconditions
The skill explicitly treats scanner output as untrusted input, and the report agent turns that input into downstream deliverables. In an agentic workflow, this expands the blast radius of sensitive scanner evidence unless redaction is deterministic.
Control Breaks
Missing or incomplete deterministic enforcement at the trust boundary.
Impact
HTML/PDF security reports generated from scanner exports
Detection Points
Create a fixture with nested request and response objects containing Authorization, Cookie, Set-Cookie, api_key, password, bearer token, private key markers, and session IDs. Run normalize_findings.py and generate_report.py, then assert none of the secret val...
Defensive Breakpoints
Add a recursive redaction layer before storing normalized evidence and before rendering reports. Redact key names and values matching Authorization, Cookie, Set-Cookie, token, secret, password, api_key, bearer, private_key, session, credential, client_secret, and configurable organization patterns. Prefer a safe evide...
Generated from the finding evidence, attack path, affected component, affected asset, fix, and regression test.
Conceptual defensive flow only. No exploit payloads or unauthorized testing steps are provided.
Framework Mappings
{
"owasp_llm": "Sensitive Information Disclosure",
"owasp_agentic": "Information Disclosure through Tool and Context Handling",
"mitre_atlas": "Credential Access / Exfiltration through tool-output handling",
"nist_ai_rmf": "Map, Measure, Manage",
"cwe": "CWE-200; CWE-532",
"cve": null
}
Score
{
"system": "AIVSS",
"value": "High",
"rationale": "The issue can expose high-value security evidence and credentials, is easy to reproduce with realistic scanner exports, and is amplified by automated report sharing."
}
Recommended Fix
Add a recursive redaction layer before storing normalized evidence and before rendering reports. Redact key names and values matching Authorization, Cookie, Set-Cookie, token, secret, password, api_key, bearer, private_key, session, credential, client_secret, and configurable organization patterns. Prefer a safe evidence summary allowlist over storing full raw scanner items by default.
Regression Test
Create a fixture with nested request and response objects containing Authorization, Cookie, Set-Cookie, api_key, password, bearer token, private key markers, and session IDs. Run normalize_findings.py and generate_report.py, then assert none of the secret values appear in normalized JSON, HTML, or PDF bytes.
Residual Risk
Some scanner proof data can remain sensitive even after key-based redaction. High-risk reports should carry a classification label and support an evidence-minimized mode.