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

Published Sep 11, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

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

ubifssbverifysignature() bounds the on-disk ubifssignode->len field before handing the signature payload to verifypkcs7signature(), but the check has the wrong sign:

if (le32tocpu(signode->len) > snod->len + sizeof(struct ubifssignode))

The signature bytes start sizeof(struct ubifssignode) (UBIFSSIGNODESZ, 64 bytes) into the node, so the payload is at most

snod->len - sizeof(struct ubifssignode)

bytes long. Adding the header size instead of subtracting it accepts a declared length up to 2 UBIFSSIGNODESZ larger than the node actually holds -- past the end of c->sbuf, which is vmalloc(c->lebsize). verifypkcs7signature() -> pkcs7parsemessage() -> asn1berdecoder() 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 ubifsreadsuperblock() before the signature is cryptographically checked.

snod->len is guaranteed to be >= UBIFSSIGNODESZ by the node scanner (c->ranges[UBIFSSIGNODE].minlen == UBIFSSIGNODESZ), 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.

Event History

Sep 11, 2026
CVE Published
via MITRE·07:46 PM
Data Sourced
via MITRE·07:46 PM
Description

Frequently Asked Questions

1

What must an attacker control to trigger this issue?

The attacker must be able to cause the system to mount a crafted UBIFS image containing a manipulated signature node length. The length value is taken directly from the mounted image.

2

Does the signature need to pass cryptographic verification?

No. The malformed length reaches PKCS#7 and ASN.1 parsing during superblock processing before the signature is cryptographically checked.

3

When in the mount process is the vulnerable path reached?

The path is reached through ubifs_read_superblock() while processing the mounted image. The inflated signature length can cause parsing code to read beyond the vmalloc allocation used for the UBIFS buffer.

4

How much can the declared signature payload exceed the data available in the node?

The incorrect check can accept a declared length up to twice UBIFS_SIG_NODE_SZ larger than the node actually contains. UBIFS_SIG_NODE_SZ is 64 bytes, so the excess can be up to 128 bytes.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203