IM
IronMonkey Threat Research

CVE-2024-46744 HIGH

Published: 2024-09-18 | Last Modified: 2026-05-12 | Status: Modified

Description

In the Linux kernel, the following vulnerability has been resolved: Squashfs: sanity check symbolic link size Syzkiller reports a "KMSAN: uninit-value in pick_link" bug. This is caused by an uninitialised page, which is ultimately caused by a corrupted symbolic link size read from disk. The reason why the corrupted symlink size causes an uninitialised page is due to the following sequence of events: 1. squashfs_read_inode() is called to read the symbolic link from disk. This assigns the corrupted value 3875536935 to inode->i_size. 2. Later squashfs_symlink_read_folio() is called, which assigns this corrupted value to the length variable, which being a signed int, overflows producing a negative number. 3. The following loop that fills in the page contents checks that the copied bytes is less than length, which being negative means the loop is skipped, producing an uninitialised page. This patch adds a sanity check which checks that the symbolic link size is not larger than expected. -- V2: fix spelling mistake.

Additional Descriptions (1)

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: Squashfs: comprobación de la integridad del tamaño del enlace simbólico Syzkiller informa de un error "KMSAN: uninit-value in pick_link". Esto se debe a una página no inicializada, que en última instancia se debe a un tamaño de enlace simbólico dañado leído desde el disco. La razón por la que el tamaño de enlace simbólico dañado provoca una página no inicializada se debe a la siguiente secuencia de eventos: 1. Se llama a squashfs_read_inode() para leer el enlace simbólico desde el disco. Esto asigna el valor dañado 3875536935 a inode->i_size. 2. Más tarde se llama a squashfs_symlink_read_folio(), que asigna este valor dañado a la variable length, que, al ser un int con signo, se desborda produciendo un número negativo. 3. El siguiente bucle que rellena el contenido de la página comprueba que los bytes copiados sean menores que length, que, al ser negativo, significa que se omite el bucle, lo que produce una página no inicializada. Este parche agrega una verificación de cordura que verifica que el tamaño del enlace simbólico no sea mayor al esperado. -- V2: corrige error ortográfico.

CVSS Metrics

Base Score: 7.8 (HIGH)

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Attack VectorLOCAL
Attack ComplexityLOW
Privileges RequiredLOW
User InteractionNONE
ScopeUNCHANGED
Confidentiality ImpactHIGH
Integrity ImpactHIGH
Availability ImpactHIGH

Source: [email protected]

Type: Primary

Exploitability Score: 1.8

Impact Score: 5.9

Weaknesses

Source Type Description
[email protected] Primary
en CWE-59

Affected Products

Vendor Product Version Update Type
linux linux_kernel * <built-in method update of dict object at 0x7fd3694e3540> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd3844278c0> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd38468a680> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd36a6d2000> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd3694e1040> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd36b3f3540> Operating System
linux linux_kernel * <built-in method update of dict object at 0x7fd36b3f3100> Operating System
linux linux_kernel 6.11 <built-in method update of dict object at 0x7fd360695b00> Operating System
linux linux_kernel 6.11 <built-in method update of dict object at 0x7fd36b3f01c0> Operating System
linux linux_kernel 6.11 <built-in method update of dict object at 0x7fd3694e3200> Operating System

Affected Configurations

Operator: OR

Vulnerable CPE
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*
Yes cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*

References