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

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

Alon Barad
Alon Barad
Software Engineer

Sep 12, 2026·6 min read·18 visits

Executive Summary (TL;DR)

Unauthenticated LDAP injection in LY Corporation Central Dogma before version 0.84.0 allows remote attackers to bypass authentication and query directory contents due to unsafe handling of RFC 4515 metacharacters in username fields.

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.

Vulnerability Overview

An LDAP (Lightweight Directory Access Protocol) Injection vulnerability, tracked as CVE-2026-11748 and GHSA-98q5-5qh2-7w75, has been identified in Central Dogma, an open-source, highly available version-controlled service registry and configuration repository. Specifically, the flaw lies within the centraldogma-server-auth-shiro module, which handles external user authentication and directory lookups using Apache Shiro.

When configured to use Active Directory or LDAP for authentication, Central Dogma allows clients to authenticate through a web user interface or API endpoint. This exposure creates a direct attack surface where unauthenticated network-adjacent or public attackers can submit arbitrary input through authentication forms. The input is then integrated into critical LDAP query pipelines.

The vulnerability is classified under CWE-90 (Improper Neutralization of Special Elements used in an LDAP Query). By exploiting this flaw, attackers can manipulate the structural format of the generated LDAP query. This manipulation causes logical authentication confusion, directory enumeration, and administrative boundary bypasses without requiring valid initial credentials.

Root Cause Analysis

The root cause of the vulnerability lies in the implementation of the SearchFirstActiveDirectoryRealm.findUserDn() method. In standard Java LDAP implementations using JNDI (Java Naming and Directory Interface), there are no built-in parameterized query APIs analogous to JDBC PreparedStatement objects. Consequently, developers must manually format search filters, which introduces risks of injection when user-supplied parameters are handled incorrectly.

In vulnerable versions of Central Dogma, the system constructs LDAP search filters dynamically by calling a regular expression replacement on a predefined template. By default, the template is configured as cn={0}, where {0} acts as a placeholder for the username. The server executes this replacement directly on the unescaped username provided by the user in the login request.

Because the input contains no sanitization, special characters defined in RFC 4515, such as wildcards (*), parentheses ((, )), backslashes (\), and null bytes (\0), preserve their special meanings. When these characters are sent to the LDAP directory controller, they modify the logic of the filter itself rather than being treated as literal string values.

Code Analysis and Patch Walkthrough

In vulnerable releases, the dynamic substitution was executed utilizing USERNAME_PLACEHOLDER.matcher(searchFilter).replaceAll(username). Because this method treats the username string literally during replacement, regex patterns and raw LDAP control characters are directly evaluated.

The patch introduced in version 0.84.0 replaces this logic entirely. Instead of executing unchecked replacements, the code now invokes a custom sanitization routine named encodeLdapFilter(String value). This routine parses the string character-by-character and translates all structural RFC 4515 characters to their equivalent safe ASCII hexadecimal values.

// Vulnerable Implementation (Before Patch)
final String filter =
        searchFilter != null ? USERNAME_PLACEHOLDER.matcher(searchFilter)
                                                   .replaceAll(username)
                             : username;
final NamingEnumeration<SearchResult> result = ctx.search(searchBase, filter, ctrl);
 
// Patched Implementation (After Patch in 0.84.0)
final String escaped = encodeLdapFilter(username);
final String filtered = searchFilter.replace(USERNAME_PLACEHOLDER, escaped);
final NamingEnumeration<SearchResult> result = ctx.search(searchBase, filtered, ctrl);

The encodeLdapFilter helper method iterates through the input and replaces control structures as shown below:

static String encodeLdapFilter(String value) {
    if (value == null) {
        return "";
    }
    final StringBuilder sb = new StringBuilder(value.length());
    for (int i = 0; i < value.length(); i++) {
        final char c = value.charAt(i);
        switch (c) {
            case '\\':
                sb.append("\\5c");
                break; 
            case '*':
                sb.append("\\2a");
                break;
            case '(':
                sb.append("\\28");
                break;
            case ')':
                sb.append("\\29");
                break;
            case '\0':
                sb.append("\\00");
                break;
            default:
                sb.append(c);
        }
    }
    return sb.toString();
} 

This implementation is highly effective and complete. By transforming character operations into hexadecimal escapes before passing the filter to ctx.search(), the LDAP server is forced to treat the characters as literals, neutralizing all injection paths.

Exploitation Methodology

Exploitation of this vulnerability requires network access to the Central Dogma authentication service. Since LDAP directory configurations vary, three distinct exploit vectors can be leveraged to compromise system security depending on the backend implementation.

The first vector is wildcard injection. By submitting a username of *, the resulting LDAP search filter becomes cn=*. Because the query limits results to one entry (ctrl.setCountLimit(1)), the directory server returns the first available record (typically the domain administrator). The Shiro framework then attempts to bind with the administrator's DN using the password provided by the attacker. If the backend LDAP allows unauthenticated binds or null password validation, this allows complete login bypass.

