
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-33640 is a rate limit bypass vulnerability in Outline, a collaborative documentation platform, that allows unauthenticated attackers to brute force Email OTP login codes and achieve full account takeover. The flaw affects Outline versions 0.86.0 through 1.5.x (prior to 1.6.0) and was disclosed on March 26, 2026, with the security advisory published by maintainer tommoor on March 23, 2026. It carries a CVSS v3.1 base score of 9.8 (Critical) and a CVSS v4.0 base score of 9.1 (Critical) (GitHub Advisory).
The root cause is classified as CWE-307 (Improper Restriction of Excessive Authentication Attempts). Outline's /auth/email.callback endpoint, which validates Email OTP codes, does not invalidate codes after a threshold of failed attempts, does not enforce account lockout, and relies solely on an opt-in rate limiter for protection. Two distinct rate limiter bypass techniques were identified: (1) JWT Forging — the rate limiter derives its key from the id claim of a JWT cookie, but the JWT is only decoded (not verified), allowing an attacker to forge JWTs with arbitrary UUIDs to continuously reset their rate limit window; (2) X-Forwarded-For Spoofing — on misconfigured deployments without a properly configured reverse proxy, the rate limiter falls back to IP-based limiting, which can be bypassed by supplying arbitrary values in the X-Forwarded-For header. OTP codes occupy a keyspace of 900,000 values (100000–999999) with a 10-minute lifetime, making brute force statistically viable (GitHub Advisory).
Successful exploitation enables complete account takeover of any Outline user who authenticates via Email OTP (i.e., users not associated with an Identity Provider). An attacker with knowledge of a target's email address can gain unauthorized access to that user's workspace, including all documents, collaborative content, and sensitive organizational knowledge stored within Outline. The confidentiality and integrity of all data accessible to the compromised account are at risk, and in multi-workspace cloud deployments, the attacker can exchange a transfer token for a full session token (GitHub Advisory).
A proof-of-concept exploit is publicly available in the GitHub Security Advisory, including a concrete ffuf-based brute force command targeting the /auth/email.callback endpoint. The advisory was assessed with high confidence as a real exploit by Feedly threat intelligence. There is no current evidence of in-the-wild exploitation, and the CVE is not listed in the CISA KEV catalog. The EPSS score is approximately 0.041% (0.000410), reflecting low but non-zero exploitation probability at time of publication (GitHub Advisory).
for i in {100000..999999}; do echo $i; done > pins.txt/auth/email with the victim's email address to cause Outline to generate and email an OTP code to the target, starting the 10-minute validity window.id (UUID) claim (no signature verification required) and rotate it with each batch of requests to reset the rate limit key.X-Forwarded-For header value with each request to bypass IP-based rate limiting./auth/email.callback using ffuf:ffuf -mode pitchfork -w ./pins.txt:PIN -X POST \
-u https://<target>/auth/email.callback \
-H "Content-Type: application/json" \
-d '{"email":"victim@user.com", "code":"PIN", "follow":"true"}' \
-mc 302 -v -fr "invalid-code"/auth/email.callback from a single IP or rotating IPs within a short time window; requests with varying or spoofed X-Forwarded-For header values targeting the same endpoint; requests with rotating JWT cookies containing different id (UUID) claim values./auth/email.callback with sequential or near-sequential OTP code values; a single successful 302 redirect response following a large number of 4xx responses for the same email./auth/email) followed immediately by a high volume of callback attempts.Upgrade Outline to version 1.6.0 or later, which adds a hard limit of 10 OTP submission attempts per code (PR #11623) and improves the rate limiter to use a combination of user ID and IP address (PR #11613) (Outline v1.6.0 Release). If immediate patching is not possible, ensure RATE_LIMITER_ENABLED=true is set in the .env configuration and that a properly configured reverse proxy is in place to prevent X-Forwarded-For spoofing. Additionally, consider restricting access to the Outline instance to trusted networks and monitoring for anomalous OTP submission patterns as a temporary defensive measure (GitHub Advisory).
The vulnerability was reported by security researcher themisp20 and disclosed responsibly through GitHub's security advisory process. The advisory was noted on Bluesky via the CVE tracking account shortly after publication. Coverage appeared on security aggregator sites including infinitsec.net, cvefeed.io, and VulDB. No major vendor statements beyond the Outline maintainer's advisory and patch release have been identified (GitHub Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."