Facebook Google Plus Twitter LinkedIn YouTube RSS Menu Search Resource - BlogResource - WebinarResource - ReportResource - Eventicons_066 icons_067icons_068icons_069icons_070

Tenable Blog

Subscribe

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

Cybersecurity News You Can Use

Enter your email and never miss timely alerts and security guidance from the experts at Tenable.