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-11745

CVE-2026-11745: Host Key Verification Bypass in Central Dogma Git Mirror SSH Client

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 11, 2026·7 min read·2 visits

Executive Summary (TL;DR)

Central Dogma versions prior to 0.84.0 fail to verify SSH host keys during Git mirror processes. This vulnerability enables adjacent or on-path attackers to perform Man-in-the-Middle attacks, allowing them to exfiltrate configurations or introduce malicious commits.

An issue was identified in Central Dogma prior to version 0.84.0. The Git mirror SSH client does not verify remote host keys for git+ssh:// connections, which allows an on-path attacker to execute man-in-the-middle attacks and compromise mirrored repositories.

Vulnerability Overview

Central Dogma is an open-source, highly-available configuration repository based on Git, ZooKeeper, and HTTP/2. It serves as a centralized config management platform, pulling external application definitions via Git mirroring and distributing them to downstream microservices. Organizations rely on Central Dogma to securely store and dynamically sync sensitive parameters including access tokens, private database connection URIs, and API credentials.

The vulnerability is located within the centraldogma-server-mirror-git library, which handles synchronization with remote Git repositories over Git-over-SSH (git+ssh://). In affected versions, the custom Apache MINA SSHD SSH client implementation bypasses host key checks entirely. This exposes the outbound communication channel to intercept threats whenever Central Dogma triggers synchronization events.

The underlying security defect belongs to the Key Exchange without Entity Authentication class (CWE-322). Because Central Dogma trusts any server key presented during the SSH handshake, an on-path network attacker can successfully impersonate the target Git host. This architectural vulnerability compromises the transport layer security guarantee provided by SSH.

Root Cause Analysis

The root cause of this vulnerability lies in how the Git mirror SSH client initializes its session validation rules. During the cryptographic negotiation phase of the SSH connection, the remote server presents its public key. In standard SSH clients, this key is matched against a local registry of known and verified public keys, typically stored in the ~/.ssh/known_hosts file.

In Central Dogma versions prior to 0.84.0, the SshGitMirror client, defined inside the file server-mirror-git/src/main/java/com/linecorp/centraldogma/server/internal/mirror/SshGitMirror.java, overrides this default protection model. The client initialization code configures the Apache MINA SSHD builder to bypass filesystem-based host config files. It explicitly disables the parsing of local config files and restricts access to the standard host registry files.

Crucially, the implementation registers a custom ServerKeyVerifier lambda that unconditionally returns a boolean value of true. By doing so, the state engine of the SSH connection is directed to accept any host key presented during the key exchange. Because no secondary verification mechanism, such as a localized fingerprint lookup, was built into the client, the host identity verification flow is fully disabled.

Code-Level Analysis and Patch Walkthrough

To understand the implementation flaw, look at the vulnerable initialization method createSshClient() in SshGitMirror.java before version 0.84.0:

private SshClient createSshClient() {
    final ClientBuilder builder = ClientBuilder.builder();
    // Do not use local file system.
    builder.hostConfigEntryResolver(HostConfigEntryResolver.EMPTY);   // Line 146
    builder.fileSystemFactory(NoneFileSystemFactory.INSTANCE);        // Line 147
    // Do not verify the server key.
    builder.serverKeyVerifier((clientSession, remoteAddress, serverKey) -> true);  // Line 149
    ...
}

In this vulnerable architecture, lines 146 and 147 eliminate local operating system configuration fallbacks. Line 149 registers the blind verification callback, which returns true for all sessions, regardless of the values of remoteAddress or serverKey.

The fix, introduced in commit c5371ab2c6535eb118f62a5251f23423d4edc528, replaces the blind trust lambda with an iterative verification sequence that validates against a pre-configured list of approved fingerprints:

// Retrieve acceptable fingerprints from the plugin configurations
final List<String> acceptedHostKeys = getAcceptedHostKeys();
builder.serverKeyVerifier((clientSession, remoteAddress, serverKey) -> {
    // Extract the SHA-256 fingerprint of the presented key
    final String fingerprint = KeyUtils.getFingerPrint(BuiltinDigests.sha256, serverKey);
    for (String accepted : acceptedHostKeys) {
        if (fingerprint.equals(accepted)) {
            return true;
        }
    }
    if (!acceptedHostKeys.isEmpty() && warnedAddresses.add(remoteAddress)) {
        logger.warn("Host key verification failed for {} (fingerprint: {}).",
                    remoteAddress, fingerprint);
    }
    // If acceptedHostKeys is empty, fall back to true (Fail-Open Warning)
    return acceptedHostKeys.isEmpty();
});

While the patch implements a lookup validation loop, a residual vulnerability condition exists. If the administrator does not define a list of accepted host keys inside the mirroring service configuration, the code returns acceptedHostKeys.isEmpty(), which evaluates to true. This results in a fail-open execution model where unconfigured servers remain exposed to MITM exploits, accompanied only by a warning in the application logs.

Vulnerability Flow Visualization

The flow charts below compare the insecure default verification logic in affected versions against the cryptographic verification logic introduced in the patched versions.

Insecure Outbound Connection Flow (Pre-0.84.0)

Patched Fingerprint Check Flow (0.84.0+)

Exploitation Methodology

Exploitation of CVE-2026-11745 requires the adversary to occupy an on-path network position. This position is typically achieved via local network vector manipulation, such as DNS spoofing, ARP cache poisoning, BGP path manipulation, or container network interface (CNI) compromise within a Kubernetes cluster.

Once adjacent positioning is established, the attacker configures an automated listening script to intercept outbound TCP port 22 connections from the Central Dogma server. A sample exploit handler using Python's paramiko library can be constructed as follows:

import socket
import paramiko
 
# Generate a random local SSH host key to present to Central Dogma
HOST_KEY = paramiko.RSAKey.generate(2048)
 
class MitmSSHHandler(paramiko.ServerInterface):
    def check_auth_publickey(self, username, key):
        print(f"[+] Credential Captured - Username: {username}")
        print(f"[+] Key Material: {key.get_base64()}")
        return paramiko.AUTH_SUCCESSFUL
 
    def check_channel_request(self, kind, chanid):
        return paramiko.OPEN_SUCCEEDED if kind == 'session' else paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED
 
transport = paramiko.Transport(socket.socket())
transport.add_server_key(HOST_KEY)
transport.start_server(server=MitmSSHHandler())

When Central Dogma initiates its scheduled Git mirroring routine, the client attempts to establish a connection with the target domain. The connection is redirected to the attacker's listener due to the poisoned routing table. Because the validation layer returns true for any key, Central Dogma continues with the SSH negotiation and submits authentication credentials to the rogue listener. The adversary successfully extracts the authentication data or injects modified commits during the subsequent repository pull phase.

Impact Assessment

The operational impact of this vulnerability is critical. Central Dogma's role as a trusted distribution point for application secrets and parameters means that any compromise of its upstream Git mirrors propagates throughout the environment. An attacker who successfully establishes a Man-in-the-Middle position can gain unauthorized control over core operational metadata.

First, attackers can read the contents of the mirrored repositories, exposing highly sensitive deployment keys, proprietary algorithms, database configurations, and infrastructure blueprints. This constitutes a severe loss of system confidentiality (VC:H, SC:H).

Second, attackers can inject modified configurations directly into the Central Dogma service pipeline. Because downstream microservices dynamically monitor Central Dogma via watch APIs, these malicious updates are automatically consumed at runtime. An attacker can use this supply chain manipulation vector to reconfigure active applications, disable safety mechanisms, or redirect backend database connections to external rogue services, causing severe systemic compromise (VI:H, SI:H).

Remediation and Detection

To fully remediate CVE-2026-11745, system administrators must complete two distinct operations. Simply upgrading the binary package without configuring active fingerprints leaves the application in an insecure, fail-open state.

First, update the server dependencies to version 0.84.0 or higher within your dependency management configuration. This integrates the fingerprint comparison validation code:

// Gradle build definition
implementation("com.linecorp.centraldogma:centraldogma-server:0.84.0")

Second, explicitly populate the trustedHostKeys parameters in the server configuration file (dogma.json). This step disables the fail-open fallback behavior. Obtain the target fingerprint by querying your source repository host directly:

ssh-keyscan github.com 2>/dev/null | ssh-keygen -lf - -E sha256

Define the resulting fingerprints in the MirroringServicePluginConfig block:

{
  "pluginConfigs": [
    {
      "type": "com.linecorp.centraldogma.server.mirror.MirroringServicePluginConfig",
      "enabled": true,
      "trustedHostKeys": {
        "github.com": [
          "SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU",
          "SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s"
        ]
      }
    }
  ]
}

Additionally, configure log monitoring pipelines to detect potential unconfigured instances. Set up alerts for the following log signature, which indicates that host verification is disabled:

No 'trustedHostKeys' configured in the mirroring service plugin config. SSH mirror connections will accept any host key without verification.

Fix Analysis (3)

Technical Appendix

CVSS Score
8.8/ 10
CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:L
EPSS Probability
0.22%
Top 88% most exploited

Affected Systems

Central Dogma Servercentraldogma-server-mirror-git

Affected Versions Detail

Product
Affected Versions
Fixed Version
centraldogma-server-mirror-git
LY Corporation
< 0.84.00.84.0
AttributeDetail
CWE IDCWE-322
Attack VectorAdjacent Network
CVSS v4.0 Score8.8
EPSS Score0.00219
EPSS Percentile12.34%
Exploit Statuspoc
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1557Adversary-in-the-Middle
Credential Access
T1557.006Adversary-in-the-Middle: DHCP Spoofing / DNS Poisoning
Credential Access
T1195.002Supply Chain Compromise: Software Distribution
Initial Access
CWE-322
Key Exchange without Entity Authentication

The software performs a key exchange or cryptographic negotiation without verifying the identity of the other party, allowing an attacker to impersonate a legitimate entity.

Vulnerability Timeline

Vulnerability identified during codebase security review
2026-05-15
Proof-of-Concept verification completed successfully
2026-05-21
Official remediation patch merged and Central Dogma 0.84.0 released
2026-06-19
CVE-2026-11745 published on CVE.org and NVD
2026-06-22

References & Sources

  • [1]GitHub Security Advisory GHSA-vjfw-cpmh-xwv3
  • [2]NVD - CVE-2026-11745
  • [3]Central Dogma Setup & Mirroring Documentation

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

•30 minutes 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
0 views•6 min read
•about 2 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
1 views•7 min read
•about 3 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
3 views•5 min read
•about 4 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
4 views•6 min read
•about 5 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
2 views•7 min read
•about 6 hours ago•CVE-2026-59151
9.6

CVE-2026-59151: Cross-Tenant Account Takeover via Improper SAML Assertion Validation in Prowler

A critical authentication bypass and cross-tenant account takeover vulnerability exists in the Prowler cloud security platform due to improper validation of the SAML Assertion Consumer Service (ACS) flow. An authenticated attacker controlling a custom Identity Provider (IdP) can forge assertions targeting arbitrary user identities across distinct tenants, allowing complete unauthorized access to target tenant-scoped resources.

Amit Schendel
Amit Schendel
3 views•6 min read