NUMBER:JACK: Nine Vulnerabilities Across Multiple Open Source TCP/IP Stacks
Nine new vulnerabilities have been identified across several TCP/IP stacks embedded in millions of OT, IoT and IT devices, spurring continued scrutiny of these already vulnerable asset types.
Update October 11: The Identifying affected systems section has been updated with information on service detection plugins for the TCP/IP stacks mentioned in this blog post. Please note that some service detection plugins are not available due to low detection confidence in order to prevent false negative results.
Background
On February 10, researchers at Forescout published a report called NUMBER:JACK, which details nine vulnerabilities discovered across nine open source TCP/IP stacks. The prevalence of these stacks across embedded devices is significant. NUMBER:JACK follows in the footsteps of AMNESIA:33, a previous report by the same researchers that detailed 33 vulnerabilities across four open source TCP/IP stacks, affecting millions of operational technology (OT), internet of things (IoT) and IT devices. NUMBER:JACK adds seven additional vulnerable TCP/IP stacks, and many millions more potentially impacted devices.
Analysis
Of the nine vulnerabilities included in the NUMBER:JACK report, four exist in the same stacks that were examined during the AMNESIA:33 research (highlighted in bold below). The nine vulnerabilities are identified as follows:
CVE | Affected TCP/IP Stack | CVSSv3 |
---|---|---|
CVE-2020-27213 | Ethernut (Nut/Net) | 7.5 |
CVE-2020-27630 | uC/TCP-IP | 7.5 |
CVE-2020-27631 | CycloneTCP | 7.5 |
CVE-2020-27632 | NDKTCPIP | 7.5 |
CVE-2020-27633 | FNET | 7.5 |
CVE-2020-27634 | uIP/Contiki-OS/Contiki-NG | 7.5 |
CVE-2020-27635 | picoTCP | 7.5 |
CVE-2020-27636 | MPLAB Net | 7.5 |
CVE-2020-28388 | Nucleus NET | 6.5 |
Flaw stems from weakness in TCP/IP Initial Sequence Number (ISN) generation
All nine vulnerabilities are linked to the same type of flaw: a weakness in the TCP/IP protocol’s generation of the Initial Sequence Number (ISN), a 32-bit randomly generated number that is used when establishing a new session. The purpose of the randomization is to ensure connection to the intended device and to prevent an attacker from being able to tamper with an existing connection.
Historical research into sequence number attacks
These findings are the latest in decades worth of research surrounding attacks against sequence numbers. One of the earliest was first published in 1985 by Robert T. Morris. There have been subsequent pieces of research into these types of attacks covered in requests for comments (RFCs) such as RFC1948 and RFC6528.
It appears the flaws identified in NUMBER:JACK are the result of several implementations not adhering to the guidance outlined in these RFCs as well as the usage of a poor pseudorandom number generator (PRNG) algorithm.
NUMBER:JACK vulnerabilities are limited in impact, but far easier to identify
Unlike AMNESIA:33, which included several critical memory corruption flaws, the vulnerabilities identified in NUMBER:JACK are less critical, which is why none of them received a CVSSv3 score of greater than 7.5. However, despite the lack of criticality, the flaws are much easier for attackers to identify, making them more likely to be exploited.
An attacker that is able to exploit these flaws could cause a denial of service against a vulnerable device, perform an authentication bypass or malicious code injection.
Proof of concept
At the time this blog post was published, there was no proof-of-concept (PoC) code for any of the nine vulnerabilities identified in NUMBER:JACK.
Solution
Each of the maintainers/vendors of the TCP/IP stacks identified through this research were notified of these flaws in October 2020. The following table contains the list of the stacks, their vulnerable versions and fixed versions if available.
Affected TCP/IP Stack | Vulnerable Version | Fixed Version |
---|---|---|
CycloneTCP | 1.9.6 | 2.0.0 |
FNET | 4.6.3 | Not fixed, documentation updated |
MPLAB Net | 3.6.1 | 3.6.4 |
NDKTCPIP | 2.25 | 7.02 (Processor SDK) |
Nucleus NET | 4.3 | 5.2 (and Nucleus ReadyStart v2012.12) |
Nut/Net | 5.1 | Not Available (In-Progress) |
picoTCP | 1.7.0 | 2.1 (with guidance) |
uC/TCP-IP | 3.6.0 | No longer supported; Upgrade to Micrium OS project instead |
uIP, Contiki-OS, Contiki-NG | 1.0, 3.0, 4.5 | No Response |
Merely identifying these vulnerabilities is just a small part of the broader challenge when dealing with vulnerabilities inside of embedded libraries. The primary issue is about identifying and addressing the underlying assets affected. There are potentially millions of devices from hundreds of vendors across the world that have utilized any one of these TCP/IP stacks. More important than the availability of any given patch is to identify the manufacturers of impacted devices so they can adequately deploy those patches and protect their users.
Identifying affected systems
Detection plugins for the TCP/IP stacks analyzed in the NUMBER:JACK report are available for Tenable customers. These detection plugins can be used to identify assets using these stacks within your network.
Detection Plugin | Plugin ID | Detection Type |
---|---|---|
uC/TCP-IP Stack | 149495 | HTTP Detection |
uIP/Contiki TCP/IP Stack | 149496 | HTTP Detection |
Nut/Net TCP/IP Stack | 149497 | HTTP Detection |
FNET TCP/IP Stack | 149498 | HTTP Detection |
Nucleus Net TCP/IP Stack | 149645 | FTP Detection |
A list of Tenable plugins to identify these vulnerabilities will appear here as they’re released.
Get more information
Join Tenable's Security Response Team on the Tenable Community.
Learn more about Tenable, the first Cyber Exposure platform for holistic management of your modern attack surface.
Get a free 30-day trial of Tenable.io Vulnerability Management.
Related Articles
- Vulnerability Management