A vulnerability in the Internet Key Exchange Version 2 (IKEv2) implementation of Cisco Adaptive Security Appliance (ASA) Software and Cisco Firepower Threat Defense (FTD) Software could allow an authenticated, remote attacker to trigger a denial of service (DoS) condition on an affected device. This vulnerability is due to improper control of a resource. An attacker with the ability to spoof a trusted IKEv2 site-to-site VPN peer and in possession of valid IKEv2 credentials for that peer could exploit this vulnerability by sending malformed, authenticated IKEv2 messages to an affected device. A successful exploit could allow the attacker to trigger a reload of the device.
Referencing memory after it has been freed can cause a program to crash, use unexpected values, or execute code.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Firepower_threat_defense | Cisco | * | 6.4.0.13 (excluding) |
Firepower_threat_defense | Cisco | 6.6.0 (including) | 6.6.5 (excluding) |
Firepower_threat_defense | Cisco | 6.7.0 (including) | 6.7.0.3 (excluding) |
Firepower_threat_defense | Cisco | 7.0.0 (including) | 7.0.1 (excluding) |
Adaptive_security_appliance_software | Cisco | 9.8.0 (including) | 9.8.4.40 (excluding) |
Adaptive_security_appliance_software | Cisco | 9.9.0 (including) | 9.12.4.30 (excluding) |
Adaptive_security_appliance_software | Cisco | 9.14.0 (including) | 9.14.3.9 (excluding) |
Adaptive_security_appliance_software | Cisco | 9.15.0 (including) | 9.15.1.17 (excluding) |
Adaptive_security_appliance_software | Cisco | 9.16.0 (including) | 9.16.2 (excluding) |
The use of previously-freed memory can have any number of adverse consequences, ranging from the corruption of valid data to the execution of arbitrary code, depending on the instantiation and timing of the flaw. The simplest way data corruption may occur involves the system’s reuse of the freed memory. Use-after-free errors have two common and sometimes overlapping causes:
In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process. If the newly allocated data happens to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.