CVE-2023-54099

Summary

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

fs: Protect reconfiguration of sb read-write from racing writes

The reconfigure / remount code takes a lot of effort to protect filesystem's reconfiguration code from racing writes on remounting read-only. However during remounting read-only filesystem to read-write mode userspace writes can start immediately once we clear SB_RDONLY flag. This is inconvenient for example for ext4 because we need to do some writes to the filesystem (such as preparation of quota files) before we can take userspace writes so we are clearing SB_RDONLY flag before we are fully ready to accept userpace writes and syzbot has found a way to exploit this [1]. Also as far as I'm reading the code the filesystem remount code was protected from racing writes in the legacy mount path by the mount's MNT_READONLY flag so this is relatively new problem. It is actually fairly easy to protect remount read-write from racing writes using sb->s_readonly_remount flag so let's just do that instead of having to workaround these races in the filesystem code.

[1] https://lore.kernel.org/all/00000000000006a0df05f6667499@google.com/T/

Affected Software

VendorProductVersion RangeStatus
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < 0336b42456e485fda1006b5b411e7372e20fbf03affected
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < 7e4e87ec56aa6d008c64eab31b340a7c452b26ccaffected
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < 0ccfe21949bc9f706a86ee7351b74375c0745757affected
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < 295ef44a2abaf97d7a594b1d4c60d4be3738191faffected
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < 4abda85197ba5d695e6040d580b4b409ce0d3733affected
LinuxLinux8d0347f6c3a9d4953ddd636a31c6584da082e084 < c541dce86c537714b6761a79a969c1623dfa222baffected
LinuxLinux5.1affected
LinuxLinux0 < 5.1unaffected
LinuxLinux5.4.253 <= 5.4.*unaffected
LinuxLinux5.10.190 <= 5.10.*unaffected
LinuxLinux5.15.126 <= 5.15.*unaffected
LinuxLinux6.1.45 <= 6.1.*unaffected
LinuxLinux6.4.10 <= 6.4.*unaffected
LinuxLinux6.5 <= *unaffected

Weaknesses

References