CVE-2025-58351
NixOS vulnerability analysis and mitigation

Overview

CVE-2025-58351 is a stored Cross-Site Scripting (XSS) vulnerability in Outline, an open-source collaborative documentation platform, caused by a Content Security Policy (CSP) and ContentType bypass in its local file storage feature. It affects self-hosted Outline instances running versions 0.72.0 through 0.83.0 with FILE_STORAGE=local configured on the same domain as the application. The vulnerability was discovered during a routine security audit and publicly disclosed on September 2–3, 2025, with a fix released in version 0.84.0. It carries a CVSS v3.1 base score of 6.8 (Medium) (GitHub Advisory, Feedly).

Technical details

The root cause is improper neutralization of input during web page generation (CWE-79), specifically arising from the files.get API endpoint in the local storage plugin (plugins/storage/server/api/files.ts) failing to include a restrictive Content-Security-Policy header on file responses. Because uploaded files are served from the same origin as the Outline application, a malicious file attachment with an executable content type (ContentType bypass) could be served without CSP sandboxing, allowing embedded scripts to execute in the browser context of any user who accesses the file. The fix, applied in commit 18bc93c, adds a single Content-Security-Policy: sandbox header to all responses from the files.get endpoint, preventing script execution (GitHub Commit, GitHub Advisory). Exploitation requires the attacker to have low-level authenticated access and a victim user to interact with the malicious file.

Impact

Successful exploitation allows an authenticated attacker with low privileges to execute arbitrary scripts within the browser session of another user, enabling session hijacking, credential theft, or unauthorized actions performed on behalf of the victim. The confidentiality impact is rated High due to the potential for sensitive document content and session tokens to be exfiltrated. Integrity and availability are not directly impacted by this vulnerability. The scope is changed, meaning the attack crosses the security boundary from the attacker's session into another user's browser context (GitHub Advisory, Feedly).

Exploitability

As of the disclosure date, there is no public proof-of-concept exploit and no evidence of in-the-wild exploitation (Feedly). The EPSS score is approximately 0.03%, reflecting a low probability of near-term exploitation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation is limited to self-hosted Outline deployments using FILE_STORAGE=local on the same domain, which reduces the overall attack surface compared to cloud-hosted instances.

Exploitation steps

  1. Reconnaissance: Identify a self-hosted Outline instance (versions 0.72.0–0.83.0) configured with FILE_STORAGE=local and serving uploaded files from the same domain as the application.
  2. Authenticate: Obtain low-privilege authenticated access to the Outline instance (e.g., a standard user account).
  3. Craft malicious payload: Prepare a file (e.g., an HTML file containing a <script> tag with a malicious payload such as a cookie stealer or session token exfiltrator) that will be interpreted as executable by the browser.
  4. Upload file attachment: Upload the crafted file as a document attachment within Outline. The file is stored on the local filesystem and served via the files.get endpoint without a Content-Security-Policy: sandbox header.
  5. Deliver link to victim: Share the direct URL to the uploaded file with a target user (e.g., via a document link or chat message).
  6. Script execution: When the victim opens the file URL in their browser, the browser serves it from the same origin as Outline without CSP restrictions, executing the embedded script in the victim's session context — enabling session hijacking or data exfiltration (GitHub Advisory, GitHub Commit).

Indicators of compromise

  • Network: Unexpected outbound HTTP requests from a user's browser to external domains shortly after accessing an Outline file attachment URL; unusual data exfiltration patterns (e.g., cookies or tokens sent to attacker-controlled endpoints).
  • Logs: Outline access logs showing requests to the files.get endpoint (/api/files.get or equivalent) for HTML or script-type files uploaded by low-privilege users; repeated access to the same file URL by multiple different user accounts.
  • File System: Presence of .html, .svg, or other browser-executable file types in the Outline local file storage directory that were uploaded by non-administrative users.
  • Application Behavior: User sessions being invalidated or reused unexpectedly; reports from users of unauthorized actions performed in their accounts (GitHub Advisory).

Mitigation and workarounds

The primary remediation is to upgrade Outline to version 0.84.0 or later, which adds Content-Security-Policy: sandbox to all responses from the files.get endpoint (GitHub Release). For deployments that cannot upgrade immediately, a workaround is to configure a reverse proxy in front of Outline to inject the Content-Security-Policy: sandbox header on all responses from the file serving endpoint (GitHub Advisory). Alternatively, switching from FILE_STORAGE=local to an external storage provider (e.g., S3) on a separate domain eliminates the same-origin attack surface entirely. Administrators should also review uploaded files for suspicious executable content and restrict file upload permissions where possible.

Additional resources


SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-34191CRITICAL9.1
  • NixOS logoNixOS
  • apr-util
NoYesAug 06, 2026
CVE-2026-32327CRITICAL9.1
  • NixOS logoNixOS
  • apr-util
NoYesAug 06, 2026
CVE-2026-34502HIGH7.5
  • NixOS logoNixOS
  • apr-util
NoYesAug 06, 2026
CVE-2026-34501HIGH7.5
  • NixOS logoNixOS
  • apr-util
NoYesAug 06, 2026
CVE-2025-49506HIGH7.5
  • NixOS logoNixOS
  • apr-util
NoYesAug 06, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management