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

Goal: 1000 CNY · Raised: 1336 CNY

100%

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

CVSS 7.1 · High EPSS 0.24% · P15

Affected Version Matrix 8

VendorProductVersion RangeStatus
LinuxLinuxc65b1445d153a66ca91b00c1f10187e495c17918< 3e20cb072679bdb47747ccc8bee3233a4cf0765aaffected
c65b1445d153a66ca91b00c1f10187e495c17918< 5b8bed6464ad6653586e30df046185fd816ad999affected
c65b1445d153a66ca91b00c1f10187e495c17918< 4e3ace0051e7e504b55d239daab8789dd89b863caffected
2.6.18affected
< 2.6.18unaffected
5.10.82≤ 5.10.*unaffected
5.15.5≤ 5.15.*unaffected
5.16≤ *unaffected
Get alerts for future matching vulnerabilitiesLog 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

VendorProductAffected VersionsCPESubscribe
LinuxLinux c65b1445d153a66ca91b00c1f10187e495c17918 ~ 3e20cb072679bdb47747ccc8bee3233a4cf0765a -
LinuxLinux 2.6.18 -

II. Public POCs for CVE-2021-47191

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

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-472159.8 CRITICALnet/mlx5e: kTLS, Fix crash in RX resync flow
CVE-2021-472038.8 HIGHscsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
CVE-2021-471838.8 HIGHscsi: lpfc: Fix link down processing to address NULL pointer dereference
CVE-2021-471848.8 HIGHi40e: Fix NULL ptr dereference on VSI filter sync
CVE-2021-471887.8 HIGHscsi: ufs: core: Improve SCSI abort handling
CVE-2021-471977.8 HIGHnet/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove()
CVE-2021-471967.8 HIGHRDMA/core: Set send and receive CQ before forwarding to the driver
CVE-2021-472097.8 HIGHsched/fair: Prevent dead task groups from regaining cfs_rq's
CVE-2021-471947.8 HIGHcfg80211: call cfg80211_stop_ap when switch from P2P_GO type
CVE-2024-268157.8 HIGHnet/sched: taprio: proper TCA_TAPRIO_TC_ENTRY_INDEX check
CVE-2021-472007.8 HIGHdrm/prime: Fix use after free in mmap with drm_gem_ttm_mmap
CVE-2021-471897.8 HIGHbtrfs: fix memory ordering between normal and ordered work functions
CVE-2021-472017.8 HIGHiavf: free q_vectors before queues in iavf_disable_vf
CVE-2021-472197.1 HIGHscsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs()
CVE-2021-47205clk: sunxi-ng: Unregister clocks/resets when unbinding
CVE-2021-47207ALSA: gus: fix null pointer dereference on pointer block
CVE-2021-47206usb: host: ohci-tmio: check return value after calling platform_get_resource()
CVE-2021-47199net/mlx5e: CT, Fix multiple allocations and memleak of mod acts
CVE-2021-47210usb: typec: tipd: Remove WARN_ON in tps6598x_block_read
CVE-2021-47211ALSA: 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