CVE-2023-53089

Source
https://nvd.nist.gov/vuln/detail/CVE-2023-53089
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53089.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2023-53089
Related
Published
2025-05-02T16:15:27Z
Modified
2025-05-05T22:59:14.947958Z
Summary
[none]
Details

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

ext4: fix task hung in ext4xattrdelete_inode

Syzbot reported a hung task problem:

INFO: task syz-executor232:5073 blocked for more than 143 seconds. Not tainted 6.2.0-rc2-syzkaller-00024-g512dee0c00ad #0 "echo 0 > /proc/sys/kernel/hungtasktimeoutsecs" disables this message. task:syz-exec232 state:D stack:21024 pid:5073 ppid:5072 flags:0x00004004 Call Trace: <TASK> contextswitch kernel/sched/core.c:5244 [inline] _schedule+0x995/0xe20 kernel/sched/core.c:6555 schedule+0xcb/0x190 kernel/sched/core.c:6631 _waitonfreeinginode fs/inode.c:2196 [inline] findinodefast+0x35a/0x4c0 fs/inode.c:950 igetlocked+0xb1/0x830 fs/inode.c:1273 _ext4iget+0x22e/0x3ed0 fs/ext4/inode.c:4861 ext4xattrinodeiget+0x68/0x4e0 fs/ext4/xattr.c:389 ext4xattrinodedecrefall+0x1a7/0xe50 fs/ext4/xattr.c:1148 ext4xattrdeleteinode+0xb04/0xcd0 fs/ext4/xattr.c:2880 ext4evictinode+0xd7c/0x10b0 fs/ext4/inode.c:296 evict+0x2a4/0x620 fs/inode.c:664 ext4orphancleanup+0xb60/0x1340 fs/ext4/orphan.c:474 _ext4fillsuper fs/ext4/super.c:5516 [inline] ext4fillsuper+0x81cd/0x8700 fs/ext4/super.c:5644 gettreebdev+0x400/0x620 fs/super.c:1282 vfsgettree+0x88/0x270 fs/super.c:1489 donewmount+0x289/0xad0 fs/namespace.c:3145 domount fs/namespace.c:3488 [inline] _dosysmount fs/namespace.c:3697 [inline] _sesysmount+0x2d3/0x3c0 fs/namespace.c:3674 dosyscallx64 arch/x86/entry/common.c:50 [inline] dosyscall64+0x3d/0xb0 arch/x86/entry/common.c:80 entrySYSCALL64afterhwframe+0x63/0xcd RIP: 0033:0x7fa5406fd5ea RSP: 002b:00007ffc7232f968 EFLAGS: 00000202 ORIGRAX: 00000000000000a5 RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fa5406fd5ea RDX: 0000000020000440 RSI: 0000000020000000 RDI: 00007ffc7232f970 RBP: 00007ffc7232f970 R08: 00007ffc7232f9b0 R09: 0000000000000432 R10: 0000000000804a03 R11: 0000000000000202 R12: 0000000000000004 R13: 0000555556a7a2c0 R14: 00007ffc7232f9b0 R15: 0000000000000000

</TASK>

The problem is that the inode contains an xattr entry with eainum of 15 when cleaning up an orphan inode <15>. When evict inode <15>, the reference counting of the corresponding EA inode is decreased. When EA inode <15> is found by findinodefast() in _ext4iget(), it is found that the EA inode holds the IFREEING flag and waits for the EA inode to complete deletion. As a result, when inode <15> is being deleted, we wait for inode <15> to complete the deletion, resulting in an infinite loop and triggering Hung Task. To solve this problem, we only need to check whether the ino of EA inode and parent is the same before getting EA inode.

References

Affected packages

Debian:11 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.10.178-1

Affected versions

5.*

5.10.46-4
5.10.46-5
5.10.70-1~bpo10+1
5.10.70-1
5.10.84-1
5.10.92-1~bpo10+1
5.10.92-1
5.10.92-2
5.10.103-1~bpo10+1
5.10.103-1
5.10.106-1
5.10.113-1
5.10.120-1~bpo10+1
5.10.120-1
5.10.127-1
5.10.127-2~bpo10+1
5.10.127-2
5.10.136-1
5.10.140-1
5.10.148-1
5.10.149-1
5.10.149-2
5.10.158-1
5.10.158-2
5.10.162-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}

Debian:12 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
6.1.25-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}

Debian:13 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
6.1.25-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}