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·3 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

•43 minutes ago•CVE-2026-73841
8.8

CVE-2026-73841: Broken Object Level Authorization (BOLA) in OpenChoreo Container Exec and Wirelogs Endpoints

An Insecure Direct Object Reference (IDOR) / Broken Object Level Authorization (BOLA) vulnerability in OpenChoreo allows authenticated users with project-level permissions to bypass tenant boundaries. By manipulating client-controlled query parameters, an attacker can execute arbitrary commands inside Kubernetes containers or view sensitive communication streams of resources belonging to other, highly privileged projects within the same namespace.

Alon Barad
Alon Barad
1 views•7 min read
•about 3 hours ago•CVE-2026-73667
8.8

CVE-2026-73667: Remote Code Execution via OS Command Injection in OpenChoreo Workflow Plane

An authenticated remote code execution vulnerability exists in the OpenChoreo developer platform's Workflow Plane templates. The flaw occurs due to server-side string interpolation of workflow parameters into inline shell scripts and insecure shell parameter expansion. This allows low-privileged attackers to execute arbitrary shell commands inside privileged containers, leading to potential host privilege escalation.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 4 hours ago•CVE-2026-84366
7.4

CVE-2026-84366: Plaintext AWS Credential Exposure in Scrapy S3DownloadHandler

A security vulnerability in Scrapy's Amazon S3 download handler allows unencrypted transmission of sensitive AWS credentials and session tokens over plaintext HTTP. Prior to version 2.17.0, the handler defaulted to HTTP instead of HTTPS when translating s3:// URIs into standard S3 API requests, unless explicitly configured otherwise. This allows network eavesdroppers to intercept credentials and perform active Man-in-the-Middle (MITM) attacks.

Amit Schendel
Amit Schendel
4 views•5 min read
•about 5 hours ago•CVE-2026-62674
9.0

CVE-2026-62674: Shared Agent Bundle Overwrite Leads to Authenticated Runner Remote Code Execution in omnigent

A critical validation flaw in the backend of the omnigent framework prior to version 0.3.0 allows authenticated users to overwrite the global shared agent bundle, leading to remote code execution on the runner process through malicious stdio MCP server configurations.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 6 hours ago•CVE-2026-63311
6.9

CVE-2026-63311: Server-Side Request Forgery and DNS Rebinding in Natural Language Toolkit (NLTK)

A vulnerability in the Natural Language Toolkit (NLTK) before version 3.10.0 allowed attackers to bypass SSRF filters via DNS resolution failures and DNS rebinding. By exploiting these weaknesses, unauthenticated remote attackers could coerce hosting systems into scanning internal networks or accessing sensitive cloud metadata endpoints.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 7 hours ago•CVE-2026-62388
7.5

CVE-2026-62388: Insecure Default Security Enforcement in Natural Language Toolkit (NLTK) Path Security Module

CVE-2026-62388 represents a critical design flaw in the Natural Language Toolkit (NLTK) before version 3.10.0. The central security module (`nltk/pathsec.py`) initialized its validation enforcement flag to false by default. This fail-open configuration rendered security controls—such as path traversal checks, zip archive audits, and SSRF validations—non-blocking, only emitting warnings while permitting arbitrary file operations and code execution.

Amit Schendel
Amit Schendel
4 views•6 min read