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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2021-47191— scsi: scsi_debug: Fix out-of-bound read in resp_readcap16()

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 存在安全漏洞,该漏洞源于resp_readcap16存在越界读取漏洞。

CVSS 7.1 · High EPSS 0.24% · P14

Affected Version Matrix 8

VendorProduct Version RangeStatus
Linux Linux c65b1445d153a66ca91b00c1f10187e495c17918< 3e20cb072679bdb47747ccc8bee3233a4cf0765a affected
c65b1445d153a66ca91b00c1f10187e495c17918< 5b8bed6464ad6653586e30df046185fd816ad999 affected
c65b1445d153a66ca91b00c1f10187e495c17918< 4e3ace0051e7e504b55d239daab8789dd89b863c affected
2.6.18 affected
< 2.6.18 unaffected
5.10.82≤ 5.10.* unaffected
5.15.5≤ 5.15.* unaffected
5.16≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2021-47191

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
scsi: scsi_debug: Fix out-of-bound read in resp_readcap16()
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() The following warning was observed running syzkaller: [ 3813.830724] sg_write: data in/out 65466/242 bytes for SCSI command 0x9e-- guessing data in; [ 3813.830724] program syz-executor not setting count and/or reply_len properly [ 3813.836956] ================================================================== [ 3813.839465] BUG: KASAN: stack-out-of-bounds in sg_copy_buffer+0x157/0x1e0 [ 3813.841773] Read of size 4096 at addr ffff8883cf80f540 by task syz-executor/1549 [ 3813.846612] Call Trace: [ 3813.846995] dump_stack+0x108/0x15f [ 3813.847524] print_address_description+0xa5/0x372 [ 3813.848243] kasan_report.cold+0x236/0x2a8 [ 3813.849439] check_memory_region+0x240/0x270 [ 3813.850094] memcpy+0x30/0x80 [ 3813.850553] sg_copy_buffer+0x157/0x1e0 [ 3813.853032] sg_copy_from_buffer+0x13/0x20 [ 3813.853660] fill_from_dev_buffer+0x135/0x370 [ 3813.854329] resp_readcap16+0x1ac/0x280 [ 3813.856917] schedule_resp+0x41f/0x1630 [ 3813.858203] scsi_debug_queuecommand+0xb32/0x17e0 [ 3813.862699] scsi_dispatch_cmd+0x330/0x950 [ 3813.863329] scsi_request_fn+0xd8e/0x1710 [ 3813.863946] __blk_run_queue+0x10b/0x230 [ 3813.864544] blk_execute_rq_nowait+0x1d8/0x400 [ 3813.865220] sg_common_write.isra.0+0xe61/0x2420 [ 3813.871637] sg_write+0x6c8/0xef0 [ 3813.878853] __vfs_write+0xe4/0x800 [ 3813.883487] vfs_write+0x17b/0x530 [ 3813.884008] ksys_write+0x103/0x270 [ 3813.886268] __x64_sys_write+0x77/0xc0 [ 3813.886841] do_syscall_64+0x106/0x360 [ 3813.887415] entry_SYSCALL_64_after_hwframe+0x44/0xa9 This issue can be reproduced with the following syzkaller log: r0 = openat(0xffffffffffffff9c, &(0x7f0000000040)='./file0\x00', 0x26e1, 0x0) r1 = syz_open_procfs(0xffffffffffffffff, &(0x7f0000000000)='fd/3\x00') open_by_handle_at(r1, &(0x7f00000003c0)=ANY=[@ANYRESHEX], 0x602000) r2 = syz_open_dev$sg(&(0x7f0000000000), 0x0, 0x40782) write$binfmt_aout(r2, &(0x7f0000000340)=ANY=[@ANYBLOB="00000000deff000000000000000000000000000000000000000000000000000047f007af9e107a41ec395f1bded7be24277a1501ff6196a83366f4e6362bc0ff2b247f68a972989b094b2da4fb3607fcf611a22dd04310d28c75039d"], 0x126) In resp_readcap16() we get "int alloc_len" value -1104926854, and then pass the huge arr_len to fill_from_dev_buffer(), but arr is only 32 bytes. This leads to OOB in sg_copy_buffer(). To solve this issue, define alloc_len as u32.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/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 存在安全漏洞,该漏洞源于resp_readcap16存在越界读取漏洞。
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 c65b1445d153a66ca91b00c1f10187e495c17918 ~ 3e20cb072679bdb47747ccc8bee3233a4cf0765a -
Linux Linux 2.6.18 -

II. Public POCs for CVE-2021-47191

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

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

Other References for CVE-2021-47191 (3)

Same Patch Batch · Linux · 2024-04-10 · 39 CVEs total

CVE-2021-47215 9.8 CRITICAL net/mlx5e: kTLS, Fix crash in RX resync flow
CVE-2021-47203 8.8 HIGH scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
CVE-2021-47183 8.8 HIGH scsi: lpfc: Fix link down processing to address NULL pointer dereference
CVE-2021-47184 8.8 HIGH i40e: Fix NULL ptr dereference on VSI filter sync
CVE-2021-47188 7.8 HIGH scsi: ufs: core: Improve SCSI abort handling
CVE-2021-47197 7.8 HIGH net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove()
CVE-2021-47196 7.8 HIGH RDMA/core: Set send and receive CQ before forwarding to the driver
CVE-2021-47209 7.8 HIGH sched/fair: Prevent dead task groups from regaining cfs_rq's
CVE-2021-47194 7.8 HIGH cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
CVE-2024-26815 7.8 HIGH net/sched: taprio: proper TCA_TAPRIO_TC_ENTRY_INDEX check
CVE-2021-47200 7.8 HIGH drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap
CVE-2021-47189 7.8 HIGH btrfs: fix memory ordering between normal and ordered work functions
CVE-2021-47201 7.8 HIGH iavf: free q_vectors before queues in iavf_disable_vf
CVE-2021-47219 7.1 HIGH scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs()
CVE-2021-47205 clk: sunxi-ng: Unregister clocks/resets when unbinding
CVE-2021-47207 ALSA: gus: fix null pointer dereference on pointer block
CVE-2021-47206 usb: host: ohci-tmio: check return value after calling platform_get_resource()
CVE-2021-47199 net/mlx5e: CT, Fix multiple allocations and memleak of mod acts
CVE-2021-47210 usb: typec: tipd: Remove WARN_ON in tps6598x_block_read
CVE-2021-47211 ALSA: usb-audio: fix null pointer dereference on pointer cs_desc

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

IV. Related Vulnerabilities

V. Comments for CVE-2021-47191

No comments yet


Leave a comment