Linux: exec: do_close_on_exec() before taking exec_update_lock
What fixes it
- 955973fff4a36d39a848b00cac1706863f568fe1LinuxCVE List
- 550feab5b01000ab314868b62211fb3ddfd600e8LinuxCVE List
- 5aacc19ba2b1faf84c4a2f2cf9a1784e03d1ff38LinuxCVE List
- 3feb4020bfb7ccf0d347f27051639d25e19cd65dLinuxCVE List
- 0d86cd6b709c39216e6ee5ea8f0fc4242bbb2b53LinuxCVE List
- 19ddef61ee0a49782a60f8f497e50597ad5de2daLinuxCVE List
Show all 14 fixed versions
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:
exec: do_close_on_exec() before taking exec_update_lock
do_close_on_exec() currently happens while holding the exec_update_lock, which is used in a lot of places that access process state to synchronize access checks. I recently added another such use of exec_update_lock, causing a regression.
do_close_on_exec() can block waiting for a reply from a filesystem. That means a hung filesystem can block codepaths that use exec_update_lock; and it also means that a FUSE filesystem which attempts to inspect the calling process can deadlock.
To avoid such problems, move do_close_on_exec() before the exec_update_lock is taken, but after the FD table has been copied if necessary.
I have looked through all the calls between the old and new position of the do_close_on_exec() call; there seems to be no file descriptor table access in between.
Text from CVE List
Affected versions 26
- Linuxaffected: ae1e630bcaac739f625822078edbaea98366930d before 955973fff4a36d39a848b00cac1706863f568fe1CVE List
- Linuxaffected: d54f14655fd7d7b293698a8b6918563c4c0465e7 before 550feab5b01000ab314868b62211fb3ddfd600e8CVE List
- Linuxaffected: bb43679356f1f2a4c6b1c88aec4f021e5b5c74e9 before 5aacc19ba2b1faf84c4a2f2cf9a1784e03d1ff38CVE List
- Linuxaffected: 7456ae990a9738962b33146916fabca62ae3d4e0 before 3feb4020bfb7ccf0d347f27051639d25e19cd65dCVE List
- Linuxaffected: 4bfe8c481846cee52473a2f7d7b30ee8e6749fc4 before 0d86cd6b709c39216e6ee5ea8f0fc4242bbb2b53CVE List
- Linuxaffected: f9b4b03ccc9c69bf7f7298d4559906ebea7143b3 before 19ddef61ee0a49782a60f8f497e50597ad5de2daCVE List
- Linuxaffected: 6650527444dadc63d84aa939d14ecba4fadb2f69 before 63be3d8511bdafa095cd14a393cbf3c58dbbb928CVE List
- Linuxaffected: 6650527444dadc63d84aa939d14ecba4fadb2f69 before e780259b54e618ceb4763fbc21314acf3565e813CVE List
- Linuxaffected: c1cfd63326f5d09999134e9052c353faf738286eCVE List
- Linuxaffected: 5.10.261 before 5.10.271CVE List
- Linuxaffected: 5.15.212 before 5.15.222CVE List
- Linuxaffected: 6.1.178 before 6.1.189CVE List
- Linuxaffected: 6.6.145 before 6.6.158CVE List
- Linuxaffected: 6.12.97 before 6.12.111CVE List
- Linuxaffected: 6.18.40 before 6.18.53CVE List
- Linuxaffected: 7.1.4 before 7.2CVE List
- Linuxaffected: 7.2CVE List
- Linuxunaffected: all versions before 7.2CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/955973fff4a36d39a848b00cac1706863f568fe1Referencevia CVE List
- git.kernel.org/stable/c/550feab5b01000ab314868b62211fb3ddfd600e8Referencevia CVE List
- git.kernel.org/stable/c/5aacc19ba2b1faf84c4a2f2cf9a1784e03d1ff38Referencevia CVE List
- git.kernel.org/stable/c/3feb4020bfb7ccf0d347f27051639d25e19cd65dReferencevia CVE List
- git.kernel.org/stable/c/0d86cd6b709c39216e6ee5ea8f0fc4242bbb2b53Referencevia CVE List
- git.kernel.org/stable/c/19ddef61ee0a49782a60f8f497e50597ad5de2daReferencevia CVE List
- git.kernel.org/stable/c/63be3d8511bdafa095cd14a393cbf3c58dbbb928Referencevia CVE List
- git.kernel.org/stable/c/e780259b54e618ceb4763fbc21314acf3565e813Referencevia CVE List