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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2021-46997— arm64: entry: always set GIC_PRIO_PSR_I_SET during entry

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 存在安全漏洞,该漏洞源于不会在异常入口序列中设置 GIC_PRIO_PSR_I_SET。

AI Predicted 5.5 Difficulty: Theoretical EPSS 0.25% · P15

Possible ATT&CK Techniques 1 AI

T1562.001

Affected Version Matrix 10

VendorProduct Version RangeStatus
Linux Linux 23529049c68423820487304f244144e0d576e85a< 51524fa8b5f7b879ba569227738375d283b79382 affected
23529049c68423820487304f244144e0d576e85a< e67a83f078005461b59b4c776e6b5addd11725fa affected
23529049c68423820487304f244144e0d576e85a< d8d52005f57bbb4a4ec02f647e2555d327135c68 affected
23529049c68423820487304f244144e0d576e85a< 4d6a38da8e79e94cbd1344aa90876f0f805db705 affected
5.10 affected
< 5.10 unaffected
5.10.38≤ 5.10.* unaffected
5.11.22≤ 5.11.* unaffected
… +2 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2021-46997

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
arm64: entry: always set GIC_PRIO_PSR_I_SET during entry
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: arm64: entry: always set GIC_PRIO_PSR_I_SET during entry Zenghui reports that booting a kernel with "irqchip.gicv3_pseudo_nmi=1" on the command line hits a warning during kernel entry, due to the way we manipulate the PMR. Early in the entry sequence, we call lockdep_hardirqs_off() to inform lockdep that interrupts have been masked (as the HW sets DAIF wqhen entering an exception). Architecturally PMR_EL1 is not affected by exception entry, and we don't set GIC_PRIO_PSR_I_SET in the PMR early in the exception entry sequence, so early in exception entry the PMR can indicate that interrupts are unmasked even though they are masked by DAIF. If DEBUG_LOCKDEP is selected, lockdep_hardirqs_off() will check that interrupts are masked, before we set GIC_PRIO_PSR_I_SET in any of the exception entry paths, and hence lockdep_hardirqs_off() will WARN() that something is amiss. We can avoid this by consistently setting GIC_PRIO_PSR_I_SET during exception entry so that kernel code sees a consistent environment. We must also update local_daif_inherit() to undo this, as currently only touches DAIF. For other paths, local_daif_restore() will update both DAIF and the PMR. With this done, we can remove the existing special cases which set this later in the entry code. We always use (GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET) for consistency with local_daif_save(), as this will warn if it ever encounters (GIC_PRIO_IRQOFF | GIC_PRIO_PSR_I_SET), and never sets this itself. This matches the gic_prio_kentry_setup that we have to retain for ret_to_user. The original splat from Zenghui's report was: | DEBUG_LOCKS_WARN_ON(!irqs_disabled()) | WARNING: CPU: 3 PID: 125 at kernel/locking/lockdep.c:4258 lockdep_hardirqs_off+0xd4/0xe8 | Modules linked in: | CPU: 3 PID: 125 Comm: modprobe Tainted: G W 5.12.0-rc8+ #463 | Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015 | pstate: 604003c5 (nZCv DAIF +PAN -UAO -TCO BTYPE=--) | pc : lockdep_hardirqs_off+0xd4/0xe8 | lr : lockdep_hardirqs_off+0xd4/0xe8 | sp : ffff80002a39bad0 | pmr_save: 000000e0 | x29: ffff80002a39bad0 x28: ffff0000de214bc0 | x27: ffff0000de1c0400 x26: 000000000049b328 | x25: 0000000000406f30 x24: ffff0000de1c00a0 | x23: 0000000020400005 x22: ffff8000105f747c | x21: 0000000096000044 x20: 0000000000498ef9 | x19: ffff80002a39bc88 x18: ffffffffffffffff | x17: 0000000000000000 x16: ffff800011c61eb0 | x15: ffff800011700a88 x14: 0720072007200720 | x13: 0720072007200720 x12: 0720072007200720 | x11: 0720072007200720 x10: 0720072007200720 | x9 : ffff80002a39bad0 x8 : ffff80002a39bad0 | x7 : ffff8000119f0800 x6 : c0000000ffff7fff | x5 : ffff8000119f07a8 x4 : 0000000000000001 | x3 : 9bcdab23f2432800 x2 : ffff800011730538 | x1 : 9bcdab23f2432800 x0 : 0000000000000000 | Call trace: | lockdep_hardirqs_off+0xd4/0xe8 | enter_from_kernel_mode.isra.5+0x7c/0xa8 | el1_abort+0x24/0x100 | el1_sync_handler+0x80/0xd0 | el1_sync+0x6c/0x100 | __arch_clear_user+0xc/0x90 | load_elf_binary+0x9fc/0x1450 | bprm_execve+0x404/0x880 | kernel_execve+0x180/0x188 | call_usermodehelper_exec_async+0xdc/0x158 | ret_from_fork+0x10/0x18
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 存在安全漏洞,该漏洞源于不会在异常入口序列中设置 GIC_PRIO_PSR_I_SET。
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 23529049c68423820487304f244144e0d576e85a ~ 51524fa8b5f7b879ba569227738375d283b79382 -
Linux Linux 5.10 -

