CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-73840

CVE-2026-73840: Unauthenticated Webhook Signature Bypass and Git-Provider Confusion in OpenChoreo

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 3, 2026·5 min read·28 visits

Executive Summary (TL;DR)

An unauthenticated remote attacker can trigger arbitrary builds on target Kubernetes repositories by spoofing Bitbucket webhook headers and bypassing signature validation checks due to logical flaws in the OpenChoreo handler.

An authentication bypass and logical confusion vulnerability exists in the OpenChoreo Kubernetes developer platform webhook ingestion system. By exploiting a combination of git-provider spoofing, a missing signature validation requirement on Bitbucket webhooks, and a lack of source-host mapping checks, unauthenticated network attackers can trigger unauthorized builds on arbitrary repositories.

Vulnerability Overview

The Kubernetes-native developer platform OpenChoreo exposes a REST API endpoint /api/v1alpha1/autobuild designed to consume Git webhook requests. This endpoint automates target repository rebuilds when upstream developers perform code modifications.

To handle multi-tenant developer configurations, the ingestion handler detects whether incoming payloads originate from GitHub, GitLab, or Bitbucket. It resolves the specific git provider based on client-supplied headers and routes the payload to corresponding cryptographic signature checks.

Due to design flaws, the endpoint did not require a signature for Bitbucket requests, nor did it verify that the authenticated incoming webhook matched the target repository's host platform. These errors allow an attacker to spoof headers and initiate builds on unrelated, securely-configured GitHub repositories.

Root Cause Analysis

The root cause of this vulnerability lies in the logic of the webhook dispatcher and the failure to enforce consistent state. The vulnerability is characterized by three core architecture mistakes that must all align to allow exploitation.

First, the header analysis in internal/openchoreo-api/api/handlers/webhook_handler.go uses client-supplied headers to detect the provider. If the header X-Event-Key is present, the handler routes the execution flow into the Bitbucket integration path.

Second, the Bitbucket provider implementation in internal/openchoreo-api/services/git/bitbucket.go assumed Bitbucket did not use cryptographic signing. Consequently, if no webhook signature header was present, or if the bitbucket-secret was unconfigured, the implementation evaluated the check as successful and returned nil instead of failing closed.

Third, the webhook processor did not check if the webhook provider matched the repository's host provider. If an attacker configured a webhook with the X-Event-Key header but provided the repository URL of a GitHub target, the system routed the validation to the Bitbucket parser, bypassed the signature check, matched the URL, and triggered the GitHub build.

Code Analysis

In the vulnerable version of webhook_handler.go, Bitbucket webhooks did not request signature verification, leaving the signature header parameter blank:

case params.XEventKey != nil && *params.XEventKey != "":
    // The second parameter (signature header) is blank, skipping HMAC checks
    return git.ProviderBitbucket, "", "bitbucket-secret", true

In the patched implementation, the router enforces the presence of the X-Hub-Signature header for Bitbucket payload evaluation:

case params.XEventKey != nil && *params.XEventKey != "":
    // The signature header is now explicitly required
    return git.ProviderBitbucket, "X-Hub-Signature", "bitbucket-secret", true

To ensure consistent and constant-time signature validation, a new shared cryptographic module was introduced in services/git/signature.go:

package git
 
import (
  "crypto/hmac"
  "crypto/sha256"
  "encoding/hex"
  "fmt"
  "strings"
)
 
func verifyHMACSHA256(payload []byte, signature, secret string) error {
  if secret == "" {
    return fmt.Errorf("webhook secret not configured")
  }
  if signature == "" {
    return fmt.Errorf("missing signature header")
  }
  if !strings.HasPrefix(signature, "sha256=") {
    return fmt.Errorf("invalid signature format")
  }
  signature = strings.TrimPrefix(signature, "sha256=")
 
  mac := hmac.New(sha256.New, []byte(secret))
  mac.Write(payload)
  expectedMAC := hex.EncodeToString(mac.Sum(nil))
 
  if !hmac.Equal([]byte(signature), []byte(expectedMAC)) {
    return fmt.Errorf("invalid signature")
  }
  return nil
}

