Tor before 0.3.5.16, 0.4.5.10, and 0.4.6.7 mishandles the relationship between batch-signature verification and single-signature verification, leading to a remote assertion failure, aka TROVE-2021-007.
The product contains an assert() or similar statement that can be triggered by an attacker, which leads to an application exit or other behavior that is more severe than necessary.
| Name | Vendor | Start Version | End Version | 
|---|---|---|---|
| Tor | Torproject | * | 0.3.5.16 (excluding) | 
| Tor | Torproject | 0.4.0.0 (including) | 0.4.5.10 (excluding) | 
| Tor | Torproject | 0.4.6.0 (including) | 0.4.6.7 (excluding) | 
| Tor | Ubuntu | bionic | * | 
| Tor | Ubuntu | esm-apps/bionic | * | 
| Tor | Ubuntu | esm-apps/focal | * | 
| Tor | Ubuntu | esm-apps/xenial | * | 
| Tor | Ubuntu | focal | * | 
| Tor | Ubuntu | hirsute | * | 
| Tor | Ubuntu | impish | * | 
| Tor | Ubuntu | trusty | * | 
| Tor | Ubuntu | upstream | * | 
| Tor | Ubuntu | xenial | * | 
While assertion is good for catching logic errors and reducing the chances of reaching more serious vulnerability conditions, it can still lead to a denial of service. For example, if a server handles multiple simultaneous connections, and an assert() occurs in one single connection that causes all other connections to be dropped, this is a reachable assertion that leads to a denial of service.