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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2021-47041— nvmet-tcp: fix incorrect locking in state_change sk callback

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 存在安全漏洞,该漏洞源于 state_change sk 回调中不正确的锁定。

CVSS 7.5 · High EPSS 0.49% · P40

Possible ATT&CK Techniques 1 AI

T1211 · Exploitation for Stealth

Affected Version Matrix 12

VendorProduct Version RangeStatus
Linux Linux 872d26a391da92ed8f0c0f5cb5fef428067b7f30< 999d606a820c36ae9b9e9611360c8b3d8d4bb777 affected
872d26a391da92ed8f0c0f5cb5fef428067b7f30< 60ade0d56b06537a28884745059b3801c78e03bc affected
872d26a391da92ed8f0c0f5cb5fef428067b7f30< 06beaa1a9f6e501213195e47c30416032fd2bbd5 affected
872d26a391da92ed8f0c0f5cb5fef428067b7f30< 906c538340dde6d891df89fe7dac8eaa724e40da affected
872d26a391da92ed8f0c0f5cb5fef428067b7f30< b5332a9f3f3d884a1b646ce155e664cc558c1722 affected
5.0 affected
< 5.0 unaffected
5.4.119≤ 5.4.* unaffected
… +4 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2021-47041

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
nvmet-tcp: fix incorrect locking in state_change sk callback
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix incorrect locking in state_change sk callback We are not changing anything in the TCP connection state so we should not take a write_lock but rather a read lock. This caused a deadlock when running nvmet-tcp and nvme-tcp on the same system, where state_change callbacks on the host and on the controller side have causal relationship and made lockdep report on this with blktests: ================================ WARNING: inconsistent lock state 5.12.0-rc3 #1 Tainted: G I -------------------------------- inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-R} usage. nvme/1324 [HC0[0]:SC0[0]:HE1:SE1] takes: ffff888363151000 (clock-AF_INET){++-?}-{2:2}, at: nvme_tcp_state_change+0x21/0x150 [nvme_tcp] {IN-SOFTIRQ-W} state was registered at: __lock_acquire+0x79b/0x18d0 lock_acquire+0x1ca/0x480 _raw_write_lock_bh+0x39/0x80 nvmet_tcp_state_change+0x21/0x170 [nvmet_tcp] tcp_fin+0x2a8/0x780 tcp_data_queue+0xf94/0x1f20 tcp_rcv_established+0x6ba/0x1f00 tcp_v4_do_rcv+0x502/0x760 tcp_v4_rcv+0x257e/0x3430 ip_protocol_deliver_rcu+0x69/0x6a0 ip_local_deliver_finish+0x1e2/0x2f0 ip_local_deliver+0x1a2/0x420 ip_rcv+0x4fb/0x6b0 __netif_receive_skb_one_core+0x162/0x1b0 process_backlog+0x1ff/0x770 __napi_poll.constprop.0+0xa9/0x5c0 net_rx_action+0x7b3/0xb30 __do_softirq+0x1f0/0x940 do_softirq+0xa1/0xd0 __local_bh_enable_ip+0xd8/0x100 ip_finish_output2+0x6b7/0x18a0 __ip_queue_xmit+0x706/0x1aa0 __tcp_transmit_skb+0x2068/0x2e20 tcp_write_xmit+0xc9e/0x2bb0 __tcp_push_pending_frames+0x92/0x310 inet_shutdown+0x158/0x300 __nvme_tcp_stop_queue+0x36/0x270 [nvme_tcp] nvme_tcp_stop_queue+0x87/0xb0 [nvme_tcp] nvme_tcp_teardown_admin_queue+0x69/0xe0 [nvme_tcp] nvme_do_delete_ctrl+0x100/0x10c [nvme_core] nvme_sysfs_delete.cold+0x8/0xd [nvme_core] kernfs_fop_write_iter+0x2c7/0x460 new_sync_write+0x36c/0x610 vfs_write+0x5c0/0x870 ksys_write+0xf9/0x1d0 do_syscall_64+0x33/0x40 entry_SYSCALL_64_after_hwframe+0x44/0xae irq event stamp: 10687 hardirqs last enabled at (10687): [<ffffffff9ec376bd>] _raw_spin_unlock_irqrestore+0x2d/0x40 hardirqs last disabled at (10686): [<ffffffff9ec374d8>] _raw_spin_lock_irqsave+0x68/0x90 softirqs last enabled at (10684): [<ffffffff9f000608>] __do_softirq+0x608/0x940 softirqs last disabled at (10649): [<ffffffff9cdedd31>] do_softirq+0xa1/0xd0 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(clock-AF_INET); <Interrupt> lock(clock-AF_INET); *** DEADLOCK *** 5 locks held by nvme/1324: #0: ffff8884a01fe470 (sb_writers#4){.+.+}-{0:0}, at: ksys_write+0xf9/0x1d0 #1: ffff8886e435c090 (&of->mutex){+.+.}-{3:3}, at: kernfs_fop_write_iter+0x216/0x460 #2: ffff888104d90c38 (kn->active#255){++++}-{0:0}, at: kernfs_remove_self+0x22d/0x330 #3: ffff8884634538d0 (&queue->queue_lock){+.+.}-{3:3}, at: nvme_tcp_stop_queue+0x52/0xb0 [nvme_tcp] #4: ffff888363150d30 (sk_lock-AF_INET){+.+.}-{0:0}, at: inet_shutdown+0x59/0x300 stack backtrace: CPU: 26 PID: 1324 Comm: nvme Tainted: G I 5.12.0-rc3 #1 Hardware name: Dell Inc. PowerEdge R640/06NR82, BIOS 2.10.0 11/12/2020 Call Trace: dump_stack+0x93/0xc2 mark_lock_irq.cold+0x2c/0xb3 ? verify_lock_unused+0x390/0x390 ? stack_trace_consume_entry+0x160/0x160 ? lock_downgrade+0x100/0x100 ? save_trace+0x88/0x5e0 ? _raw_spin_unlock_irqrestore+0x2d/0x40 mark_lock+0x530/0x1470 ? mark_lock_irq+0x1d10/0x1d10 ? enqueue_timer+0x660/0x660 mark_usage+0x215/0x2a0 __lock_acquire+0x79b/0x18d0 ? tcp_schedule_loss_probe.part.0+0x38c/0x520 lock_acquire+0x1ca/0x480 ? nvme_tcp_state_change+0x21/0x150 [nvme_tcp] ? rcu_read_unlock+0x40/0x40 ? tcp_mtu_probe+0x1ae0/0x1ae0 ? kmalloc_reserve+0xa0/0xa0 ? sysfs_file_ops+0x170/0x170 _raw_read_lock+0x3d/0xa0 ? nvme_tcp_state_change+0x21/0x150 [nvme_tcp] nvme_tcp_state_change+0x21/0x150 [nvme_tcp] ? sysfs_file_ops ---truncated---
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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 存在安全漏洞,该漏洞源于 state_change sk 回调中不正确的锁定。
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 872d26a391da92ed8f0c0f5cb5fef428067b7f30 ~ 999d606a820c36ae9b9e9611360c8b3d8d4bb777 -
Linux Linux 5.0 -

II. Public POCs for CVE-2021-47041

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

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

Other References for CVE-2021-47041 (5)

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-47035 8.8 HIGH iommu/vt-d: Remove WO permissions on second-level paging entries
CVE-2021-47017 8.8 HIGH ath10k: Fix a use after free in ath10k_htc_send_bundle
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-2021-47040 7.8 HIGH io_uring: fix overflows checks in provide buffers
CVE-2020-36785 7.8 HIGH media: atomisp: Fix use after free in atomisp_alloc_css_stat_bufs()
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-2020-36787 7.8 HIGH media: aspeed: fix clock handling logic
CVE-2021-46977 7.8 HIGH KVM: VMX: Disable preemption when probing user return MSRs
CVE-2021-46984 7.8 HIGH kyber: fix out of bounds access when preempted
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-2021-46993 7.8 HIGH sched: Fix out-of-bound access in uclamp
CVE-2021-46983 7.5 HIGH nvmet-rdma: Fix NULL deref when SEND is completed with error
CVE-2021-47001 7.5 HIGH xprtrdma: Fix cwnd update ordering

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

IV. Related Vulnerabilities

V. Comments for CVE-2021-47041

No comments yet


Leave a comment