MEDIUM 6.3

CVE-2026-56295: Capgo API Key Policy Bypass in Webhook Management

Capgo versions before 12.128.2 have a security gap in how they enforce API key policies. Organizations can set a rule requiring all API keys to expire, but the webhook management feature doesn't check this rule properly. This means someone with an old API key that never expires can still manage webhooks—listing, creating, and deleting them—even though the organization's policy forbids non-expiring keys. The vulnerability requires authenticated access, so it affects users or systems within your organization rather than external attackers, but it does undermine a specific security control you may have put in place.

Source data · NVD / CISA · public domain

CVSS
3.1 · 6.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Weaknesses (CWE)
CWE-285
Affected products
0 configuration(s)
Published / Modified
2026-06-20 / 2026-06-22

NVD description (verbatim)

Capgo before 12.128.2 contains an authorization bypass vulnerability in webhook management endpoints that allows non-expiring API keys to bypass the require_apikey_expiration organization policy. The checkWebhookPermission function fails to call apikeyHasOrgRightWithPolicy, enabling attackers with legacy non-expiring keys to list, create, and delete webhooks despite explicit organizational policy requiring key expiration.

3 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in Capgo's webhook management endpoints, specifically in the checkWebhookPermission authorization function. This function validates whether a user has permission to perform webhook operations but fails to invoke apikeyHasOrgRightWithPolicy during its permission checks. As a result, API keys lacking an expiration date bypass the organization's require_apikey_expiration policy, allowing holders of legacy non-expiring keys to perform webhook operations that should be restricted. The authorization bypass is a logic flaw rather than a cryptographic weakness; it's a missing validation step in the permission-checking chain. The affected operations include listing webhooks, creating new webhooks, and deleting existing webhooks.

Business impact

For organizations that have adopted a non-expiring API key ban as part of their security posture, this vulnerability creates a compliance gap. Users or services holding grandfather API keys can circumvent the intended control, leaving persistent credentials in circulation that your policy was designed to eliminate. Webhooks often serve as bridge points between your application and external systems or internal automation; unauthorized creation or deletion could lead to silent failures in integrations, missed alerts, or unexpected data flows. An insider or compromised account with legacy credentials could delete critical webhooks, disrupting operational workflows. The impact is primarily on enforcement of your own security governance rather than direct data exposure, though unauthorized webhook manipulation could indirectly affect data flow integrity.

Affected systems

Capgo installations running version 12.128.1 and earlier are vulnerable. The issue affects any organization that has enabled or relied on the require_apikey_expiration policy to control API key lifecycle. Any API key in your environment that lacks an expiration date can exploit this vulnerability; systems or users authenticating with such keys can perform unrestricted webhook operations regardless of policy. Verify your installed Capgo version and review whether you have organization-level API key expiration policies in place to determine exposure.

Exploitability

Exploitation requires authenticated access—an attacker must already possess a valid, non-expiring API key or credentials to an account that holds such a key. The attack surface is internal or supply-chain focused rather than unauthenticated internet-facing. Once an attacker has a legacy API key, the vulnerability is trivial to exploit: standard webhook API calls will succeed despite organizational policy. There is no complexity barrier; the missing policy check means no additional tricks or race conditions are needed. The CVSS score of 6.3 reflects the authentication requirement and limited scope (user-level impact), but the ease of exploitation and the direct policy bypass increase practical risk within organizations that trust their credential hygiene.

Remediation

Upgrade Capgo to version 12.128.2 or later to receive the corrected authorization logic. Before upgrading, audit your organization's API keys and identify any non-expiring keys still in use. If feasible, rotate non-expiring keys to new expiring credentials and retire the old ones. After patching, test that webhook endpoints correctly reject operations from non-expiring API keys when the require_apikey_expiration policy is active. Review audit logs for any unauthorized webhook creation, deletion, or listing operations that may have occurred while the vulnerability was present.

Patch guidance

Apply Capgo version 12.128.2 or later. This version restores the apikeyHasOrgRightWithPolicy validation step in the checkWebhookPermission function, ensuring that organization-level API key policies are enforced at the webhook endpoint layer. Test in a staging environment first to confirm that webhook operations respect your configured policies and that no legitimate automation is disrupted. Verify that existing non-expiring API keys are indeed blocked from webhook operations post-patch, and prioritize rotation of any legacy non-expiring credentials in your environment.

Detection guidance

Monitor Capgo webhook API logs for requests authenticated with API keys that lack an expiration date. Look for anomalous patterns: creation of new webhooks, bulk deletion of webhooks, or listing of webhooks by service accounts or users who should not have that access. If you have recently enforced the require_apikey_expiration policy, check for webhook operations by keys that predate that enforcement, as they may represent exploitation. Compare the list of active non-expiring API keys against your organization's intended credential inventory; any unexpected key should be investigated and revoked.

Why prioritize this

This vulnerability merits medium priority in most environments. While it requires authentication and the real-world impact depends on whether you have actually deployed a non-expiring API key ban, it directly undermines a reasonable security control. If your organization has set an explicit policy forbidding non-expiring keys, this vulnerability means that policy is ineffective for a critical integration surface (webhooks). Prioritize patching if you have adopted API key expiration policies, active non-expiring legacy keys in production, or rely on webhooks for critical integrations. In environments without such policies or with limited webhook usage, patching is still important but can follow routine maintenance windows.

Risk score, explained

The CVSS 6.3 (Medium) score reflects: authenticated access required (PR:L), reducing attack surface to insiders or compromised accounts; network-accessible endpoint (AV:N) and low attack complexity (AC:L); and limited scope (S:U) with integrity and availability impact (I:L, A:L) through unauthorized webhook manipulation, plus minor confidentiality loss if webhook details are exposed. The score does not account for the organizational context (whether you have actually deployed the policy being bypassed) or the operational criticality of webhooks in your environment; adjust your internal risk assessment accordingly.

Frequently asked questions

Do I need to rotate all my API keys after patching?

Not necessarily all at once, but yes, you should prioritize rotating any non-expiring API keys. After patching, those keys will no longer bypass the require_apikey_expiration policy—they will be blocked from webhook operations if your policy is active. Plan a rotation schedule for legacy credentials to align with your broader credential hygiene program.

What if I don't enforce the require_apikey_expiration policy?

If your organization has never enabled this policy, the vulnerability has no practical impact on your security posture because there is no policy to bypass. However, we recommend evaluating whether a non-expiring key ban is appropriate for your threat model and enabling the policy as part of credential governance best practices.

Can external attackers exploit this vulnerability?

No. The vulnerability requires authentication with a valid API key or account credentials. It does not enable unauthenticated access. The risk is from insiders, compromised employee accounts, or supply-chain threats holding legacy API keys.

How can I tell if someone exploited this before I patched?

Review Capgo's audit or webhook logs for webhook operations (list, create, delete) performed by non-expiring API keys, especially after you deployed your require_apikey_expiration policy. Cross-reference those operations with your authorized users and automated systems to identify anomalies.

This analysis is based on vulnerability data current as of the publication date. Patch version numbers and affected versions are derived from vendor advisories; verify applicability to your specific Capgo deployment. CVSS scores and severity ratings are standardized across the industry but should be contextualized to your organizational risk profile and operational environment. This information is provided for defensive security purposes only; no proof-of-concept or exploitation techniques are included. Always test patches in a non-production environment before deployment, and consult Capgo's official security advisories and release notes for the most up-to-date guidance. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).