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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

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

EPSS 0.01% · P1
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: NVD (National Vulnerability Database)
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: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
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

登录查看更多情报信息。

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

CVE-2021-47210usb: typec: tipd: Remove WARN_ON in tps6598x_block_read
CVE-2021-47200drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap
CVE-2021-47201iavf: free q_vectors before queues in iavf_disable_vf
CVE-2021-47202thermal: Fix NULL pointer dereferences in of_thermal_ functions
CVE-2021-47203scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
CVE-2021-47204net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove
CVE-2021-47205clk: sunxi-ng: Unregister clocks/resets when unbinding
CVE-2021-47206usb: host: ohci-tmio: check return value after calling platform_get_resource()
CVE-2021-47207ALSA: gus: fix null pointer dereference on pointer block
CVE-2021-47209sched/fair: Prevent dead task groups from regaining cfs_rq's
CVE-2021-47199net/mlx5e: CT, Fix multiple allocations and memleak of mod acts
CVE-2021-47211ALSA: usb-audio: fix null pointer dereference on pointer cs_desc
CVE-2021-47212net/mlx5: Update error handler for UCTX and UMEM
CVE-2021-47214hugetlb, userfaultfd: fix reservation restore on userfaultfd error
CVE-2021-47215net/mlx5e: kTLS, Fix crash in RX resync flow
CVE-2021-47216scsi: advansys: Fix kernel pointer leak
CVE-2021-47217x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails
CVE-2021-47218selinux: fix NULL-pointer dereference when hashtab allocation fails
CVE-2021-47219scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs()
CVE-2021-47189btrfs: fix memory ordering between normal and ordered work functions

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

IV. Related Vulnerabilities

V. Comments for CVE-2021-47191

No comments yet


Leave a comment