Severity by source
AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:H
Import is typically available to authenticated members so PR:L (vendor used PR:H); sandbox escape justifies S:C, arbitrary-filename write gives I:H, C:N, and A:L since only working-dir files may be clobbered.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
Outline is a service that allows for collaborative documentation. Prior to 1.7.0, ZipHelper.extract computes the extraction path for each entry by passing a full filesystem path through trimFileAndExt, a filename helper that calls path.basename on its input when truncating. When a zip entry's nested path is long enough to push the joined filesystem path over MAX_PATH_LENGTH (4096 bytes), trimFileAndExt silently drops all directory components and returns a bare filename. fs.createWriteStream then opens the file relative to the process working directory instead of inside the extraction sandbox, and the escaped file persists after import cleanup because cleanupExtractedData only removes the temporary extraction directory. This vulnerability is fixed in 1.7.0.
AnalysisAI
Zip extraction sandbox escape in Outline (self-hosted collaborative knowledge base) before 1.7.0 lets an authenticated user with import privileges write an attacker-named file into the server's process working directory instead of the isolated extraction folder. A crafted import archive whose nested entry path exceeds the 4096-byte MAX_PATH_LENGTH causes the trimFileAndExt helper to collapse the path to a bare filename, and the resulting file survives normal import cleanup. Publicly available exploit code exists per SSVC (POC), but there is no public exploit identified in the wild and EPSS probability is very low (0.04%).
Technical ContextAI
Outline is a Node.js/TypeScript collaborative documentation ('team wiki') platform that supports importing content from uploaded ZIP archives. The flaw lives in ZipHelper.extract, which builds each entry's destination by joining the sandbox directory with the entry's internal path and then passing that full filesystem path through trimFileAndExt - a filename-truncation helper that internally calls path.basename. When the joined path grows beyond MAX_PATH_LENGTH (4096 bytes), trimFileAndExt discards every directory component and returns only the base filename, so fs.createWriteStream resolves it relative to the process working directory rather than the intended extraction sandbox. This is a classic CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / path traversal) root cause, here expressed not as '../' sequences but as an implicit escape triggered by a path-length edge case; cleanupExtractedData only deletes the temporary extraction directory, so the escaped artifact persists. Affected component per CPE is cpe:2.3:a:outline:outline:*:*:*:*:*:*:*:*.
RemediationAI
Vendor-released patch: upgrade Outline to 1.7.0 or later, which corrects ZipHelper.extract so extraction paths are no longer collapsed to a bare filename. If immediate upgrade is not possible, restrict who can perform document/collection imports to trusted administrators only (reducing exposure of the privileged import path), and consider temporarily disabling ZIP import workflows - the trade-off is loss of bulk-import functionality for end users. As a hardening measure, run the Outline server process from a dedicated, minimal working directory that contains no sensitive or overwritable files, so any escaped write lands in a low-value location; note this does not prevent the escape, only limits its impact. Review the advisory at https://github.com/outline/outline/security/advisories/GHSA-hw32-2v7j-mgqc for authoritative fix guidance.
An issue in Outline <= v0.76.1 allows attackers to execute a session hijacking attack via user interaction with a crafte
Outline versions up to - contains a vulnerability that allows attackers to potentially execute arbitrary code with eleva
An issue in Outline <= v0.76.1 allows attackers to redirect a victim user to a malicious site via intercepting and chang
Outline versions prior to 1.4.0 fail to validate attachment file paths during JSON import, allowing authenticated attack
Outline is an open source, collaborative document editor. Rated medium severity (CVSS 5.4), this vulnerability is remote
Cross-site Scripting (XSS) - Stored in GitHub repository outline/outline prior to 0.70.1. Rated medium severity (CVSS 5.
Cross-site Scripting (XSS) - Stored in GitHub repository outline/outline prior to v0.64.4. Rated medium severity (CVSS 5
Account takeover in Outline collaborative documentation service versions 0.86.0 through 1.5.x enables unauthenticated at
Privilege escalation in Outline (the collaborative wiki/knowledge-base) versions 0.84.0 through 1.6.1 lets a malicious O
An Insecure Direct Object Reference (IDOR) vulnerability in Outline's document restoration logic allows any authenticate
Broken object-level authorization in Outline (self-hosted collaborative documentation) versions 0.84.0 through 1.7.0 let
Cross-workspace document disclosure in Outline (getoutline) versions 0.86.0 through 1.6.x lets an authenticated user min
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29332