CVE-2026-43979 Local Deep Research: HTML Injection via Unescaped User Input in PDF Export (`pdf_service.py:_markdown_to_html`)
An authenticated attacker can inject HTML into PDF exports to trigger Server-Side Request Forgery, bypassing existing defenses and potentially accessing internal resources.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-43979?
CVE-2026-43979 is a medium-severity server-side request forgery vulnerability in LearningCircuit local-deep-research, published on 28 May 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
Local Deep Research is an AI-powered research assistant for deep, iterative research. Prior to 1.6.0, PDFService._markdown_to_html() constructs an HTML document by interpolating user-controlled values — specifically title (sourced from research.title or research.query) and metadata key-value pairs — directly into an f-string without any HTML escaping. An authenticated attacker can craft a research query containing HTML special characters to inject arbitrary HTML tags into the document processed by WeasyPrint during PDF export. This injection can be chained to trigger a Server-Side Request Forgery (SSRF), bypassing the application's existing SSRF defenses in ssrf_validator.py. This vulnerability is fixed in 1.6.0.
Which versions are affected by CVE-2026-43979?
3 open source packages ship an affected version, including local-deep-research.
| Package | Affected | Fixed in |
|---|---|---|
local-deep-research PyPI | All versions | 1.6.0 |
local-deep-research PyPI | All versions | 1.6.0 |
local-deep-research PyPI | All versions | 1.6.0 |
How do I fix CVE-2026-43979?
Upgrade local-deep-research to 1.6.0 or later.
Upgrade, and send outbound requests through an allow-list that blocks internal addresses. More about Server-side request forgery.
Is CVE-2026-43979 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-43979 exists.
Sources
Also known as GHSA-fj2m-qvh9-jq4q, PYSEC-2026-2610.