In FreeRADIUS 3.0.x before 3.0.20, the EAP-pwd module used a global OpenSSL BN_CTX instance to handle all handshakes. This mean multiple threads use the same BN_CTX instance concurrently, resulting in crashes when concurrent EAP-pwd handshakes are initiated. This can be abused by an adversary as a Denial-of-Service (DoS) attack.
The product utilizes multiple threads or processes to allow temporary access to a shared resource that can only be exclusive to one process at a time, but it does not properly synchronize these actions, which might cause simultaneous accesses of this resource by multiple threads or processes.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Freeradius | Freeradius | 3.0.0 (including) | 3.0.20 (excluding) |
Red Hat Enterprise Linux 7 | RedHat | freeradius-0:3.0.13-15.el7 | * |
Red Hat Enterprise Linux 8 | RedHat | freeradius:3.0-8030020200806223029.1e4bbb35 | * |
Freeradius | Ubuntu | bionic | * |
Freeradius | Ubuntu | eoan | * |
Freeradius | Ubuntu | trusty | * |
Freeradius | Ubuntu | upstream | * |
Freeradius | Ubuntu | xenial | * |
Synchronization refers to a variety of behaviors and mechanisms that allow two or more independently-operating processes or threads to ensure that they operate on shared resources in predictable ways that do not interfere with each other. Some shared resource operations cannot be executed atomically; that is, multiple steps must be guaranteed to execute sequentially, without any interference by other processes. Synchronization mechanisms vary widely, but they may include locking, mutexes, and semaphores. When a multi-step operation on a shared resource cannot be guaranteed to execute independent of interference, then the resulting behavior can be unpredictable. Improper synchronization could lead to data or memory corruption, denial of service, etc.