Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed /generate-pdf endpoint
-
DeliveryInject <img> markup into report_content
-
ExploitReportLab fetches attacker URL server-side
-
ExecutionServer queries internal/external host
-
PersistImage response embedded in returned PDF
-
ImpactAttacker reads leaked data and maps internal reachability
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the application's /generate-pdf endpoint be network-reachable and accept attacker-controlled report_content (the default behavior in Company Research Agent through 2.2.0, with no authentication per PR:N). The specific trigger is injecting unescaped ReportLab paragraph markup - inline <img> elements - into report_content, which ReportLab resolves by fetching the supplied src URL server-side. Limiting factors: impact is constrained to outbound request forgery and leakage of responses that can be rendered as images into the returned PDF (confidentiality-low, no integrity or availability impact), so non-image or non-renderable internal responses yield mainly reachability/probing signal rather than full content exfiltration; realistic internal-network risk also depends on whether the instance is internet-exposed and what internal services or metadata endpoints are routable from the server. |
| Impact | Signals converge on a genuine-but-moderate SSRF rather than a top-tier emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms a network-reachable, low-complexity, unauthenticated flaw with no user interaction, which supports easy triggering; however impact is deliberately scoped low (VC:L/VI:N/VA:N, SC:L) because the primary outcome is outbound request forgery and leakage of image-renderable responses, not direct code execution or full data compromise, yielding a Medium 6.9. No EPSS score was provided, so exploitation probability cannot be quantified. The CVE is NOT in CISA KEV and no KEV-style active exploitation is claimed. A detailed technical writeup (hackmd) and a VulnCheck advisory with direct source-line references exist, so exploitation methodology is public even though no packaged exploit flag was supplied in the input. There are no conflicting signals between the vector and the description - both agree on remote, unauthenticated, low-impact SSRF. The main risk amplifier is deployment context: if an instance is reachable from the internet while sitting inside a network with sensitive internal services or cloud metadata endpoints, the low technical impact understates the real blast radius. Overall this is a real but second-tier priority, driven by ease of exploitation and internal-recon potential rather than by severity or confirmed in-the-wild use. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a request to the /generate-pdf endpoint with report_content containing a ReportLab paragraph <img> tag whose src points to an internal host or cloud metadata address. The server renders the PDF, fetching the attacker-chosen URL and embedding the image response, which lets the attacker probe internal reachability and exfiltrate image-renderable content via the returned PDF. The technique is publicly documented in the referenced hackmd writeup and VulnCheck advisory, though no weaponized exploit is cited in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 11, 2026
Server-side request forgery in Company Research Agent through 2.2.0 allows unauthenticated remote attackers to make the server issue outbound HTTP requests by injecting unescaped ReportLab paragraph markup - specifically inline img elements - into the report_content parameter handled by the /generate-pdf endpoint, with the fetched image responses embedded in the returned PDF to give an attacker a content-leakage and internal-reachability oracle. Impact is confined to confidentiality (only responses renderable as images leak content), with no integrity or availability effect, and no public exploit code has been identified at time of analysis, although a public technical writeup describes the injection technique. The issue is tracked as CWE-918 and rated CVSS 4.0 base 6.9 (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L), consistent with an independent assessment of a genuine-but-moderate SSRF.
RemediationAI
No vendor-released patch was identified in the available data at time of analysis, so operators should either upgrade past 2.2.0 once a fixed release appears or apply compensating controls now. The most direct code-level fix is to treat report_content as data, not markup: XML-escape it with xml.sax.saxutils.escape (or reject/strip img and other tags) before it is handed to Paragraph in backend/utils/utils.py, accepting that any intentionally supported inline formatting in generated PDFs is lost. Where code changes are not practical, reduce exposure instead - require authentication or an API key on /generate-pdf and restrict the endpoint to trusted networks or an allowlisting reverse proxy, at the cost of breaking public or automated use of the PDF generation feature. Add outbound egress filtering on the application host that denies RFC1918, loopback, link-local and cloud metadata addresses (169.254.169.254, fd00:ec2::254) and permits only an explicit allowlist of external hosts the research feature needs, noting that overly broad blocking can break legitimate research fetches. Enforce IMDSv2 or equivalent metadata hardening so that even a successful SSRF to the metadata service yields little, and monitor logs for report_content containing img/src markup or unexpected internal hostnames as a detection signal. Advisory references: https://www.vulncheck.com/advisories/company-research-agent-through-2.2.0-ssrf-via-generate-pdf-reportlab-markup and https://hackmd.io/@1ExmmukzRMWN7B4gQ4W-4Q/guy-hartstein-company-research-agent-pdf-ssrf.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ReportLab does not treat Paragraph text as inert strings: it parses a small XML-like markup subset, and its img tag handler resolves the src attribute by fetching that URL server-side before embedding the result into the generated PDF. In the v2.2.0 tree of guy-hartstein/company-research-agent, backend/utils/utils.py (around line 196) passes attacker-supplied report_content into a Paragraph without escaping it, and application.py (lines ~264-265) exposes that path through the /generate-pdf endpoint, so the XML-escaping step that would neutralize the markup is simply absent. CWE-918 describes the root-cause class: a user-controlled URL is dereferenced by the server without validating scheme, host, or destination network. Because ReportLab must be able to render the response as an image for the attacker to read it back, the practical leak channel is image-shaped responses or behavioural differences (timing, errors), which is why the assessed impact is confidentiality-low rather than full internal-content exfiltration - non-image internal responses still yield a useful reachability/probing signal. The endpoint is network-reachable by default, and the PR:N component of the CVSS vector confirms that authentication is not required for exploitation.
Know when Company Research Agent 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N
Remote unauthenticated SSRF with no UI gives AV:N/AC:L/PR:N/UI:N; server-initiated requests to other systems set S:C, and leakage of image responses is C:L with no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Company Research Agent through 2.2.0 contains a server-side request forgery vulnerability that allows unauthenticated attackers to trigger outbound requests by injecting unescaped ReportLab paragraph markup into the /generate-pdf endpoint. Attackers can embed inline img elements in report_content to make the server fetch internal or external hosts, leaking image responses in returned PDFs and probing reachability.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
EUVD-2026-97001
GHSA-5j4m-qx6m-86qc
NVD
CVE.org
EPSS
Exploit-DB