CVE-2024-26780

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-26780
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-26780.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-26780
Downstream
Related
Published
2024-04-04T08:20:15.120Z
Modified
2025-11-30T14:42:29.414336Z
Summary
af_unix: Fix task hung while purging oob_skb in GC.
Details

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

afunix: Fix task hung while purging oobskb in GC.

syzbot reported a task hung; at the same time, GC was looping infinitely in listforeachentrysafe() for OOB skb. [0]

syzbot demonstrated that the listforeachentrysafe() was not actually safe in this case.

A single skb could have references for multiple sockets. If we free such a skb in the listforeachentrysafe(), the current and next sockets could be unlinked in a single iteration.

unixnotinflight() uses listdelinit() to unlink the socket, so the prefetched next socket forms a loop itself and listforeachentry_safe() never stops.

Here, we must use while() and make sure we always fetch the first socket.

NMI backtrace for cpu 1 CPU: 1 PID: 5065 Comm: syz-executor236 Not tainted 6.8.0-rc3-syzkaller-00136-g1f719a2f3fa6 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024 RIP: 0010:preemptcount arch/x86/include/asm/preempt.h:26 [inline] RIP: 0010:checkkcovmode kernel/kcov.c:173 [inline] RIP: 0010:sanitizercovtracepc+0xd/0x60 kernel/kcov.c:207 Code: cc cc cc cc 66 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 65 48 8b 14 25 40 c2 03 00 <65> 8b 05 b4 7c 78 7e a9 00 01 ff 00 48 8b 34 24 74 0f f6 c4 01 74 RSP: 0018:ffffc900033efa58 EFLAGS: 00000283 RAX: ffff88807b077800 RBX: ffff88807b077800 RCX: 1ffffffff27b1189 RDX: ffff88802a5a3b80 RSI: ffffffff8968488d RDI: ffff88807b077f70 RBP: ffffc900033efbb0 R08: 0000000000000001 R09: fffffbfff27a900c R10: ffffffff93d48067 R11: ffffffff8ae000eb R12: ffff88807b077800 R13: dffffc0000000000 R14: ffff88807b077e40 R15: 0000000000000001 FS: 0000000000000000(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000564f4fc1e3a8 CR3: 000000000d57a000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <NMI> </NMI> <TASK> unixgc+0x563/0x13b0 net/unix/garbage.c:319 unixreleasesock+0xa93/0xf80 net/unix/afunix.c:683 unixrelease+0x91/0xf0 net/unix/afunix.c:1064 _sockrelease+0xb0/0x270 net/socket.c:659 sockclose+0x1c/0x30 net/socket.c:1421 _fput+0x270/0xb80 fs/filetable.c:376 taskworkrun+0x14f/0x250 kernel/taskwork.c:180 exittaskwork include/linux/taskwork.h:38 [inline] doexit+0xa8a/0x2ad0 kernel/exit.c:871 dogroupexit+0xd4/0x2a0 kernel/exit.c:1020 _dosysexitgroup kernel/exit.c:1031 [inline] _sesysexitgroup kernel/exit.c:1029 [inline] _x64sysexitgroup+0x3e/0x50 kernel/exit.c:1029 dosyscallx64 arch/x86/entry/common.c:52 [inline] dosyscall64+0xd5/0x270 arch/x86/entry/common.c:83 entrySYSCALL64afterhwframe+0x6f/0x77 RIP: 0033:0x7f9d6cbdac09 Code: Unable to access opcode bytes at 0x7f9d6cbdabdf. RSP: 002b:00007fff5952feb8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f9d6cbdac09 RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000 RBP: 00007f9d6cc552b0 R08: ffffffffffffffb8 R09: 0000000000000006 R10: 0000000000000006 R11: 0000000000000246 R12: 00007f9d6cc552b0 R13: 0000000000000000 R14: 00007f9d6cc55d00 R15: 00007f9d6cbabe70 </TASK>

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/26xxx/CVE-2024-26780.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
4fe505c63aa3273135a57597fda761e9aecc7668
Fixed
36f7371de977f805750748e80279be7e370df85c
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
e0e09186d8821ad59806115d347ea32efa43ca4b
Fixed
2a3d40b4025fcfe51b04924979f1653993b17669
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
b74aa9ce13d02b7fd37c5325b99854f91b9b4276
Fixed
69e0f04460f4037e01e29f0d9675544f62aafca3
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
82ae47c5c3a6b27fdc0f9e83c1499cb439c56140
Fixed
cb8890318dde26fc89c6ea67d6e9070ab50b6e91
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1279f9d9dec2d7462823a18c29ad61359e0a007d
Fixed
25236c91b5ab4a26a56ba2e79b8060cf4e047839

Affected versions

v6.*

v6.1.78
v6.1.79
v6.1.80
v6.6.17
v6.6.18
v6.6.19
v6.6.20
v6.7.5
v6.7.6
v6.7.7
v6.7.8
v6.8-rc3

Database specific

source

"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-26780.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.1.78
Fixed
6.1.81
Type
ECOSYSTEM
Events
Introduced
6.6.17
Fixed
6.6.21
Type
ECOSYSTEM
Events
Introduced
6.7.5
Fixed
6.7.9

Database specific

source

"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-26780.json"