Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach auth endpoint unauthenticated
-
DeliveryRotate X-Forwarded-For per request
-
ExploitObtain fresh rate-limit bucket each time
-
ExecutionBrute-force OTP or spray passwords
-
ImpactAccount takeover or email flooding
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V6 - Authentication IP-independent access control
|
| Exploitation Conditions | No special conditions for the bypass itself - remote, unauthenticated exploitation works against default PipesHub deployments (<=0.9.1), because the code trusts the client-supplied X-Forwarded-For/X-Real-IP header verbatim and there is no 'trust proxy' configuration; the affected auth and unauthenticated OAuth endpoints (/authenticate, /login/otp/generate, /password/forgot, /oauth2/token, /oauth2/introspect, /oauth2/revoke) have no dedicated limiter beyond the bypassable global one. The limiting factor is impact scope: the bypass alone only removes throttling - turning it into account takeover additionally requires guessing a valid password or OTP (aided by the six-digit OTP space and reported lack of account lockout), and the email-bombing impact depends on the password-reset endpoint accepting arbitrary addresses. Deployments that already sit behind a properly configured trusted reverse proxy (and, post-fix, set TRUST_PROXY to a specific hop count or CIDR rather than 'true') are not exposed in the same way. |
| Impact | This is a genuine but moderate-priority issue, not a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms the bypass is reachable remotely, without authentication, without user interaction, and with low attack complexity - so the control is trivially defeated. However, the impact metrics are deliberately narrow (VC:N/VI:L/VA:N): the flaw itself discloses nothing and does not directly compromise the system; it removes the brake that makes credential/OTP brute force and email flooding impractical. Real severity therefore depends on chaining: on its own it is a weakened-control (CWE-348/CWE-307) issue scored 6.9, but combined with a successful password spray or OTP guess (six-digit space, no account lockout per the report) it becomes a practical account-takeover path. No EPSS score and no CISA KEV listing were provided, and the vendor/VulnCheck make no active-exploitation claim, so there is no signal of widespread opportunistic exploitation. The vuln.today priority is 'this_month' (not act_now/emergency), consistent with a patch-promptly-but-not-drop-everything posture. One nuance to verify: the vector is AV:N/PR:N because the bypass is unauthenticated, but the headline consequence (account takeover) is only realized when the attacker also guesses a valid credential or OTP, which the base vector does not capture. |
| Exploit ScenarioDerived | An unauthenticated attacker targets the exposed PipesHub authentication endpoints (e.g. /api/v1/userAccount/authenticate, /login/otp/generate, /password/forgot) and sends each request with a different spoofed X-Forwarded-For (or X-Real-IP) header, so the per-IP limiter assigns a fresh bucket every time and never throttles. They then run an unlimited password-spray or OTP brute-force campaign, or flood arbitrary addresses with password-reset emails from the product's own mail infrastructure. The GHSA/VulnCheck advisory includes an executed curl/Burp reproduction with observed results (60 requests throttled with a fixed header; 0 of 90 throttled with the header rotated). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Rate limiting in PipesHub 0.1.0 through 0.9.1 can be evaded entirely by any unauthenticated remote client, because the limiter derives its bucket key from the client-supplied X-Forwarded-For or X-Real-IP header rather than the real socket address. Rotating that header on each request yields a fresh counter every time, so the global limiter that is the only protection on /authenticate, /login/otp/generate and /password/forgot never engages, enabling password spraying, OTP guessing and password-reset email flooding against arbitrary addresses. The bypass itself only removes throttling, with integrity-only impact (CVSS 3.1 C:N/I:L/A:N); conversion into account takeover still depends on guessing a valid password or six-digit OTP, and email-bombing impact depends on the reset endpoint accepting arbitrary addresses. Fixed in 0.10.0; the vendor advisory includes an executed proof of concept showing 0 of 90 header-rotating requests throttled, and no confirmed active exploitation (CISA KEV) has been reported.
RemediationAI
Vendor-released patch: upgrade to PipesHub 0.10.0 or later (fixed in 0.10.0; commit 84614464bb120e9f8e8c85420001260e709d99bb), which keys rate limits on the connection address via req.ip, stops trusting X-Forwarded-For by default, folds IPv6 addresses into a single key, and adds a dedicated authentication limiter controlled by MAX_AUTH_REQUESTS_PER_MINUTE (default 10) on the login, OTP and password endpoints. After upgrading, set TRUST_PROXY explicitly to the number of trusted proxy hops (1 for a single nginx, Caddy or Traefik instance) or to a list of proxy addresses/CIDRs, and leave it unset when clients connect to the port directly; the new parseTrustProxy helper rejects TRUST_PROXY=true as unsafe and falls back to trusting no proxy. Until the upgrade can be applied, the practical compensating control is to strip and re-set X-Forwarded-For and X-Real-IP at the edge so clients cannot inject them, and to enforce per-IP and per-account throttling on /authenticate, /login/otp/* and /password/forgot at the reverse proxy or WAF - noting that this only works if clients cannot reach the application port directly, and that any proxy which simply forwards the client header preserves the bypass. Because the counter store is in-process, deployments running multiple replicas should also front the auth endpoints with a shared counter (Redis or edge rate limiting), since each replica otherwise admits its own full quota; full guidance is in the advisory at https://github.com/pipeshub-ai/pipeshub-ai/security/advisories/GHSA-78gw-g2h7-xvjj.
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
PipesHub's Node.js backend uses express-rate-limit with a custom keyGenerator in libs/middlewares/rate-limit.middleware.ts. The helper getClientIp() parsed the first entry of the X-Forwarded-For header, then X-Real-IP, and only fell back to req.ip / req.socket.remoteAddress when both were absent; no Express 'trust proxy' setting existed anywhere in the codebase, so those headers were never validated or rewritten by a trusted hop. This is CWE-348 (use of less trusted source) manifesting as CWE-307 (improper restriction of excessive authentication attempts): an unauthenticated request reaches the ip:${...} branch of the key generator, which is the only branch reachable on authentication endpoints since the user- and org-keyed branches require middleware that runs later. The identical defect exists in createKeyedRateLimiter, which backs the unauthenticated OAuth surfaces (/oauth2/token, /oauth2/revoke, /oauth2/introspect) and the skills-import limiter. Two secondary weaknesses compound it: counters live in an in-process store, so N replicas admit roughly N times the configured maximum, and the login, OTP and forgot-password routes install no route-level limiter of their own, relying entirely on the bypassable global middleware. The 0.10.0 fix rejects getClientIp header parsing in favour of req.ip under an explicit trust-proxy setting, folds IPv6 clients into a single key via ipKeyGenerator so address rotation cannot reset the bucket, and adds a dedicated createAuthRateLimiter for authentication routes. Affected CPE: cpe:2.3:a:pipeshub-ai:pipeshub-ai:*:*:*:*:*:*:*:*.
Know when Pipeshub Ai 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:N/VI:L/VA:N/SC:N/SI:N/SA:N
Remote, unauthenticated, no interaction (AV:N/AC:L/PR:N/UI:N); the bypass discloses nothing (C:N) and weakens an integrity-relevant security control (I:L) without directly impacting availability of the system (A:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
PipesHub before 0.10.0 contains a rate limit bypass vulnerability in getClientIp() that allows unauthenticated attackers to evade per-IP throttling by spoofing X-Forwarded-For or X-Real-IP headers. Attackers can rotate header values to obtain fresh rate-limit buckets on authentication endpoints, enabling password spraying and OTP or password-reset email flooding.
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.
More in Pipeshub Ai
View allPipesHub 0.3.0 through 0.9.1 allows an authenticated user holding only the crawl:write OAuth scope to permanently destro
Server-side request forgery in PipesHub's document indexing pipeline lets anyone who can place content in front of the i
EUVD-2026-114116
GHSA-v4v4-55gm-p3cp
NVD
CVE.org
EPSS
Exploit-DB