What Is the Linux Kernel futex Subsystem?
The Linux kernel futex (fast userspace mutex) subsystem provides user-space locking primitives that allow threads to synchronize with minimal kernel involvement. When uncontested, futex operations happen entirely in user space; the kernel is only invoked when a thread must actually wait or wake another thread. The futex_requeue() operation allows waiting threads to be moved from one futex to another — used by condition variable implementations in pthreads. This complex functionality, with its kernel-enforced invariants, created the attack surface for CVE-2014-3153.
Overview
CVE-2014-3153, widely known as "Towelroot," is a Linux kernel privilege escalation vulnerability in the futex_requeue() function. The function fails to validate that two futex addresses are different before performing the requeue operation, allowing a local attacker to manipulate kernel data structures and elevate privileges to root. Security researcher George Hotz (geohot) discovered and exploited this to build Towelroot — a one-click Android root tool that worked on a wide range of Android devices (including the Samsung Galaxy S5) running unpatched kernels. The vulnerability affected the Linux kernel across all platforms, including Android, server Linux, and embedded devices.
Affected Versions
| Linux Kernel | Status |
|---|---|
| < 3.14.5 (stable) | Vulnerable |
| < 3.15.2 (mainline) | Vulnerable |
| Vendor backport patches | Required for older stable branches |
| Android (most devices, pre-June 2014) | Vulnerable (Android kernel updates lag upstream) |
Almost all Android devices shipping before mid-2014 were vulnerable, and many devices that never received OTA updates remained vulnerable indefinitely.
Technical Details
Root Cause: Missing Validation in futex_requeue()
The futex_requeue() system call (invoked via FUTEX_REQUEUE or FUTEX_CMP_REQUEUE) moves waiting threads from one futex to another. The vulnerable code in kernel/futex.c did not verify that the source and destination futex addresses were distinct addresses before proceeding. By passing the same address for both source and destination, an attacker could create a circular waiters list in the kernel's futex hash table.
A carefully timed exploitation of this circular structure causes the kernel to write to attacker-controlled memory during a subsequent futex operation. Through careful heap shaping (using other kernel primitives to control memory layout), the attacker can:
- Create the circular futex waiters list
- Trigger a kernel write to a controlled address
- Overwrite a kernel function pointer or credential structure
- Redirect execution to shellcode or directly modify the calling process's
uid/gidto 0 (root)
Towelroot
George Hotz weaponized this into a reliable, one-click root exploit for Android. The Towelroot app (tr.apk) was released at towelroot.com in June 2014 — users installed it, tapped a button, and their device was rooted. Devices confirmed vulnerable included the Samsung Galaxy S5 on multiple carriers, HTC One M8, and many others running Android 4.x kernels.
Attack Characteristics
| Attribute | Detail |
|---|---|
| Attack Vector | Local — requires shell or app execution on the target |
| Privileges Required | Low (any local user or Android app without special permissions) |
| Impact | Full kernel privilege escalation to root/SYSTEM |
| Reliability | High — Towelroot demonstrated very reliable exploitation |
| Android impact | One-click root; bypasses Android security model |
Discovery
George Hotz (known as "geohot") — the hacker who first jailbroke the iPhone and first unlocked the PlayStation 3 — discovered CVE-2014-3153 and published the Towelroot exploit on May 21, 2014, the same day as a security conference demonstration. Hotz released Towelroot publicly at towelroot.com as a free Android root tool.
Exploitation Context
- Android rooting: Towelroot became one of the most widely used Android root tools in 2014, compatible with Android 4.x devices across all major manufacturers; millions of devices were rooted using it
- Malware abuse: Android malware families incorporated the Towelroot exploit for privilege escalation — a malicious app with no special permissions could exploit CVE-2014-3153 to gain root, install persistent backdoors, or disable security software
- Server Linux: The same vulnerability existed in Linux server kernels; local attackers (e.g., a web application exploiting a web shell) could use this to escalate from the www-data user to root
- Long tail: Android devices are notoriously slow to receive kernel patches; many devices never received an OTA update patching CVE-2014-3153, leaving them permanently exploitable
- CISA KEV (2022): Added May 2022 — eight years after discovery — confirming continued exploitation against legacy Android and embedded Linux devices
Remediation
-
Update the kernel to Linux 3.14.5+ or apply vendor/distribution backport patches. For Android devices, install the OTA update from your device manufacturer.
-
Android devices: Apply the Android security update that patches CVE-2014-3153. Samsung, HTC, LG, and other OEMs released patches in mid-to-late 2014. Devices that never received an update should be considered permanently exploitable.
-
Decommission unpatched devices — Android devices running kernels without this fix should not be trusted in corporate environments or used to access sensitive data.
-
Mobile Device Management (MDM): Enforce minimum OS/patch levels via MDM policy to prevent unpatched devices from accessing corporate resources.
-
Linux servers: Identify all servers running kernel versions below 3.14.5 and apply distribution-provided security updates immediately.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2014-3153 |
| Vendor / Product | Linux — Kernel |
| NVD Published | 2014-06-07 |
| NVD Last Modified | 2025-10-22 |
| CVSS 3.1 Score | 7.8 |
| CVSS 3.1 Vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Severity | HIGH |
| CWE | CWE-269 — Improper Privilege Management find similar ↗ |
| CISA KEV Added | 2022-05-25 |
| CISA KEV Deadline | 2022-06-15 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2014-05-21 | George Hotz (geohot) publicly discloses Towelroot exploit and releases towelroot.com |
| 2014-05-22 | Linux kernel patch for futex_requeue() submitted |
| 2014-06-06 | Fix merged into Linux kernel stable branches |
| 2014-06-07 | CVE-2014-3153 published by NVD |
| 2022-05-25 | Added to CISA Known Exploited Vulnerabilities catalog |
| 2022-06-15 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD — CVE-2014-3153 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| Towelroot — George Hotz Android Root Tool (archived) | Security Research |
| Linux Kernel Fix Commit — CVE-2014-3153 | Patch / Source Code |
| MITRE CVE — CVE-2014-3153 | Vulnerability Database |