Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2021-47553— sched/scs: Reset task stack state in bringup_cpu()

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于bringup_cpu()存在安全漏洞。

AI Predicted 3.3 Difficulty: Moderate EPSS 0.26% · P17

Possible ATT&CK Techniques 1 AI

T1615 · Group Policy Discovery

Affected Version Matrix 13

VendorProduct Version RangeStatus
Linux Linux 3c51d82d0b7862d7d246016c74b4390fb1fa1f11< e6ee7abd6bfe559ad9989004b34c320fd638c526 affected
f1a0a376ca0c4ef1fc3d24e3e502acbb5b795674< 229c555260cb9c1ccdab861e16f0410f1718f302 affected
f1a0a376ca0c4ef1fc3d24e3e502acbb5b795674< dce1ca0525bfdc8a69a9343bc714fbc19a2f04b3 affected
1cb358b3ac1bb43aa8c4283830a84216dda65d39 affected
24c79a7e54ccfa29fb8cbf7ed8d1e48ff1ec6e3d affected
5.10.50< 5.10.83 affected
5.12.17< 5.13 affected
5.13.2< 5.14 affected
… +5 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2021-47553

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
sched/scs: Reset task stack state in bringup_cpu()
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: sched/scs: Reset task stack state in bringup_cpu() To hot unplug a CPU, the idle task on that CPU calls a few layers of C code before finally leaving the kernel. When KASAN is in use, poisoned shadow is left around for each of the active stack frames, and when shadow call stacks are in use. When shadow call stacks (SCS) are in use the task's saved SCS SP is left pointing at an arbitrary point within the task's shadow call stack. When a CPU is offlined than onlined back into the kernel, this stale state can adversely affect execution. Stale KASAN shadow can alias new stackframes and result in bogus KASAN warnings. A stale SCS SP is effectively a memory leak, and prevents a portion of the shadow call stack being used. Across a number of hotplug cycles the idle task's entire shadow call stack can become unusable. We previously fixed the KASAN issue in commit: e1b77c92981a5222 ("sched/kasan: remove stale KASAN poison after hotplug") ... by removing any stale KASAN stack poison immediately prior to onlining a CPU. Subsequently in commit: f1a0a376ca0c4ef1 ("sched/core: Initialize the idle task with preemption disabled") ... the refactoring left the KASAN and SCS cleanup in one-time idle thread initialization code rather than something invoked prior to each CPU being onlined, breaking both as above. We fixed SCS (but not KASAN) in commit: 63acd42c0d4942f7 ("sched/scs: Reset the shadow stack when idle_task_exit") ... but as this runs in the context of the idle task being offlined it's potentially fragile. To fix these consistently and more robustly, reset the SCS SP and KASAN shadow of a CPU's idle task immediately before we online that CPU in bringup_cpu(). This ensures the idle task always has a consistent state when it is running, and removes the need to so so when exiting an idle task. Whenever any thread is created, dup_task_struct() will give the task a stack which is free of KASAN shadow, and initialize the task's SCS SP, so there's no need to specially initialize either for idle thread within init_idle(), as this was only necessary to handle hotplug cycles. I've tested this on arm64 with: * gcc 11.1.0, defconfig +KASAN_INLINE, KASAN_STACK * clang 12.0.0, defconfig +KASAN_INLINE, KASAN_STACK, SHADOW_CALL_STACK ... offlining and onlining CPUS with: | while true; do | for C in /sys/devices/system/cpu/cpu*/online; do | echo 0 > $C; | echo 1 > $C; | done | done
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于bringup_cpu()存在安全漏洞。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 3c51d82d0b7862d7d246016c74b4390fb1fa1f11 ~ e6ee7abd6bfe559ad9989004b34c320fd638c526 -
Linux Linux 5.14 -

II. Public POCs for CVE-2021-47553

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2021-47553

请登录查看更多情报信息。

Other References for CVE-2021-47553 (3)

Same Patch Batch · Linux · 2024-05-24 · 72 CVEs total

CVE-2021-47544 9.8 CRITICAL tcp: fix page frag corruption on page fault
CVE-2021-47506 9.8 CRITICAL nfsd: fix use-after-free due to delegation race
CVE-2021-47536 9.8 CRITICAL net/smc: fix wrong list_del in smc_lgr_cleanup_early
CVE-2021-47520 8.8 HIGH can: pch_can: pch_can_rx_normal: fix use after free
CVE-2023-52880 7.8 HIGH tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc
CVE-2021-47512 7.8 HIGH net/sched: fq_pie: prevent dismantle issue
CVE-2021-47505 7.8 HIGH aio: fix use-after-free due to missing POLLFREE handling
CVE-2021-47502 7.8 HIGH ASoC: codecs: wcd934x: handle channel mappping list correctly
CVE-2021-47517 7.8 HIGH ethtool: do not perform operations on net devices being unregistered
CVE-2021-47533 7.8 HIGH drm/vc4: kms: Clear the HVS FIFO commit pointer once done
CVE-2021-47500 7.8 HIGH iio: mma8452: Fix trigger reference couting
CVE-2021-47541 7.8 HIGH net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources()
CVE-2021-47552 7.8 HIGH blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and disk_release()
CVE-2021-47551 7.8 HIGH drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again
CVE-2021-47555 7.8 HIGH net: vlan: fix underflow for the real_dev refcnt
CVE-2021-47561 7.8 HIGH i2c: virtio: disable timeout handling
CVE-2021-47535 7.8 HIGH drm/msm/a6xx: Allocate enough space for GMU registers
CVE-2021-47559 7.5 HIGH net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk()
CVE-2021-47515 7.5 HIGH seg6: fix the iif in the IPv6 socket control block
CVE-2021-47556 ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce()

Showing top 20 of 72 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2021-47553

No comments yet


Leave a comment