The second vector involves boolean injection. An attacker can construct a payload such as alice)(uid=* which alters the query sequence to cn=alice)(uid=*. This allows the attacker to break out of the configured attribute restriction and check other fields. The final vector is blind directory structure enumeration, where an attacker measures response times or error codes from structural queries to determine the names of valid groups and directory objects.

Impact Assessment

The impact of CVE-2026-11748 is classified as Medium, with a CVSS v4.0 base score of 6.9. Because Central Dogma often stores sensitive application configurations and deployment secrets, gaining access to the platform can lead to secondary compromises of connected systems.

If the LDAP server is configured to allow blank password binds, the attacker can log in as arbitrary administrative users. Even in configurations where passwords are validated, attackers can leverage timing side-channels and structural injection responses to enumerate valid corporate users, organizational units (OUs), and internal active directory structures.

Additionally, audit log evasion is a factor. Because the application logs the unescaped string submitted in the HTTP request, but the directory controller executes a completely different logical query due to parenthetical parsing, security tools monitoring active directory commands will show inconsistent execution contexts, complicating forensic investigations.

Remediation & Mitigation Guidance

The primary resolution is to upgrade LY Corporation Central Dogma to version 0.84.0 or later. This release enforces full RFC 4515 escaping on all elements of LDAP search filters.

If an immediate upgrade is impossible, administrators can apply temporary mitigations at the network or directory level. Deploying custom Web Application Firewall (WAF) rules is highly recommended. Rules should detect and block common LDAP control characters in the username field of login endpoints, specifically targeting regex patterns matching .*[(\|&)=\*].*.

Furthermore, administrators should audit directory server settings to disable unauthenticated binds and restrict the service account used by Central Dogma to read-only access on specific, non-administrative organizational units. This limits the blast radius of any successful enumeration attempts.

Official Patches

LY CorporationOfficial GitHub Security Advisory
LY CorporationFix Commit in GitHub Repository

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:N/SA:N
EPSS Probability
0.62%
Top 52% most exploited

Affected Systems

LY Corporation Central Dogma centraldogma-server-auth-shiro module

Affected Versions Detail

Product
Affected Versions
Fixed Version
Central Dogma
LY Corporation
< 0.84.00.84.0
AttributeDetail
CWE IDCWE-90
Attack VectorNetwork
CVSS v4.06.9 (Medium)
EPSS Score0.00618 (Percentile: 47.64%)
ImpactAuthentication Bypass / Directory Enumeration
Exploit Statuspoc
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1595Active Scanning
Reconnaissance
CWE-90
Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')

The software constructs an LDAP query using externally-influenced input, but does not neutralize or incorrectly neutralizes special characters that can modify the query context.

Known Exploits & Detection

GitHubAdvisory text containing detailed explanation of regression test suites and escaping scenarios used to prove the injection vulnerability

Vulnerability Timeline

Vulnerability reported and patch development initiated
2026-05-15
Patch merged and Central Dogma 0.84.0 released
2026-06-19
GitHub Advisory published and CVE record made public
2026-06-22

References & Sources

  • [1]GHSA-98q5-5qh2-7w75: LDAP Injection in centraldogma-server-auth-shiro
  • [2]Central Dogma Security Patch Commit
  • [3]CVE.org CVE-2026-11748 Detail
  • [4]NVD - CVE-2026-11748 Detail

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

•1 day ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
8 views•5 min read
•1 day ago•CVE-2026-107848
3.5

CVE-2026-107848: Cross-Site Request Forgery (CSRF) in Contao Backend Actions via GET Requests

Contao Open Source CMS versions 4.0.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 contain a Cross-Site Request Forgery (CSRF) vulnerability in backend parameter handling. The `RequestTokenListener` component validates anti-CSRF tokens solely for HTTP POST requests, while GET-based declarative guards run only when an `act` parameter is present in the query string. Consequently, custom backend actions dispatched via alternative parameters such as `key=` can execute without CSRF token verification when triggered by an authenticated user.

Amit Schendel
Amit Schendel
7 views•5 min read
•1 day ago•CVE-2026-107843
5.3

CVE-2026-107843: Unthrottled Activation Email Resend and Account Enumeration in Contao CMS

Contao CMS versions 4.1.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 fail to validate form submission tokens and enforce rate limiting when processing activation email resend requests via HTTP POST, enabling resource exhaustion and account state enumeration.

Amit Schendel
Amit Schendel
8 views•4 min read
•1 day ago•CVE-2026-107842
5.3

CVE-2026-107842: Information Disclosure via Stale Indexing in Contao Search Module

An information disclosure vulnerability in Contao CMS allows unauthenticated site visitors to view protected page titles, URLs, and text excerpts through search queries when protected page indexing is disabled after previously being enabled.

Amit Schendel
Amit Schendel
10 views•4 min read
•1 day ago•GHSA-G38J-7V97-X298
6.5

GHSA-G38J-7V97-X298: Missing Authorization Check in Vikunja CalDAV Task Relation Creation

In Vikunja prior to version 2.6.0, relation creation via the CalDAV endpoint fails to invoke the TaskRelation.CanCreate authorization check. This missing access control allows an authenticated user to establish unauthorized relationships and perform write operations against any task, provided its unique identifier (UID) is known.

Alon Barad
Alon Barad
12 views•5 min read
•1 day ago•GHSA-3HC7-R24J-RPWC
6.8

GHSA-3hc7-r24j-rpwc: Cross-Project Task Disclosure via Subtask Expansion in Vikunja

A cross-project information disclosure vulnerability in Vikunja allows authenticated users with read access to one project to view private task details from unauthorized projects via subtask expansion parameters.

Alon Barad
Alon Barad
9 views•5 min read