CVE-2026-89720

ubifs: fix out-of-bounds read in signature length check

HIGH
7.7
CVSS Score
Published: September 11, 2026 at 07:46 PM UTC
Updated: October 19, 2026 at 09:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.7
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: ubifs: fix out-of-bounds read in signature length check ubifs_sb_verify_signature() bounds the on-disk ubifs_sig_node->len field before handing the signature payload to verify_pkcs7_signature(), but the check has the wrong sign: if (le32_to_cpu(signode->len) > snod->len + sizeof(struct ubifs_sig_node)) The signature bytes start sizeof(struct ubifs_sig_node) (UBIFS_SIG_NODE_SZ, 64 bytes) into the node, so the payload is at most snod->len - sizeof(struct ubifs_sig_node) bytes long. Adding the header size instead of subtracting it accepts a declared length up to 2 * UBIFS_SIG_NODE_SZ larger than the node actually holds -- past the end of c->sbuf, which is vmalloc(c->leb_size). verify_pkcs7_signature() -> pkcs7_parse_message() -> asn1_ber_decoder() is then handed that inflated length and reads beyond the allocation while walking the DER headers. The node length comes straight from the mounted image, so a crafted signed UBIFS image reaches this via ubifs_read_superblock() before the signature is cryptographically checked. snod->len is guaranteed to be >= UBIFS_SIG_NODE_SZ by the node scanner (c->ranges[UBIFS_SIG_NODE].min_len == UBIFS_SIG_NODE_SZ), so the corrected subtraction cannot underflow. Legitimately signed images are unaffected: a correct superblock never declares a signature longer than the node it is embedded in.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

5.3817aa094842dfc3a6b98c9582d4a647827f66201
Vendor states this is fixed in 11abc34698cb3172badf8aa12e623f1bac98bbd8 (fixed)
Vendor states this is fixed in 37a9d25a563f5f9103282954ce573c4a61321e7c (fixed)
Vendor states this is fixed in 83e1aa9f5f906c9b1f4949d0521f0f950a159d96 (fixed)
Vendor states this is fixed in 8cc3da72cf57acb4b77442ea8cec48425dff7c06 (fixed)
Vendor states this is fixed in 95d27c1708bb6e8823c8e7c623f9abc2a91bf4bf (fixed)
Vendor states this is fixed in a1dc246f98bb94233effa4fa3ec7bf84700bb7d1 (fixed)
Vendor states this is fixed in ab7405bd86331cc2dbc8201699d4adc33bea75e7 (fixed)
Vendor states this is fixed in f76b79d6e42af20682495bccd22f72c7164b0018 (fixed)
Vendor states this is fixed in 5.10.270 (unaffected)
Vendor states this is fixed in 5.15.221 (unaffected)
Vendor states this is fixed in 5.3 (unaffected)
Vendor states this is fixed in 6.1.188 (unaffected)
Vendor states this is fixed in 6.12.109 (unaffected)
Vendor states this is fixed in 6.18.50 (unaffected)
Vendor states this is fixed in 6.6.157 (unaffected)
Vendor states this is fixed in 7.2.4 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc1 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

CVSS

7.7HIGHLinux
Vector?

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card