Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-44695

CVE-2026-44695: Getoutline Outline Auth Bypass Vulnerability

CVE-2026-44695 is an authentication bypass flaw in Getoutline Outline that allows attackers to link victim accounts to their Slack identity. This post covers the technical details, affected versions, and mitigation steps.

Published:

CVE-2026-44695 Overview

Outline is a collaborative documentation platform. Versions prior to 1.7.1 contain a flaw in the Slack integration callback endpoint GET /auth/slack.post. The endpoint accepts an unsigned, session-independent OAuth state value during the account-linking flow. An attacker who can obtain a Slack OAuth code for the same Outline Slack client can coerce a logged-in Outline user to complete the callback. The result links the victim's Outline account to the attacker-controlled Slack team_id and user_id. The attacker can then invoke the Slack /outline search command and execute queries as the victim user. The issue is tracked as CWE-352 and fixed in version 1.7.1.

Critical Impact

A successful attack links a victim's Outline account to an attacker's Slack identity, enabling unauthorized search access to the victim's Outline content through the Slack /outline command.

Affected Products

  • Outline (getoutline/outline) versions prior to 1.7.1
  • Self-hosted Outline deployments with Slack integration enabled
  • Outline instances using the /auth/slack.post OAuth callback

Discovery Timeline

  • 2026-05-11 - CVE-2026-44695 published to NVD
  • 2026-05-15 - Last updated in NVD database

Technical Details for CVE-2026-44695

Vulnerability Analysis

The vulnerability is a Cross-Site Request Forgery (CSRF) weakness in the Slack OAuth account-linking flow. Outline's GET /auth/slack.post endpoint completes the Slack identity linkage for the currently authenticated Outline session. The endpoint does not validate that the OAuth state parameter is cryptographically signed or bound to the user's session. Any valid-looking state value is accepted, including values an attacker constructs.

The Slack OAuth code parameter on the callback determines which Slack identity becomes linked. An attacker who completes a Slack OAuth handshake against the same Outline Slack client receives a code that resolves to the attacker's team_id and user_id. By inducing a logged-in Outline user to visit the crafted callback URL, the attacker forces Outline to consume that code under the victim's session. Outline then links the attacker's Slack identity to the victim's Outline account.

Once linked, the attacker uses the Slack /outline search slash command from their own Slack workspace. Outline resolves the command against the linked victim account and returns search results from the victim's accessible documents.

Root Cause

The root cause is missing session binding and signature validation on the OAuth state parameter. A correctly implemented OAuth flow generates state server-side, stores it against the session, and rejects callbacks whose state does not match. Outline's implementation accepted state as opaque input without verifying origin, allowing CSRF against the account-linking action.

Attack Vector

Exploitation requires the attacker to complete a Slack OAuth handshake against the target Outline Slack application to obtain a valid code. The attacker then crafts a URL pointing at the victim Outline instance's /auth/slack.post endpoint with the attacker-obtained code and an arbitrary state. The attacker delivers the URL through phishing, an embedded image, or any vector that triggers a request from the authenticated victim's browser. User interaction is required, consistent with the CVSS UI:R designation.

Technical details are described in the Outline GitHub Security Advisory GHSA-mjgw-5j7q-gv8v. No public exploit code is available.

Detection Methods for CVE-2026-44695

Indicators of Compromise

  • Requests to /auth/slack.post containing code and state parameters where the Referer header is absent or points to an external domain.
  • Slack identity linkage events on Outline accounts that did not originate from a user-initiated Slack connection in the application UI.
  • /outline search slash command invocations from Slack team_id values that do not match the workspace historically associated with the Outline user.

Detection Strategies

  • Audit the Outline database users and authentications tables for Slack providerId values mapped to unexpected team_id entries.
  • Review reverse proxy and application logs for GET /auth/slack.post requests preceding new Slack linkage records.
  • Correlate Slack audit logs of /outline command usage against Outline access logs to identify queries executed on behalf of users who did not initiate them.

Monitoring Recommendations

  • Alert on any Slack account re-linking event for accounts that already have an active Slack association.
  • Monitor outbound Outline search responses delivered to Slack team_id values not previously seen for that user.
  • Track HTTP referers and request origins for the /auth/slack.post endpoint to identify cross-origin completion attempts.

How to Mitigate CVE-2026-44695

Immediate Actions Required

  • Upgrade Outline to version 1.7.1 or later, which enforces signed, session-bound OAuth state validation on the Slack callback.
  • Audit existing Slack integrations on Outline accounts and unlink any associations that cannot be confirmed by the account owner.
  • Rotate the Slack OAuth client secret if linkage tampering is suspected, to invalidate outstanding attacker-held code values.

Patch Information

The fix is published in Outline 1.7.1. The patch validates the OAuth state parameter as a signed, session-bound token and rejects callbacks whose state does not match the originating session. Refer to the Outline GitHub Security Advisory GHSA-mjgw-5j7q-gv8v for upgrade guidance.

Workarounds

  • Disable the Slack integration in Outline until the instance is upgraded to 1.7.1.
  • Restrict the Outline Slack OAuth application to a single approved Slack workspace to limit which team_id values can complete the flow.
  • Enforce SameSite=Lax or SameSite=Strict on Outline session cookies at the reverse proxy to reduce cross-site CSRF delivery paths.
bash
# Configuration example: verify Outline version and disable Slack integration
docker inspect outline --format '{{.Config.Image}}'

# In Outline admin settings, navigate to Settings > Integrations > Slack
# and click 'Disconnect' until upgrade to 1.7.1 is complete.

# Upgrade example for Docker deployments
docker pull outlinewiki/outline:0.83.0  # or any release >= 1.7.1
docker compose down && docker compose up -d

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.