CVE-2026-90979
Beschreibung
LDAPCache und LDAPBackingEngine bauen LDAP-Suchfilter für die Benutzersuche und die Rollensuche, indem sie die Platzhalter %u, %dn und %fqdn (aus dem Login-Namen, dem aufgelösten Benutzer DN und seinem vollständig qualifizierten Namespace-Formular gezeichnet) textull in administratorkonfigurierte Filtervorlagen (Benutzerfilter, roleFilter) ersetzen. Vor dem Fix wurde die einzige auf den substituierten Wert angewendete Desinfektion doppelt zurückgeschnitten: filter = filter.replaceAll(Pattern.quote("%u"), Matcher.quoteReplacement(user)); filter = filter.replace("\\", "\\\"); Dies entgeht nicht den anderen Zeichen, die RFC 4515 benötigt, um in einem LDAP-Suchfilter zu entkommen: *, (, ) und NUL. Ein Login-Name, der eine davon enthält, kann die Struktur des resultierenden Filters ändern, anstatt als Literalwert abgeglichen zu werden (z. B. kann ein erstellter Benutzername eine Gleichheitsübereinstimmung in eine Platzhalterübereinstimmung verwandeln oder Filterklauseln schließen / wieder öffnen), was die Suche zurückgibt und möglicherweise dazu führt, dass ein Login oder eine Rollensuche mit einem anderen LDAP-Eintrag als dem beabsichtigten übereinstimmt, Rollen übergibt und abhängig von Bereitstellungsspezifischen Filtervorlagen, was sich möglicherweise darauf auswirkt, welches Konto ein Login aufgelöst hat. LDAPLoginModule und LDAPPubkeyLoginModule heißen beide Util.doRFC2254Encoding() (korrektes RFC 4515-Flucht) auf dem Anmeldenamen, bevor sie es an LDAPCache übergeben haben, was das fehlende Fluchten in LDAPCache für diese beiden Anrufpfade maskiert hat. Die direkte Verwendung von LDAPCache (Umgehen der Anmeldemodule) wird aus diesem Grund nicht über den normalen Authentifizierungsfluss von LDAPLoginModule/LDAPPubkeyLoginModule reproduziert. Es reproduziert sich über zwei weitere Call-Pfade, die LDAPCache/LDAPBackingEngine ohne vorheriges Entweichen erreichen: * GSSAPILdapLoginModule übergibt den NameCallback-Namen direkt durch, unescaped. * LDAPBackingEngine (listRoles) führt principal.getName() direkt durch, unescaped.
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Herstellerhinweise prüfen und das betroffene Produkt kurzfristig patchen oder kompensierende Schutzmaßnahmen aktivieren.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Apache Software Foundation karaf.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Hersteller-Advisory öffnen und verfügbare Updates, Workarounds oder Deaktivierungen prüfen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.