Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain account with app.build_native permission
-
DeliveryCreate native build request (pending, 1h expiry)
-
ExploitWait past upload_expires_at or upload phase
-
ExecutionReplay POST/PATCH/HEAD to /build/upload/:jobId
-
PersistProxy forwards without expiry check
-
ImpactWrite to stale build upload session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Requires an authenticated caller holding the app.build_native permission for the target app in Capgo.app (self-hosted or hosted OTA update platform for Capacitor). The attacker must first have a native build request created (which stores a 'pending' status and a one-hour upload_expires_at in build_requests), then send TUS proxy traffic (POST/PATCH/HEAD) to /build/upload/:jobId after that expiry has passed or after the build has moved beyond the upload phase. Exploitation is limited by: (1) the authentication and app.build_native permission requirement (PR:L, not anonymous), (2) the fact that the proxy only loads app_id, owner_org, builder_job_id, and upload_path and checks only the permission - so no additional exploit is needed once authenticated - and (3) the downstream builder service, which may independently reject the stale/out-of-phase request and thereby neutralize the flaw entirely. |
| Impact | This is a genuinely low-to-moderate real-world risk, and the signals are internally consistent rather than conflicting. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L) scores 5.3 (medium) and maps to CWE-613 (Insufficient Session Expiration): a network-reachable but authenticated flaw (PR:L) with no user interaction, no confidentiality impact, and only low integrity/availability impact. No EPSS score, no CISA KEV listing, and no public exploit code are present in the provided data - so exploitation status is 'no public exploit identified at time of analysis.' The impact ceiling is low because the flaw only lets a caller who ALREADY holds app.build_native permission keep writing to their own build upload session past the 1-hour expiry or beyond the upload phase; there is no privilege escalation, no cross-tenant access implied, and the description explicitly notes the separate builder service may independently reject the stale request, further blunting impact. The one metadata conflict worth flagging: the 'Information Disclosure' tag contradicts the CVSS vector, which sets VC:N (no confidentiality impact) - this is fundamentally a stale-session/authorization-window bug affecting integrity/availability, not disclosure. Bottom line: not a patch-tonight priority, but a legitimate defense-in-depth fix. |
| Exploit ScenarioDerived | An authenticated user (or compromised API credential) holding app.build_native permission for an app creates a native build request, then continues sending POST/PATCH/HEAD TUS upload traffic to /build/upload/:jobId after the stored 1-hour upload_expires_at has elapsed or after the build has advanced past the upload phase, because the proxy only checks the permission and never re-validates expiry or build lifecycle state. No public exploit code is identified. Given AV:N/AC:L/PR:L/UI:N, the action is straightforward to script but requires valid authenticated access and depends on the downstream builder not rejecting the stale write. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
Authenticated users who hold the app.build_native permission for a given app in Capgo.app before 12.264.5 can keep writing to a native build upload session after its stored one-hour upload_expires_at has passed or after the build has moved beyond the upload phase, because the TUS proxy at /build/upload/:jobId enforces only the build_native permission and never checks upload expiry or build lifecycle state. The proxy loads just app_id, owner_org, builder_job_id and upload_path and then forwards POST, PATCH and HEAD requests to the internal builder, so stale or out-of-phase sessions remain writable. The weakness maps to CWE-613 (Insufficient Session Expiration) with low integrity and availability impact (CVSS v3.1 5.3, AV:N/AC:L/PR:L/UI:N), there is no public exploit identified at time of analysis, and the flaw can be neutralized entirely if the separate downstream builder service rejects the stale request on its own.
RemediationAI
Vendor-released patch: upgrade Capgo.app to 12.264.5 or later, which restores enforcement of upload_expires_at and build lifecycle state in the /build/upload/:jobId proxy; the fix is confirmed in the vendor advisory at https://github.com/Cap-go/capgo.app/security/advisories/GHSA-mqr8-g67p-jm26, with additional detail at https://www.vulncheck.com/advisories/capgo-app-before-12.264.5-upload-expiry-bypass-via-build-upload. If immediate upgrade is not possible, the most effective compensating control is to place a reverse-proxy or API-gateway rule in front of /build/upload/:jobId that rejects POST, PATCH and HEAD requests whose originating build request is older than one hour or whose build status is no longer 'pending' specifically the upload phase, noting the trade-off that legitimate slow uploads near the one-hour boundary may be cut off; alternatively, restrict the app.build_native permission to a minimal set of trusted accounts and audit the build_requests table for writes to jobs past upload_expires_at or in terminal states, accepting that this is detective rather than preventive and relies on continuous log review. Because the proxy only forwards to the internal builder, hardening or explicitly validating expiry and job state on the builder service itself is a durable second layer that also protects other callers, though it requires changes to a component outside the Capgo.app codebase and must be coordinated so legitimate in-window uploads are unaffected.
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
Capgo is an over-the-air (OTA) update platform for Capacitor-based mobile apps, deployable as a hosted service or self-hosted, and it exposes a TUS (resumable upload) proxy endpoint, /build/upload/:jobId, that brokers client upload traffic to an internal native build service. When a native build request is created, the application records a one-hour upload_expires_at timestamp and a 'pending' status in its build_requests table, but the upload proxy handler retrieves only app_id, owner_org, builder_job_id and upload_path from that record and validates solely the app.build_native permission before proxying POST, PATCH and HEAD requests onward. No comparison against upload_expires_at and no verification of the current build state is performed, which is the classic CWE-613 insufficient session expiration pattern: a session or upload artifact remains usable past its intended lifetime because the authorization layer checks identity/permission but not temporal or state validity. The CPE cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* and the EUVD range (capgo.app 0 <12.264.5) both confirm that all releases before 12.264.5 are in scope; note that some third-party tagging labels this as information disclosure, whereas the described mechanism and the assessed vector point to low integrity and availability impact rather than confidentiality loss.
Know when Cap Go 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:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
Network TUS endpoint (AV:N/AC:L) but requires authenticated app.build_native permission (PR:L); no confidentiality (C:N), only low integrity/availability from writing to a stale upload session.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Capgo.app before 12.264.5 does not enforce upload expiry or build lifecycle state in the /build/upload/:jobId TUS proxy endpoint. When a native build request is created, an upload_expires_at timestamp (one hour) and a 'pending' status are stored in build_requests, but the upload proxy loads only app_id, owner_org, builder_job_id, and upload_path and checks only the app.build_native permission before forwarding POST, PATCH, and HEAD requests to the internal builder. As a result, an authenticated caller holding app.build_native permission for the app can continue writing to the build upload session after the stored expiry has passed or after the build has moved beyond the upload phase, unless the separate builder service independently rejects the request. The issue is fixed in 12.264.5.
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
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Improper access control in Capgo (capgo.app) lets any holder of an ordinary full API key forge a trusted SSO provider by
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
Authorization bypass in Capgo (capgo.app), a live-update/OTA platform for Capacitor mobile apps, allows a de-provisioned
Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing
Unauthenticated denial of service in Cap-go capgo (capgo-backend) before 12.128.12 allows remote attackers to exhaust Po
Unauthenticated retrieval of deleted over-the-air update bundles from capgo.app through version 12.129.0 is possible via
Capgo's direct exposure of the public.org_users table through Supabase PostgREST lets an authenticated user who already
Authenticated principals who hold an app-scoped upload/write/all API key with upload+ rights - or any user granted write
Cross-tenant metadata modification in Capgo before 12.244.1 allows an authenticated attacker to alter image object metad
Privilege escalation in the Capgo (capgo.app) backend through version 12.242.4 allows an authenticated API key holder to
Privilege escalation in Capgo (capgo.app) before 12.267.1 allows a principal holding the apikey_manager role to rotate a
EUVD-2026-87719
GHSA-r6v6-qvq3-q232
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB