Skip to main content

SurfSense CVE-2026-102244

| EUVDEUVD-2026-88618 LOW
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-29 VulDB GHSA-m6qw-8q66-9vp2
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege user
  2. Delivery
    Craft document embedding attacker-controlled URL
  3. Exploit
    Invoke document export endpoint
  4. Execution
    Server-side export pipeline fetches URL
  5. Impact
    Reach internal services / leak response

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

Requires an authenticated low-privilege account on SurfSense (PR:L) and access to the Document Export Feature (POST to the export_document route in editor_routes.py). The SSRF is reachable through the server-side export/conversion pipeline (pypandoc/typst) that processes document content - an attacker must supply document content containing a URL or reference that the server dereferences during export. Limiting factors: valid authentication is needed (not exploitable pre-auth), no user interaction beyond the attacker's own request (UI:N), and impact is confidentiality-limited (VC:L) with no integrity/availability effect. Versions up to 0.0.36 are affected; 0.0.36.3 removes the server-side PDF/typst export path, reducing the exposed conversion surface.

Impact

This is a genuinely low-severity issue despite being remotely reachable. The vendor CVSS 4.0 vector (AV:N/AC:L/PR:L/UI:N/VC:L/VI:N/VA:N, base 2.1) reflects that exploitation requires an authenticated low-privilege user (PR:L) and yields only limited confidentiality impact (VC:L) with no integrity or availability impact - consistent with a classic SSRF that lets an attacker coax the server into making outbound requests but does not, on its own, expose secrets wholesale or corrupt/deny service. Exploitation signals: POC is publicly available (VulDB gist by DReazer, E:P), a patch exists (0.0.36.3, commit 2faff7b3), but there is no EPSS score and no CISA KEV entry provided, so this is 'publicly available exploit code exists' rather than confirmed active exploitation. No SSVC decision data (Exploitation/Automatable/Technical Impact) was supplied. Net: this is a low-priority, low-impact SSRF in a niche product - public exploit code raises opportunistic risk slightly, but the authentication requirement and confidentiality-only impact keep real-world risk modest. Note the source-code evidence: the fix removed the entire server-side PDF/typst export path rather than adding URL/SSRF filtering, so the reachable SSRF surface appears tied to the pandoc/typst conversion pipeline fetching remote resources embedded in exported documents.

Exploit ScenarioDerived

An authenticated low-privilege SurfSense user submits a document for export whose content embeds an attacker-chosen URL (e.g., an internal metadata endpoint or intranet host); the backend export pipeline in editor_routes.py fetches that resource server-side, letting the attacker probe or reach internal network services from the server's vantage point. A public proof-of-concept (VulDB/DReazer gist) exists, and because the attack complexity is low (AC:L) it is straightforward to reproduce once authenticated.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 – Sep 29, 2026

Server-side request forgery (SSRF) in MODSetter SurfSense 0.0.36 and earlier allows an authenticated, low-privilege user to make the backend dereference attacker-influenced URLs by supplying crafted content to the Document Export Feature (the export_document route in surfsense_backend/app/routes/editor_routes.py). Because the server-side export/conversion pipeline (pypandoc/typst) fetches or processes references embedded in document content, a malicious export request can cause the server to issue outbound requests to resources it can reach. Publicly available exploit code exists and the flaw is remotely reachable, but the assessed impact is confidentiality-limited (VC:L) with no integrity or availability effect, making this a genuinely low-severity issue despite remote reachability.

RemediationAI

