<Vulnerability name="CVE-2026-18651">
    <DocumentDistribution xml:lang="en">Copyright © 2012 Red Hat, Inc. All rights reserved.</DocumentDistribution>
    <ThreatSeverity>Moderate</ThreatSeverity>
    <PublicDate>2026-08-03T00:00:00</PublicDate>
    <Bugzilla id="2510617" url="https://bugzilla.redhat.com/show_bug.cgi?id=2510617" xml:lang="en:us">
389-ds-base: 389-ds-base: SASL PLAIN bind installs connection credentials before account-lock check, allowing continued access as a locked account
    </Bugzilla>
    <CVSS3 status="draft">
        <CVSS3BaseScore>5.4</CVSS3BaseScore>
        <CVSS3ScoringVector>CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N</CVSS3ScoringVector>
    </CVSS3>
    <CWE>CWE-287</CWE>
    <Details xml:lang="en:us" source="Mitre">
A flaw was found in 389 Directory Server. During SASL PLAIN authentication, the server installs connection-level bind credentials before performing the account-lock check. If the account is subsequently found to be locked, the bind is reported as failed to the client, but the already-installed authenticated state on the connection is not reverted. A client that supplies valid credentials for an account that has been administratively locked can continue to use the same connection with that account's privileges, defeating account lock as an access-revocation control.
    </Details>
    <Details xml:lang="en:us" source="Red Hat">
A flaw was found in 389 Directory Server. During SASL PLAIN authentication, the server installs connection-level bind credentials before performing the account-lock check. If the account is subsequently found to be locked, the bind is reported as failed to the client, but the already-installed authenticated state on the connection is not reverted. A client that supplies valid credentials for an account that has been administratively locked can continue to use the same connection with that account's privileges, defeating account lock as an access-revocation control.
    </Details>
    <Statement xml:lang="en:us">
This flaw lets a user authenticate to an already-locked account (nsAccountLock: true) via SASL PLAIN, using that account's own correct password. The server checks the password before it checks the lock, so the connection becomes authenticated even though the client is told the bind failed. After bind, the user can read and modify what that account was already permitted to touch - no escalation and access beyond it's own rights.
    </Statement>
    <Acknowledgement xml:lang="en:us">
Red Hat would like to thank Andrew Rukin (Arenadata) and Chris Jarrett-Davies (OpenAI Security Research) for reporting this issue.
    </Acknowledgement>
    <Mitigation xml:lang="en:us">
When locking an account, also rotate its LDAP password. Locking the account alone is not enough: this flaw lets a bind with the account's still-valid password succeed even after it's locked.
    </Mitigation>
    <PackageState cpe="cpe:/a:redhat:directory_server:11">
        <ProductName>Red Hat Directory Server 11</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:directory_server:12">
        <ProductName>Red Hat Directory Server 12</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:directory_server:13">
        <ProductName>Red Hat Directory Server 13</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:10">
        <ProductName>Red Hat Enterprise Linux 10</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:6">
        <ProductName>Red Hat Enterprise Linux 6</ProductName>
        <FixState>Not affected</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:7">
        <ProductName>Red Hat Enterprise Linux 7</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:8">
        <ProductName>Red Hat Enterprise Linux 8</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds:1.4/389-ds-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:9">
        <ProductName>Red Hat Enterprise Linux 9</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>389-ds-base</PackageName>
    </PackageState>
    <References xml:lang="en:us">
https://www.cve.org/CVERecord?id=CVE-2026-18651
https://nvd.nist.gov/vuln/detail/CVE-2026-18651
    </References>
</Vulnerability>