It was found that encrypted connections did not honor the 'ioblocktimeout' parameter to end blocking requests. As a result, an unauthenticated attacker could repeatedly start a sufficient number of encrypted connections to block all workers, resulting in a denial of service.
In 389-ds-base, requests are handled by workers threads. Each sockets will be waited by the worker for at most 'ioblocktimeout' seconds.
However this timeout applies only for un-encrypted requests. Connections using SSL/TLS are not taking this timeout into account during reads, and may hang longer.
An unauthenticated attacker could repeatedly create hanging LDAP requests to hang all the workers, resulting in a Denial of Service.
Is there any further references for this issue? Upstream issue or fixing commits? Thanks already for any hints!
Upstream does not appear to have been contacted about this issue. Perhaps the developers of 389 at redhat have? We have had some issues in the past with communication of security issues though.
I will be investigating this soon.
Created attachment 1555159 [details]
Make sure secure connection enforce the ioblocktimeout
There is a proposed patch uploaded via comment 7.
Upstream fixes :
1.3.8 branch :
1.3.9 branch :
1.4.0 branch :
master branch :