Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft request with spoofed first XFF IP
-
DeliverySend to rate-limited Lemmy API endpoint
-
Exploitnginx appends real IP but passes spoofed first value
-
Executionactix-web reads spoofed IP as client identity
-
PersistRate limiter allocates fresh bucket
-
ImpactRepeat with new spoofed IP to execute spam, brute-force, or scraping at scale
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Interaction frequency control
|
| Exploitation Conditions | Exploitation requires that the target Lemmy instance is deployed using the bundled docker/nginx.conf or docker/federation/nginx.conf with the unpatched $proxy_add_x_forwarded_for directive - this is the default Docker deployment shipped with Lemmy. No authentication is required; the CVSS vector PR:N confirms unauthenticated exploitation. Affected endpoints are POST /api/v4/account/auth/register, POST /api/v4/account/auth/login, POST /api/v4/post, POST /api/v4/comment, GET /api/v4/search, POST /api/v4/image, and POST /api/v4/account/import_settings. Exploitation is limited to instances using the bundled nginx as the outermost proxy; deployments that place a trusted upstream proxy (CDN, load balancer) that strips or overwrites XFF headers before reaching nginx would not be directly exploitable via this vector. There is no required user interaction and no platform-specific constraint beyond the nginx configuration. |
| Impact | The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L (6.5 Medium) accurately reflects the attack surface: fully remote, no authentication, trivially low complexity. Real-world risk is meaningfully higher than the score alone suggests for the subset of operators using Lemmy's bundled Docker configuration, because all rate-limited API endpoints - registration, login, posting, commenting, search, image upload, and settings import - become simultaneously unprotected. A single attacker script can cycle through spoofed IPs and effectively eliminate all per-IP throttling. The EPSS score is not provided in the input data; given no KEV listing and no public POC, exploitation probability at the population level is likely low, but the attack is so mechanically simple that any motivated actor can replicate it without tooling. The integrity and availability impacts are understated by CVSS S:U: while scope does not change, a successful bypass can cause account-farm creation, spam flooding, and search-scraping that degrade service quality for legitimate users well beyond 'Low' practical impact. No signals conflict with each other; KEV status is absent and no POC is confirmed. |
| Exploit ScenarioDerived | An attacker targeting a Lemmy instance running the default Docker deployment sends POST /api/v4/account/auth/register requests in a loop, each carrying a distinct spoofed first value in the X-Forwarded-For header (e.g., incrementing through 1.0.0.1, 1.0.0.2, …). Nginx appends the real IP but the rate limiter keys on the injected value, granting a fresh bucket for every request. This allows automated mass account creation or credential stuffing against the login endpoint at rates that bypass all configured throttles. No public POC is confirmed, but the technique requires only standard HTTP tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Rate limit bypass in Lemmy prior to 0.19.19 and 1.0.0-beta.1 allows unauthenticated remote attackers to circumvent all IP-based throttling by injecting a spoofed address as the first value of the X-Forwarded-For header. Because the bundled docker/nginx.conf forwards XFF headers using $proxy_add_x_forwarded_for rather than $remote_addr, attackers control the address that actix-web's ConnectionInfo::realip_remote_addr reads, receiving a fresh rate-limit bucket per request. No public exploit or CISA KEV listing exists, but exploitation is trivially automated and directly enables account registration spam, credential brute-forcing, comment spam, content scraping, bulk uploads, and repeated settings imports.
RemediationAI
Upgrade to Lemmy 0.19.19 (stable) or 1.0.0-beta.1 (beta), which replace the nginx XFF directive with 'proxy_set_header X-Forwarded-For $remote_addr' in both docker/nginx.conf and docker/federation/nginx.conf, as confirmed in commits 41513c89 and 8b5b2aa7 and PRs #6574 and #6575. This change causes nginx to forward only the verified socket-layer IP rather than the client-controlled header. For operators who cannot immediately upgrade, the same fix can be applied manually to the nginx configuration by replacing every 'proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for' directive with 'proxy_set_header X-Forwarded-For $remote_addr' - this drops legitimate IP chaining from upstream trusted proxies, which is an acceptable trade-off for most self-hosted single-proxy deployments. Operators running behind a trusted upstream CDN or load balancer should instead configure a fixed trusted-proxy allowlist before applying this change. Release pages are at https://github.com/LemmyNet/lemmy/releases/tag/0.19.19 and https://github.com/LemmyNet/lemmy/releases/tag/1.0.0-beta.1.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Lemmy is a Rust-based federated link aggregator built on actix-web. Its rate limiting in crates/utils/src/rate_limit/mod.rs derives per-client buckets from raw_ip_key, which calls actix-web's ConnectionInfo::realip_remote_addr. That function reads the leftmost value of the X-Forwarded-For header as the trusted client IP - a design valid only when a trusted reverse proxy strips or overwrites client-supplied XFF values before forwarding. The bundled docker/nginx.conf and docker/federation/nginx.conf used the nginx variable $proxy_add_x_forwarded_for, which appends the real connecting IP to whatever XFF header the client already sent, rather than replacing it. This means a client supplying 'X-Forwarded-For: 1.2.3.4' causes nginx to forward 'X-Forwarded-For: 1.2.3.4, <real_ip>' - and actix-web trusts '1.2.3.4' as the client address. CWE-799 (Improper Control of Interaction Frequency) captures the root cause: the rate-limiting control plane fails to authenticate the identity it is throttling. Affected CPE: cpe:2.3:a:lemmynet:lemmy:*:*:*:*:*:*:*:* for all versions prior to 0.19.19 and 1.0.0-beta.1.
Know when Lemmy 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
Network-reachable with no authentication or complexity; no confidentiality impact; integrity and availability both Low from spam and resource abuse.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Lemmy is a link aggregator and forum for the fediverse. Prior to 0.19.19 and 1.0.0-beta.1, actix-web ConnectionInfo::realip_remote_addr reads the first value of X-Forwarded-For as the client address used by raw_ip_key in crates/utils/src/rate_limit/mod.rs. Lemmy's bundled docker/nginx.conf uses $proxy_add_x_forwarded_for instead of $remote_addr, which appends the real client address to an X-Forwarded-For value supplied by the client. An unauthenticated attacker can therefore place a different spoofed address first on each request and receive a new rate-limit bucket, bypassing limits on POST /api/v4/account/auth/register, POST /api/v4/account/auth/login, POST /api/v4/post, POST /api/v4/comment, GET /api/v4/search, POST /api/v4/image, and POST /api/v4/account/import_settings. This permits excessive account creation, brute-force attempts, spam, scraping, uploads, and repeated imports. This issue is fixed in versions 0.19.19 and 1.0.0-beta.1.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Username enumeration in Lemmy's login endpoint allows unauthenticated remote attackers to confirm whether a given userna
Missing moderator rank authorization in Lemmy's ActivityPub federation layer allows a lower-ranked remote moderator to f
Server-side request forgery (SSRF) in Lemmy prior to version 0.19.18 allows authenticated low-privileged users to bypass
Lemmy is a link aggregator and forum for the fediverse. Rated medium severity (CVSS 6.5), this vulnerability is remotely
Stored cross-site scripting in lemmy-ui prior to 0.19.19-beta.1 allows session hijacking and unauthorized authenticated
Server-side request forgery (SSRF) in Lemmy prior to version 0.19.18 allows authenticated low-privileged users to trigge
Private message block enforcement in Lemmy is bypassed by the edit path, allowing a blocked sender to keep modifying old
EUVD-2026-62850
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB