PT-2026-90436 · Linux · Linux

CVE-2026-89720

·

Published

2026-09-11

·

Updated

2026-09-11

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
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.
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-89720

Affected Products

Linux