Linux: dm: fix reading free memory in do_resume
What fixes it
- 281f68d6cf8acb2547ebf0a849b8beae8fb0ec3cLinuxCVE List
- 2c96d1a8324e7736e0f8a5790ecf39d36c2c4a82LinuxCVE List
- 301691c32b8ad023e3316d5dbb6a8cf52d47b0dcLinuxCVE List
- 6.6.160LinuxCVE List
- 6.12.113LinuxCVE List
- 6.18.57LinuxCVE List
Show all 7 fixed versions
- 7.2.11LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
dm: fix reading free memory in do_resume
When do_resume calls dm_table_get_mode(new_map), the call is done without holding any locks (it only holds a reference to the md). It may be possible that another concurrent ioctl on the same device will swap table after dm_swap_table and before dm_table_get_mode. In this case, dm_table_get_mode(new_map) reads freed memory.
This race condition was triggered by syzbot.
This commit fixes the race by reading mode of the new table before dm_swap_table. Note that new_map is also passed to dm_ima_need_measure, but this function doesn't attempt to dereference it, so this call should be safe.
Note that this is not a security bug because only root can trigger it and the commonly used tools such as lvm or cryptsetup do not call the ioctls concurrently, so that they can't trigger it acceidentally.
Text from CVE List
Affected versions 14
- Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 281f68d6cf8acb2547ebf0a849b8beae8fb0ec3cCVE List
- Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 2c96d1a8324e7736e0f8a5790ecf39d36c2c4a82CVE List
- Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before e3bf232c913b7e0103d323f15e6342d37cb1b357CVE List
- Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 301691c32b8ad023e3316d5dbb6a8cf52d47b0dcCVE List
- Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before c9417c1c5269e2bd0570fbe53e4ec03a8d31f008CVE List
- Linuxaffected: all versions before 6.6.160CVE List
- Linuxaffected: all versions before 6.12.113CVE List
- Linuxaffected: all versions before 6.18.57CVE List
- Linuxaffected: all versions before 7.2.11CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.113 through 6.12.*CVE List
- Linuxunaffected: 6.18.57 through 6.18.*CVE List
- Linuxunaffected: 7.2.11 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/281f68d6cf8acb2547ebf0a849b8beae8fb0ec3cReferencevia CVE List
- git.kernel.org/stable/c/2c96d1a8324e7736e0f8a5790ecf39d36c2c4a82Referencevia CVE List
- git.kernel.org/stable/c/e3bf232c913b7e0103d323f15e6342d37cb1b357Referencevia CVE List
- git.kernel.org/stable/c/301691c32b8ad023e3316d5dbb6a8cf52d47b0dcReferencevia CVE List
- git.kernel.org/stable/c/c9417c1c5269e2bd0570fbe53e4ec03a8d31f008Referencevia CVE List