Capgo - Rate Limit Bypass via User-Controlled device_id Parameter
Description
Capgo before 12.128.2 contains a rate limit bypass vulnerability in the channel_self endpoint that allows attackers to circumvent rate limiting by rotating the user-controlled device_id parameter. Attackers can send multiple requests per second by changing device_id values to flood the channel_devices table and cause database exhaustion.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
1Patches
Vulnerability mechanics
Root cause
"Rate limiting relied on the user-controlled device_id field as the rate-limit key, allowing attackers to bypass the limit by rotating device_id values."
Attack vector
An attacker sends multiple POST requests to the `channel_self` endpoint while rotating the `device_id` parameter in each request [ref_id=1]. Since the rate limit key is the attacker-controlled `device_id`, each new value resets the rate-limit counter, allowing many requests per second. Each successful request triggers a database write via `upsertChannelDevicePg`, flooding the `channel_devices` table with junk records and potentially causing database exhaustion [ref_id=1].
Affected code
The vulnerability resides in `supabase/functions/_backend/plugins/channel_self.ts`, where rate limiting logic used the user-controlled `device_id` as the rate-limit key. Because `device_id` is supplied directly by the client and not authenticated, an attacker can rotate this value to bypass the intended rate limit.
What the fix does
The advisory states that the Capgo team patched the issue to prevent bypass of the rate limit [ref_id=1]. The patch does not show the exact code change, but the fix presumably binds the rate-limit key to a server-authenticated identifier (such as a session token or API key) instead of the client-supplied `device_id`, ensuring that rotating the parameter does not reset the rate-limit counter.
Preconditions
- networkAttacker must be able to send HTTP POST requests to the channel_self endpoint
- inputAttacker must be able to supply arbitrary values for the device_id parameter
Generated on Jun 23, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2- github.com/Cap-go/capgo/security/advisories/GHSA-77p2-9rcr-5w27mitrevendor-advisory
- www.vulncheck.com/advisories/capgo-rate-limit-bypass-via-user-controlled-device-id-parametermitrethird-party-advisory
News mentions
0No linked articles in our index yet.