Additionally, the patch enforces provider consistency in webhook_processor.go by checking the domain of the target repository URL and rejecting mismatched webhook events:

if expected := providerFromRepoURL(repoURL); expected != "" && string(expected) != event.Provider {
  s.logger.Info("Skipping component: provider mismatch",
    "component", comp.Name,
    "expectedProvider", expected,
    "webhookProvider", event.Provider)
  continue
}

Exploitation Methodology

To exploit this vulnerability, an attacker must first identify the target Git repository URL and active branch mapped inside the OpenChoreo environment. No valid user credentials or authentication tokens are required.

The attacker crafts a custom JSON payload representing a standard repository push event. This payload contains the target's repository URL and target branch. The attacker then assigns an arbitrary commit SHA within this payload.

The attacker transmits the request to /api/v1alpha1/autobuild with the X-Event-Key: repo:push header. The system maps the event to the Bitbucket provider module. Because there is no signature configuration, the check returns success, and the system matches the URL and schedules the unauthorized build on the backend.

Impact Assessment

This vulnerability scored 5.3 on the CVSS v3.1 scale. The impact vector is categorized as CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L.

While this attack does not directly leak sensitive source code or application secrets, it allows unauthenticated entities to trigger resource-intensive pipelines on demand. Repeated execution can lead to severe resource exhaustion, denial-of-service on build runners, and increased container compute fees.

Because the platform triggers pipelines using the user-defined, arbitrary commit SHA, there is a risk that untrusted commit changes can be introduced into systems that do not perform strict verification, bypassing the platform workflow restrictions.

Remediation & Patch Verification

Remediation requires upgrading the OpenChoreo platform to the patched versions. The fixes are integrated into releases 1.0.3, 1.1.3, and 1.2.0-rc.2.

Applying this patch introduces a breaking change for existing Bitbucket integrations. Administrators must configure a secret token under the bitbucket-secret key inside the platform's git-webhook-secrets resource. Correspondingly, the Bitbucket repository's webhook configuration must be updated to output matching HMAC-SHA256 signatures.

If you are unable to patch immediately, block access to /api/v1alpha1/autobuild at the ingress or WAF layer for any IP ranges outside the official Git provider CIDR blocks.

Official Patches

OpenChoreoOfficial Security Advisory
OpenChoreoFix Commit in Repository

Fix Analysis (3)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

OpenChoreo Kubernetes platform deployments utilizing auto-build features

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenChoreo
OpenChoreo
< 1.0.31.0.3
OpenChoreo
OpenChoreo
>= 1.1.0, < 1.1.31.1.3
OpenChoreo
OpenChoreo
>= 1.2.0-rc.1, < 1.2.0-rc.21.2.0-rc.2
AttributeDetail
CWE IDCWE-287
Attack VectorNetwork
CVSS v3.1 Score5.3
EPSS Score0.00237
Impact RatingAvailability (Low)
Exploit StatusPoC in Tests
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1078Valid Accounts
Initial Access
CWE-287
Improper Authentication

The system permits unauthenticated webhook requests to invoke backend builds without validating cryptographic proof of identity.

Vulnerability Timeline

Patch implemented and commit f540553db7143141b73bb37fae02102e6f082a34 submitted
2026-07-21
Backport commits submitted for older release branches (v1.0 and v1.1)
2026-07-22
Vulnerability publicly disclosed and registered under CVE-2026-73840
2026-08-13
Patched versions (1.0.3, 1.1.3, 1.2.0-rc.2) officially released
2026-08-13

References & Sources

  • [1]NVD - CVE-2026-73840
  • [2]GitHub Security Advisory GHSA-c5f6-2rm9-2w8g

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 18 hours ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
7 views•6 min read
•about 19 hours ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 20 hours ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
4 views•7 min read
•about 21 hours ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
6 views•5 min read
•about 22 hours ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
5 views•6 min read
•about 23 hours ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
3 views•7 min read