Skip to main content
EPSS 0.3%top 84%

CVE-2026-90979: CWE-90 Improper neutralization of special elements used in an LDAP query ('LDAP injection') in Apache Software Foundation Apache Karaf

0
High
VulnerabilityCVE-2026-90979cvecve-2026-90979cwe-90
Published: 09/28/2026 (09/28/2026, 09:34:33 UTC)
Source: CVE Database V5
Vendor/Project: Apache Software Foundation
Product: Apache Karaf

Description

LDAPCache and LDAPBackingEngine build LDAP search filters for user lookup and role lookup by textually substituting the placeholders %u, %dn, and %fqdn (drawn from the login name, the resolved user DN, and its fully qualified namespace form) into administrator-configured filter templates (userFilter, roleFilter). Before the fix, the only sanitization applied to the substituted value was double backslashed: filter = filter.replaceAll(Pattern.quote("%u"), Matcher.quoteReplacement(user)); filter = filter.replace("\\", "\\\\"); This does not escape the other characters RFC 4515 requires escaping in an LDAP search filter: *, (, ), and NUL. A login name containing any of these can change the structure of the resulting filter rather than being matched as a literal value (e.g. a crafted username can turn an equality match into a wildcard match, or close/reopen filter clauses), widening what the search returns and potentially causing a login or role lookup to match an LDAP entry other than the intended one, over-granting roles, and depending on deployment-specific filter templates, potentially affecting which account a login resolved to. It's not exploitable through every entry points: LDAPLoginModule and LDAPPubkeyLoginModule both called Util.doRFC2254Encoding() (correct RFC 4515 escaping) on the login name before handing it to LDAPCache, which masked the missing escaping in LDAPCache for those two call paths. Using LDAPCache directly (bypassing the login modules) does not reproduce through the normal LDAPLoginModule/LDAPPubkeyLoginModule authentication flow for this reason. It does reproduce through two other call paths that reach LDAPCache/LDAPBackingEngine without any prior escaping: * GSSAPILdapLoginModule passes the NameCallback name straight through, unescaped. * LDAPBackingEngine (listRoles) passes principal.getName() straight through, unescaped.

Affected software

Apache Software Foundation

Apache Karaf

Affected versions
>=0 <4.4.12
org.apache.karaf/apache-karaf
pkg:maven/org.apache.karaf/apache-karaf
Affected versions
>=0 <4.4.12

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 09/28/2026, 10:02:46 UTC

Technical Analysis

Apache Karaf's LDAPCache and LDAPBackingEngine build LDAP search filters by substituting placeholders (%u, %dn, %fqdn) with user input. Prior to version 4.4.12, the only sanitization applied was double backslash escaping, which does not cover all special characters that must be escaped in LDAP filters per RFC 4515 (notably '*', '(', ')', and NUL). This allows crafted input containing these characters to manipulate the LDAP filter structure, potentially causing broader matches than intended, over-granting roles, or incorrect user account resolution. While LDAPLoginModule and LDAPPubkeyLoginModule apply correct escaping and thus mitigate this issue, GSSAPILdapLoginModule and LDAPBackingEngine's listRoles method do not, making those paths vulnerable.

Potential Impact

An attacker able to supply specially crafted input to vulnerable call paths can manipulate LDAP queries, potentially causing authentication or authorization bypasses. This may result in over-granting of roles or incorrect user account resolution, depending on deployment-specific filter templates. The impact is limited to the affected modules that do not perform proper escaping and does not affect all authentication flows.

Mitigation Recommendations

A fix is available in Apache Karaf version 4.4.12 and later, which properly escapes all special LDAP characters according to RFC 4515. Users should upgrade to version 4.4.12 or later to remediate this vulnerability. Until upgraded, avoid using vulnerable call paths such as GSSAPILdapLoginModule and LDAPBackingEngine's listRoles method with untrusted input. Patch status is confirmed by the vendor advisory indicating the fix in 4.4.12.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Data Version
5.2
Assigner Short Name
apache
Date Reserved
2026-09-14T13:42:44.229Z
State
PUBLISHED

Threat ID: 6aba37faf7a7c541067d3266

Added to database: 09/28/2026, 09:48:42 UTC

Last enriched: 09/28/2026, 10:02:46 UTC

Last updated: 09/29/2026, 01:57:23 UTC

Views: 18

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses