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
Affected Products
Linux