II. Public POCs for CVE-2021-46997

# 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-46997

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

Other References for CVE-2021-46997 (4)

Same Patch Batch · Linux · 2024-02-28 · 86 CVEs total

CVE-2021-47013 9.8 CRITICAL net:emac/emac-mac: Fix a use after free in emac_mac_tx_buf_send
CVE-2021-46999 9.8 CRITICAL sctp: do asoc update earlier in sctp_sf_do_dupcook_a
CVE-2021-47036 9.8 CRITICAL udp: skip L4 aggregation for UDP tunnel packets
CVE-2021-47017 8.8 HIGH ath10k: Fix a use after free in ath10k_htc_send_bundle
CVE-2021-47035 8.8 HIGH iommu/vt-d: Remove WO permissions on second-level paging entries
CVE-2021-47049 8.4 HIGH Drivers: hv: vmbus: Use after free in __vmbus_open()
CVE-2021-47014 7.8 HIGH net/sched: act_ct: fix wild memory access when clearing fragments
CVE-2020-36785 7.8 HIGH media: atomisp: Fix use after free in atomisp_alloc_css_stat_bufs()
CVE-2021-47040 7.8 HIGH io_uring: fix overflows checks in provide buffers
CVE-2021-46998 7.8 HIGH ethernet:enic: Fix a use after free bug in enic_hard_start_xmit
CVE-2021-47048 7.8 HIGH spi: spi-zynqmp-gqspi: fix use-after-free in zynqmp_qspi_exec_op
CVE-2021-46984 7.8 HIGH kyber: fix out of bounds access when preempted
CVE-2021-46993 7.8 HIGH sched: Fix out-of-bound access in uclamp
CVE-2021-46977 7.8 HIGH KVM: VMX: Disable preemption when probing user return MSRs
CVE-2021-47012 7.8 HIGH RDMA/siw: Fix a use after free in siw_alloc_mr
CVE-2021-47011 7.8 HIGH mm: memcontrol: slab: fix obtain a reference to a freeing memcg
CVE-2021-46992 7.8 HIGH netfilter: nftables: avoid overflows in nft_hash_buckets()
CVE-2020-36787 7.8 HIGH media: aspeed: fix clock handling logic
CVE-2021-47001 7.5 HIGH xprtrdma: Fix cwnd update ordering
CVE-2021-46983 7.5 HIGH nvmet-rdma: Fix NULL deref when SEND is completed with error

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

IV. Related Vulnerabilities

V. Comments for CVE-2021-46997

No comments yet


Leave a comment