In the Linux kernel, the following vulnerability has been resolved: fs: ntfs3: check return value of indx_find to avoid infinite loop We found an infinite loop bug in the ntfs3 file system that can lead to a Denial-of-Service (DoS) condition. A malformed dentry in the ntfs3 filesystem can cause the kernel to hang during the lookup operations. By setting the HAS_SUB_NODE flag in an INDEX_ENTRY within a directory's INDEX_ALLOCATION block and manipulating the VCN pointer, an attacker can cause the indx_find() function to repeatedly read the same block, allocating 4 KB of memory each time. The kernel lacks VCN loop detection and depth limits, causing memory exhaustion and an OOM crash. This patch adds a return value check for fnd_push() to prevent a memory exhaustion vulnerability caused by infinite loops. When the index exceeds the size of the fnd->nodes array, fnd_push() returns -EINVAL. The indx_find() function checks this return value and stops processing, preventing further memory allocation.
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: fs: ntfs3: verificar el valor de retorno de indx_find para evitar un bucle infinito Hemos encontrado un error de bucle infinito en el sistema de archivos ntfs3 que puede conducir a una condición de Denegación de Servicio (DoS). Una entrada de directorio (dentry) malformada en el sistema de archivos ntfs3 puede hacer que el kernel se cuelgue durante las operaciones de búsqueda. Al establecer la bandera HAS_SUB_NODE en una INDEX_ENTRY dentro del bloque INDEX_ALLOCATION de un directorio y manipular el puntero VCN, un atacante puede hacer que la función indx_find() lea repetidamente el mismo bloque, asignando 4 KB de memoria cada vez. El kernel carece de detección de bucles VCN y límites de profundidad, causando agotamiento de memoria y un fallo OOM. Este parche añade una verificación del valor de retorno para fnd_push() para prevenir una vulnerabilidad de agotamiento de memoria causada por bucles infinitos. Cuando el índice excede el tamaño del array fnd->nodes, fnd_push() devuelve -EINVAL. La función indx_find() verifica este valor de retorno y detiene el procesamiento, evitando una mayor asignación de memoria.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
| Attack Vector | LOCAL |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | NONE |
| Integrity Impact | NONE |
| Availability Impact | HIGH |
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
CWE-835
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bfc334ac0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc60eb00> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc60c480> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc60e180> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bfc336e80> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bfc335f00> | Operating System |
| linux | linux_kernel | 5.15 | <built-in method update of dict object at 0x702bdc60ee40> | Operating System |
| 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:5.15:-:*:*:*:*:*:* |