Forescout Research Labs has launched Project Memoria, an initiative that aims at providing the community with the most important study on the security of TCP/IP stacks. AMNESIA:33 is the first research published under Project Memoria.
“AMNESIA:33” is a set of 33 vulnerabilities that impact four open-source TCP/IP protocol stacks that are used by major IoT, OT, and IT machine vendors.
It affects multiple open source TCP/IP stacks that are not owned by a single company. This implies that a single vulnerability is likely to spread easily and silently across multiple codebases, development teams, companies, and products, which presents significant challenges to patch management.
Researchers estimated quite 150 vendors and millions of devices are susceptible to AMNESIA:33
The security flaw in TCP/IP stack
The TCP/IP stacks affected by AMNESIA:33 are often found in operating systems for embedded devices, systems-on-a-chip, networking equipment, OT devices, and a myriad of enterprise and consumer IoT devices.
A security flaw in a TCP/IP stack can be extremely dangerous because the code in these components may be used to process every incoming network packet that reaches a device.
Many of the vulnerabilities reported within AMNESIA:33 arise from bad software development practices, such as an absence of basic input validation. Mostly corruption in memory can cause a denial of service, information leaks, or remote code execution.
Three of the most severe issues reside in uIP (CVE-2020-24336), picoTCP (CVE-2020-24338), and Nut/Net (CVE-2020-25111), all of which are remote code execution (RCE) flaws and have a CVSS score of 9.8 out of a maximum of 10.
- CVE-2020-24336 – The code for parsing DNS records in DNS response packets sent over NAT64 does not validate the length field of the response records, allowing attackers to corrupt memory.
- CVE-2020-24338 – The function that parses domain names lacks bounds checks, allowing attackers to corrupt memory with crafted DNS packets.
- CVE-2020-25111 – A heap buffer overflow occurring during the processing of the name field of a DNS response resource record, allowing an attacker to corrupt adjacent memory by writing an arbitrary number of bytes to an allocated buffer.
Exploitability is influenced heavily by the following factors:
Stack configuration– TCP/IP stacks are highly configurable, allows enabling and disabling various sub stacks, specifying buffer sizes, selecting different kinds of memory allocators, regulating interaction with network drivers, and handling debugging functionality.
During the research, some bounds checks were implemented as part of assertion predicates, which are often turned off in production, so the exploitability of some issues depends on the assertion configuration.
Networking Hardware & Driver– TCP/IP stacks often can be configured to offload packet validation and filtering, and certain network controllers do so autonomously regardless of stack configuration.
Depending on the nature of a vulnerability, this can influence whether a malicious packet ever gets to reach the code it seeks to exploit.
Target Platform- The exploitability of an issue is highly dependent on the target’s hardware architecture and configuration. For example, CVE2018-16524 affects the FreeRTOS+TCP stack by allowing an attacker to provide an MSS value of 0 and cause a division-by-zero, which can lead to a DoS.
- Disable or block IPv6 traffic whenever it is not needed in the network
- Configure devices to rely on internal DNS servers as much as possible and closely monitor external DNS traffic
- Monitor all network traffic for malformed packets
These are the possible mitigating actions that asset owners and security operators can take to protect their networks from the TCP/IP vulnerabilities in AMNESIA:33.