CVE-2024-26981

Updated on 01 May 2024

Severity

7.8 High severity

Details

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

Overview

About vulnerability

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

nilfs2: fix OOB in nilfs_set_de_type

The size of the nilfs_type_by_mode array in the fs/nilfs2/dir.c file is defined as “S_IFMT » S_SHIFT”, but the nilfs_set_de_type() function, which uses this array, specifies the index to read from the array in the same way as “(mode & S_IFMT) » S_SHIFT”.

static void nilfs_set_de_type(struct nilfs_dir_entry *de, struct inode *inode) { umode_t mode = inode->i_mode;

de->file_type = nilfs_type_by_mode[(mode & S_IFMT)»S_SHIFT]; // oob }

However, when the index is determined this way, an out-of-bounds (OOB) error occurs by referring to an index that is 1 larger than the array size when the condition “mode & S_IFMT == S_IFMT” is satisfied. Therefore, a patch to resize the nilfs_type_by_mode array should be applied to prevent OOB errors.

Details

Affected packages:
kernel-uek @ 5.4.17 (+15 more)

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

nilfs2: fix OOB in nilfs_set_de_type

The size of the nilfs_type_by_mode array in the fs/nilfs2/dir.c file is defined as “S_IFMT » S_SHIFT”, but the nilfs_set_de_type() function, which uses this array, specifies the index to read from the array in the same way as “(mode & S_IFMT) » S_SHIFT”.

static void nilfs_set_de_type(struct nilfs_dir_entry *de, struct inode *inode) { umode_t mode = inode->i_mode;

de->file_type = nilfs_type_by_mode[(mode & S_IFMT)»S_SHIFT]; // oob }

However, when the index is determined this way, an out-of-bounds (OOB) error occurs by referring to an index that is 1 larger than the array size when the condition “mode & S_IFMT == S_IFMT” is satisfied. Therefore, a patch to resize the nilfs_type_by_mode array should be applied to prevent OOB errors.

Fixes