Vendor-released patch: SurfSense 0.0.36.3 (commit 2faff7b3823322a9cb6797973e6caf089386c354, release https://github.com/MODSetter/SurfSense/releases/tag/0.0.36.3). Upgrading is the primary and recommended fix; the patch removes the server-side PDF/typst export path that supplied the request-forging surface and drops the typst dependency, so no separate configuration step is needed once 0.0.36.3 or later is deployed. If an immediate upgrade is not possible, reduce exposure by restricting the Document Export endpoint to trusted roles only (the attack requires an authenticated low-privilege account, so tightening account provisioning and privileges removes the practical foothold), and by disabling the server-side export formats (PDF/Typst) in favor of client-side or locally generated output - though this degrades export functionality for legitimate users. Operators should also enforce outbound egress filtering from the SurfSense backend host so that even if a forged request is issued it cannot reach internal metadata services, admin interfaces, or RFC1918 ranges; this is a compensating control with the trade-off of requiring careful allowlisting of any legitimate endpoints the conversion pipeline still needs, and it should not be treated as a substitute for applying the 0.0.36.3 update. Note that the public exploit code (https://gist.github.com/DReazer/57126e711507324a547edde96c62c218) demonstrates that proof-of-concept exploitation is already available, increasing the urgency of patching despite the low assessed severity.

Affected VersionsENISA

SurfSense 0.0.26
SurfSense 0.0.7
SurfSense 0.0.30
SurfSense 0.0.34
SurfSense 0.0.5
SurfSense 0.0.36
SurfSense 0.0.32
SurfSense 0.0.25
SurfSense 0.0.13
SurfSense 0.0.14
SurfSense 0.0.35
SurfSense 0.0.3
SurfSense 0.0.28
SurfSense 0.0.31
SurfSense 0.0.27
SurfSense 0.0.2
SurfSense 0.0.22
SurfSense 0.0.1
SurfSense 0.0.20
SurfSense 0.0.19
SurfSense 0.0.29
SurfSense 0.0.17
SurfSense 0.0.16
SurfSense 0.0.4
SurfSense 0.0.24
SurfSense 0.0.23
SurfSense 0.0.12
SurfSense 0.0.11
SurfSense 0.0.8
SurfSense 0.0.18
SurfSense 0.0.21
SurfSense 0.0.9
SurfSense 0.0.10
SurfSense 0.0.33
SurfSense 0.0.15
SurfSense 0.0.6

Affected Packages

euvd surfsense no fix

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

The vulnerability is a classic CWE-918 Server-Side Request Forgery rooted in an unsafe server-side document conversion pipeline. SurfSense's editor_routes.py exposed a multi-format export function (PDF, DOCX, HTML, LaTeX, EPUB, ODT, plain text) that used pypandoc and typst to convert user-supplied Markdown into output formats, including a standalone Typst/PDF path that loaded external templates and normalized LaTeX delimiters. When attacker-controlled Markdown or embedded references are passed into that pipeline, the backend can be induced to dereference a URL or resource supplied by the user, reaching internal network endpoints or services not otherwise exposed. Per the CPE (cpe:2.3:a:modsetter:surfsense:*:*:*:*:*:*:*:*) all SurfSense releases through 0.0.36 are in scope. The vendor's fix (commit 2faff7b3823322a9cb6797973e6caf089386c354) removes the server-side PDF/typst export path entirely, dropping the typst dependency and the get_typst_template_path usage, which is the component that materially reduced the SSRF exposure surface.

Know when Surfsense 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 (VulDB) PRIMARY 2.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 4.3 MEDIUM

Remote and low-complexity but requires an authenticated low-priv user (PR:L); SSRF yields limited confidentiality (C:L) with no integrity or availability impact and no confirmed scope change.

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Severity Changed
Sep 29, 2026 - 03:22 NVD
MEDIUM LOW
CVSS changed
Sep 29, 2026 - 03:22 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Sep 29, 2026 - 02:45 cve.org
LOW 2.1

DescriptionCVE.org

A security flaw has been discovered in MODSetter SurfSense up to 0.0.36. Impacted is an unknown function of the file surfsense_backend/app/routes/editor_routes.py of the component Document Export Feature. Performing a manipulation results in server-side request forgery. The attack can be initiated remotely. The exploit has been released to the public and may be used for attacks. Upgrading to version 0.0.36.3 is recommended to address this issue. The patch is named 2faff7b3823322a9cb6797973e6caf089386c354. The affected component should be upgraded.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
niche open-source AI research/NotebookLM-like tool, no broad enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL 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 LOW
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Related Vulnerabilities in SurfSense SSRF and Command Injection Vulnerabilities

View all 2

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