Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain existing public share link
-
DeliveryOwner unpublishes the shared document
-
ExploitQuery shares.info / documents.info / /s/ route unauthenticated
-
ExecutionRead full withdrawn document content
-
ImpactOwner/admin revoke attempt fails (persistent disclosure)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Operation on resource after expiration or release
|
| Exploitation Conditions | Exploitation requires that an attacker already holds a valid public share URL (share ID) for a document that was previously published and shared, and that the document has since been unpublished via documents.unpublish - the share loader in shareLoader.ts uses the Document 'withDrafts' scope and never checks publishedAt IS NOT NULL, so the withdrawn document keeps serving. There is NO authentication, cookie, CSRF token, or user interaction required to read the content (PR:N/UI:N confirmed by the vector and by Bob's anonymous requests in the PoC). The limiting factors are significant: the attacker cannot discover or enumerate unpublished documents without an existing link, and only document shares are confirmed affected (collection shares untested). A compounding condition, not a precondition, is that while the document is unpublished shares.revoke returns 404 for both owner and workspace administrator, so the disclosure cannot be closed except by re-publishing then revoking, or by direct database modification. Fixed configurations are any deployment on Outline 1.12.0 or later. |
| Impact | This is a real but bounded confidentiality issue rather than a high-urgency emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N) describes a network-reachable, low-complexity, unauthenticated read with LOW confidentiality impact and no integrity or availability impact, scoring 6.9 (Medium). The vuln.today priority is 'this_month', not act_now or emergency, which aligns with the Medium severity and the limited, per-link scope. There is no CISA KEV listing and no EPSS score in the provided data, so there is no evidence of active or widespread exploitation - exploitation status is therefore 'no public exploit identified at time of analysis' in the sense of a packaged weaponized exploit, though the VulnCheck/GHSA advisory itself publishes a complete step-by-step reproduction procedure (a public PoC reference exists; it is not verified as standalone working exploit code). The key limiting factor, explicitly stated in the advisory, is that an attacker must already possess a valid public share URL - the flaw does not permit discovery or enumeration of unpublished documents without a link. The practical priority is driven less by exploitation probability and more by the broken-revocation aspect: owners and administrators cannot withdraw exposed content through normal means, turning an accidental over-share into a persistent unauthenticated disclosure. Missing signals: EPSS and KEV are absent (not errors, just not provided), so likelihood is assessed from mechanism rather than observed telemetry. |
| Exploit ScenarioDerived | An Outline user publishes a document, shares it via a public link, then later unpublishes it believing the link is now dead. An attacker (or anyone) who retained that share URL continues to fetch the full withdrawn content unauthenticated via shares.info, documents.info, or the /s/ routes, while the owner's and administrator's attempts to revoke the link fail with 404. The GHSA advisory includes a full reproduction PoC, but exploitation still requires prior possession of the specific share URL. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
Improper access control in Outline before 1.12.0 leaves previously shared documents readable by unauthenticated users after the owner withdraws them: the public share loader in server/commands/shareLoader.ts retrieves the document through the 'withDrafts' scope and never enforces publishedAt IS NOT NULL, so an existing share link keeps serving the full text. Anyone holding the share URL can pull the withdrawn content through POST /api/shares.info, POST /api/documents.info with shareId, GET /s/<share-id> and GET /s/<share-id>.md without authentication, and while the document stays unpublished the shares.revoke endpoint returns 404 for both the share owner and workspace administrators, so the exposure cannot be closed through the normal UI. The vendor advisory includes a detailed public proof-of-concept walkthrough (not verified working exploit code); the issue was reported by VulnCheck and is fixed in 1.12.0 (commit d015a32459b5f5c5a8ef67aeb81742eeab430c52).
RemediationAI
Upgrade Outline to 1.12.0 or later (https://github.com/outline/outline/releases/tag/v1.12.0), which contains commit d015a32459b5f5c5a8ef67aeb81742eeab430c52 ('fix: Share state handling for unpublished documents', PR #14160); the patch makes documents.unpublish automatically set published: false on every active share for that document and rewrites shares.revoke to resolve the share through the withCollectionPermissions scope so drafts can be revoked. Because the vulnerable code paths are still live on older deployments, the vendor-documented in-product recovery for an already-affected share is to re-publish the document, revoke its share while it is published, and then unpublish it again - re-publishing briefly restores public access to the content, so treat that window as an additional exposure - or, as the reporter notes, to modify the database directly to mark the share unpublished/revoked. Note that shares.revoke returns 404 for both the owner and workspace administrators while the document is unpublished, so administrators who rely on revocation alone will believe the link is closed when it is not; verify by requesting /s/<share-id> anonymously after any revocation attempt. Beyond upgrading, the only verified way to eliminate the leak is to invalidate the share state itself; the advisory publication and version release are the authoritative references (https://github.com/outline/outline/security/advisories/GHSA-rq53-m97j-f2pg).
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
Outline is a Node.js/TypeScript team knowledge base backed by PostgreSQL through the Sequelize ORM, and the flaw is rooted in how Sequelize scopes are composed rather than in a missing permission check on a route. The Document model defines a default scope that restricts results to published rows (publishedAt IS NOT NULL), plus an explicit 'withDrafts' scope used for editor-side access. shareLoader.ts opts into 'withDrafts' when loading the share's associated document, and its guard clauses only reject suspended teams and archived documents/collections - there is no corresponding check for a null publishedAt - so withdrawing a document with documents.unpublish has no effect on its already-issued public share. The revocation path fails for the mirror-image reason: shares.revoke uses Share.findByPk under the Share model's default scope, which joins the document through the document's default (published-only) scope, so share.document resolves to null after unpublishing; because a document share has no collection association either, the existence guard throws NotFoundError before authorization or revocation code runs. CWE-672 (operation on a resource after expiration or release) captures the core failure, with CWE-200 and CWE-285 as related classification. The fix commits to two changes: unpublishing a document now marks all of its published, non-revoked shares as published: false within the same transaction, and shares.revoke now loads the share via the withCollectionPermissions scope, which already loads the document with 'withDrafts' so drafts can be revoked. The assessed vector (AV:N/AC:L/PR:N/UI:N/C:L) reflects that the attacker needs a pre-existing share identifier - there is no enumeration or discovery primitive - and only document shares are confirmed affected; collection shares were not tested in the report.
Know when Outline 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:N/SI:N/SA:N
Unauthenticated network read (AV:N/PR:N/UI:N), low complexity once the share link is held; discloses one document's content so C:L, with no integrity or availability impact and no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Outline before 1.12.0 contains an improper access control vulnerability that allows unauthenticated users to read unpublished documents because the share loader ignores unpublished status. Attackers holding an existing share link can query shares.info, documents.info, or the /s/ share routes to read withdrawn content, while shares.revoke returns 404 and blocks revocation.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
Zip extraction sandbox escape in Outline (self-hosted collaborative knowledge base) before 1.7.0 lets an authenticated u
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
EUVD-2026-115209
GHSA-4q4r-qmm8-wr2p
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB