CVE-2024-26590: erofs: fix inconsistent per-file compression format

Description

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

erofs: fix inconsistent per-file compression format

EROFS can select compression algorithms on a per-file basis, and each
per-file compression algorithm needs to be marked in the on-disk
superblock for initialization.

However, syzkaller can generate inconsistent crafted images that use
an unsupported algorithmtype for specific inodes, e.g. use MicroLZMA
algorithmtype even it's not set in `sbi->available_compr_algs`. This
can lead to an unexpected "BUG: kernel NULL pointer dereference" if
the corresponding decompressor isn't built-in.

Fix this by checking against `sbi->available_compr_algs` for each
m_algorithmformat request. Incorrect !erofs_sb_has_compr_cfgs preset
bitmap is now fixed together since it was harmless previously.

Classification

CVE ID: CVE-2024-26590

Affected Products

Vendor: Linux

Product: Linux

Exploit Prediction Scoring System (EPSS)

EPSS Score: 0.04% (probability of being exploited)

EPSS Percentile: 5.06% (scored less or equal to compared to others)

EPSS Date: 2025-02-03 (when was this score calculated)

References

https://git.kernel.org/stable/c/47467e04816cb297905c0f09bc2d11ef865942d9
https://git.kernel.org/stable/c/823ba1d2106019ddf195287ba53057aee33cf724
https://git.kernel.org/stable/c/eed24b816e50c6cd18cbee0ff0d7218c8fced199
https://git.kernel.org/stable/c/118a8cf504d7dfa519562d000f423ee3ca75d2c4

Timeline