qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug 1914638] [NEW] [OSS-Fuzz] Issue 30219: Global-buffer-overflow i


From: Alexander Bulekov
Subject: Re: [Bug 1914638] [NEW] [OSS-Fuzz] Issue 30219: Global-buffer-overflow in mode_sense_page
Date: Thu, 4 Feb 2021 13:37:16 -0500

+CC Paolo and Fam

scsi-disk.c:1092     static const int mode_sense_valid[0x3f] =
...
scsi-disk.c:1488          page = p[0] & 0x3f;

OSS-Fuzz found this same crash for virtio-scsi, however, since the
reproducer involved a double-fetch, I don't have a simple QTest
reproducer

On 210204 1728, Alexander Bulekov wrote:
> Public bug reported:
> 
> == Reproducer (build with --enable-sanitizers) ==
> 
> cat << EOF | ./qemu-system-i386 -machine q35 -nodefaults \
> -device megasas -device scsi-cd,drive=null0 \
> -blockdev driver=null-co,read-zeroes=on,node-name=null0 \
> -nographic -qtest stdio
> outl 0xcf8 0x80000818
> outl 0xcfc 0xc000
> outl 0xcf8 0x80000804
> outw 0xcfc 0x7
> write 0x0 0x1 0x03
> write 0x7 0x1 0x3f
> write 0x10 0x1 0x03
> write 0x20 0x1 0x55
> write 0x21 0x1 0x10
> write 0x28 0x1 0x10
> write 0x30 0x1 0xff
> write 0x31 0x1 0xff
> write 0x32 0x1 0xff
> write 0x33 0x1 0xff
> write 0x34 0x1 0xff
> write 0x35 0x1 0xff
> write 0x36 0x1 0xff
> write 0x37 0x1 0xff
> write 0x3b 0x1 0x10
> write 0x43 0x1 0x10
> write 0x44 0x1 0x10
> write 0x4f 0x1 0x10
> write 0x53 0x1 0x10
> write 0x5b 0x1 0x10
> write 0x5f 0x1 0x10
> write 0x67 0x1 0x10
> write 0x6b 0x1 0x10
> write 0x73 0x1 0x10
> write 0x75 0x1 0x10
> write 0x7d 0x1 0x10
> write 0x83 0x1 0x10
> write 0x8b 0x1 0x10
> write 0x8f 0x1 0x10
> write 0x97 0x1 0x10
> write 0x9b 0x1 0x10
> write 0xa3 0x1 0x03
> write 0xa6 0x1 0x10
> write 0xae 0x1 0x10
> write 0xb3 0x1 0x10
> write 0xbb 0x1 0x10
> write 0xbf 0x1 0x10
> write 0xc7 0x1 0x10
> write 0xca 0x1 0x10
> write 0xd3 0x1 0x06
> write 0xd7 0x1 0x10
> write 0xdf 0x1 0x10
> write 0xe3 0x1 0x06
> write 0xeb 0x1 0x01
> write 0xef 0x1 0x10
> write 0xf7 0x1 0x10
> write 0xfb 0x1 0x10
> write 0x103 0x1 0x20
> write 0x107 0x1 0x10
> write 0x10f 0x1 0x10
> write 0x113 0x1 0x10
> write 0x11b 0x1 0x10
> write 0x11f 0x1 0x10
> write 0x127 0x1 0x10
> write 0x12b 0x1 0x10
> write 0x130 0x1 0x10
> write 0x137 0x1 0x10
> write 0x13f 0x1 0x40
> write 0x141 0x1 0x10
> write 0x14b 0x1 0x10
> write 0x14f 0x1 0x10
> write 0x157 0x1 0x10
> write 0x15b 0x1 0x10
> write 0x161 0x1 0x10
> write 0x167 0x1 0x03
> write 0x16f 0x1 0x06
> write 0x172 0x1 0x10
> write 0x17b 0x1 0x10
> write 0x17f 0x1 0x10
> write 0x187 0x1 0x10
> write 0x18b 0x1 0x10
> write 0x192 0x1 0x10
> write 0x197 0x1 0x06
> write 0x19f 0x1 0x20
> write 0x1a3 0x1 0x10
> write 0x1ab 0x1 0x40
> write 0x1af 0x1 0x01
> write 0x1b7 0x1 0x10
> write 0x1bb 0x1 0x20
> write 0x1c3 0x1 0x10
> write 0x1c7 0x1 0x20
> write 0x1cc 0x1 0x10
> write 0x1d3 0x1 0x10
> write 0x1db 0x1 0x10
> write 0x1df 0x1 0x10
> write 0x1e7 0x1 0x10
> write 0x1eb 0x1 0x10
> write 0x1f3 0x1 0x10
> write 0x1f4 0x1 0x10
> write 0x1fd 0x1 0x10
> write 0x203 0x1 0x40
> write 0x20b 0x1 0x10
> write 0x20f 0x1 0x10
> write 0x217 0x1 0x10
> write 0x21b 0x1 0x10
> write 0x223 0x1 0x10
> write 0x225 0x1 0x10
> write 0x22e 0x1 0x10
> write 0x233 0x1 0x06
> write 0x23b 0x1 0x10
> write 0x23f 0x1 0x10
> write 0x247 0x1 0x10
> write 0x24b 0x1 0x10
> write 0x252 0x1 0x10
> write 0x256 0x1 0x10
> write 0x25f 0x1 0x10
> write 0x263 0x1 0x20
> write 0x26b 0x1 0x06
> write 0x26f 0x1 0x40
> write 0x277 0x1 0x10
> write 0x27b 0x1 0x10
> write 0x283 0x1 0x10
> write 0x287 0x1 0x10
> write 0x28f 0x1 0x10
> write 0x290 0x1 0x10
> write 0x29b 0x1 0x10
> write 0x29f 0x1 0x10
> write 0x2a7 0x1 0x10
> write 0x2ab 0x1 0x10
> write 0x2b3 0x1 0x10
> write 0x2b7 0x1 0x10
> write 0x2bf 0x1 0x10
> write 0x2c1 0x1 0x10
> write 0x2c9 0x1 0x10
> write 0x2cf 0x1 0x10
> write 0x2d7 0x1 0x10
> write 0x2db 0x1 0x10
> write 0x2e3 0x1 0x10
> write 0x2e7 0x1 0x10
> write 0x2ef 0x1 0x03
> write 0x2f2 0x1 0x10
> write 0x2fa 0x1 0x10
> write 0x2ff 0x1 0x10
> write 0x307 0x1 0x10
> write 0x30b 0x1 0x10
> write 0x313 0x1 0x10
> write 0x316 0x1 0x10
> write 0x31f 0x1 0x06
> write 0x323 0x1 0x10
> outb 0xc040 0x0
> EOF
> 
> === Stack Trace ===
> ==1025760==ERROR: AddressSanitizer: global-buffer-overflow on address 
> 0x558f557253fc at pc 0x558f549ab376 bp
> 0x7ffd436e9770 sp 0x7ffd436e9768
> READ of size 4 at 0x558f557253fc thread T0
> SCARINESS: 17 (4-byte-read-global-buffer-overflow)
> #0 0x558f549ab375 in mode_sense_page /src/qemu/hw/scsi/scsi-disk.c:1104:10
> #1 0x558f549afd86 in scsi_disk_check_mode_select 
> /src/qemu/hw/scsi/scsi-disk.c:1447:11
> #2 0x558f549af9a6 in mode_select_pages /src/qemu/hw/scsi/scsi-disk.c:1515:17
> #3 0x558f549ae593 in scsi_disk_emulate_mode_select 
> /src/qemu/hw/scsi/scsi-disk.c:1570:13
> #4 0x558f549a56e9 in scsi_disk_emulate_write_data 
> /src/qemu/hw/scsi/scsi-disk.c:1861:9
> #5 0x558f548b9b49 in scsi_req_continue /src/qemu/hw/scsi/scsi-bus.c:0
> #6 0x558f548b9fc4 in scsi_req_data /src/qemu/hw/scsi/scsi-bus.c:1427:5
> #7 0x558f549a5554 in scsi_disk_emulate_write_data 
> /src/qemu/hw/scsi/scsi-disk.c:1853:9
> #8 0x558f548b9b49 in scsi_req_continue /src/qemu/hw/scsi/scsi-bus.c:0
> #9 0x558f54ac7cf6 in megasas_enqueue_req /src/qemu/hw/scsi/megasas.c:1660:9
> #10 0x558f54ab6e09 in megasas_handle_scsi /src/qemu/hw/scsi/megasas.c:1735:5
> #11 0x558f54ab3083 in megasas_handle_frame /src/qemu/hw/scsi/megasas.c:1974:24
> #12 0x558f54ab1c8b in megasas_mmio_write /src/qemu/hw/scsi/megasas.c:2131:9
> #13 0x558f54acc784 in megasas_port_write /src/qemu/hw/scsi/megasas.c:2182:5
> #14 0x558f54f78d57 in memory_region_write_accessor 
> /src/qemu/softmmu/memory.c:491:5
> #15 0x558f54f78be2 in access_with_adjusted_size 
> /src/qemu/softmmu/memory.c:552:18
> #16 0x558f54f78441 in memory_region_dispatch_write 
> /src/qemu/softmmu/memory.c:0:13
> #17 0x558f550d5627 in flatview_write_continue 
> /src/qemu/softmmu/physmem.c:2763:23
> #18 0x558f550d02ac in flatview_write /src/qemu/softmmu/physmem.c:2803:14
> #19 0x558f550d00c7 in address_space_write /src/qemu/softmmu/physmem.c:2895:18
> #20 0x558f5506c4ff in cpu_outb /src/qemu/softmmu/ioport.c:60:5
> 
> ** Affects: qemu
>      Importance: Undecided
>          Status: New
> 
> -- 
> You received this bug notification because you are a member of qemu-
> devel-ml, which is subscribed to QEMU.
> https://bugs.launchpad.net/bugs/1914638
> 
> Title:
>   [OSS-Fuzz] Issue 30219: Global-buffer-overflow in mode_sense_page
> 
> Status in QEMU:
>   New
> 
> Bug description:
>   == Reproducer (build with --enable-sanitizers) ==
> 
>   cat << EOF | ./qemu-system-i386 -machine q35 -nodefaults \
>   -device megasas -device scsi-cd,drive=null0 \
>   -blockdev driver=null-co,read-zeroes=on,node-name=null0 \
>   -nographic -qtest stdio
>   outl 0xcf8 0x80000818
>   outl 0xcfc 0xc000
>   outl 0xcf8 0x80000804
>   outw 0xcfc 0x7
>   write 0x0 0x1 0x03
>   write 0x7 0x1 0x3f
>   write 0x10 0x1 0x03
>   write 0x20 0x1 0x55
>   write 0x21 0x1 0x10
>   write 0x28 0x1 0x10
>   write 0x30 0x1 0xff
>   write 0x31 0x1 0xff
>   write 0x32 0x1 0xff
>   write 0x33 0x1 0xff
>   write 0x34 0x1 0xff
>   write 0x35 0x1 0xff
>   write 0x36 0x1 0xff
>   write 0x37 0x1 0xff
>   write 0x3b 0x1 0x10
>   write 0x43 0x1 0x10
>   write 0x44 0x1 0x10
>   write 0x4f 0x1 0x10
>   write 0x53 0x1 0x10
>   write 0x5b 0x1 0x10
>   write 0x5f 0x1 0x10
>   write 0x67 0x1 0x10
>   write 0x6b 0x1 0x10
>   write 0x73 0x1 0x10
>   write 0x75 0x1 0x10
>   write 0x7d 0x1 0x10
>   write 0x83 0x1 0x10
>   write 0x8b 0x1 0x10
>   write 0x8f 0x1 0x10
>   write 0x97 0x1 0x10
>   write 0x9b 0x1 0x10
>   write 0xa3 0x1 0x03
>   write 0xa6 0x1 0x10
>   write 0xae 0x1 0x10
>   write 0xb3 0x1 0x10
>   write 0xbb 0x1 0x10
>   write 0xbf 0x1 0x10
>   write 0xc7 0x1 0x10
>   write 0xca 0x1 0x10
>   write 0xd3 0x1 0x06
>   write 0xd7 0x1 0x10
>   write 0xdf 0x1 0x10
>   write 0xe3 0x1 0x06
>   write 0xeb 0x1 0x01
>   write 0xef 0x1 0x10
>   write 0xf7 0x1 0x10
>   write 0xfb 0x1 0x10
>   write 0x103 0x1 0x20
>   write 0x107 0x1 0x10
>   write 0x10f 0x1 0x10
>   write 0x113 0x1 0x10
>   write 0x11b 0x1 0x10
>   write 0x11f 0x1 0x10
>   write 0x127 0x1 0x10
>   write 0x12b 0x1 0x10
>   write 0x130 0x1 0x10
>   write 0x137 0x1 0x10
>   write 0x13f 0x1 0x40
>   write 0x141 0x1 0x10
>   write 0x14b 0x1 0x10
>   write 0x14f 0x1 0x10
>   write 0x157 0x1 0x10
>   write 0x15b 0x1 0x10
>   write 0x161 0x1 0x10
>   write 0x167 0x1 0x03
>   write 0x16f 0x1 0x06
>   write 0x172 0x1 0x10
>   write 0x17b 0x1 0x10
>   write 0x17f 0x1 0x10
>   write 0x187 0x1 0x10
>   write 0x18b 0x1 0x10
>   write 0x192 0x1 0x10
>   write 0x197 0x1 0x06
>   write 0x19f 0x1 0x20
>   write 0x1a3 0x1 0x10
>   write 0x1ab 0x1 0x40
>   write 0x1af 0x1 0x01
>   write 0x1b7 0x1 0x10
>   write 0x1bb 0x1 0x20
>   write 0x1c3 0x1 0x10
>   write 0x1c7 0x1 0x20
>   write 0x1cc 0x1 0x10
>   write 0x1d3 0x1 0x10
>   write 0x1db 0x1 0x10
>   write 0x1df 0x1 0x10
>   write 0x1e7 0x1 0x10
>   write 0x1eb 0x1 0x10
>   write 0x1f3 0x1 0x10
>   write 0x1f4 0x1 0x10
>   write 0x1fd 0x1 0x10
>   write 0x203 0x1 0x40
>   write 0x20b 0x1 0x10
>   write 0x20f 0x1 0x10
>   write 0x217 0x1 0x10
>   write 0x21b 0x1 0x10
>   write 0x223 0x1 0x10
>   write 0x225 0x1 0x10
>   write 0x22e 0x1 0x10
>   write 0x233 0x1 0x06
>   write 0x23b 0x1 0x10
>   write 0x23f 0x1 0x10
>   write 0x247 0x1 0x10
>   write 0x24b 0x1 0x10
>   write 0x252 0x1 0x10
>   write 0x256 0x1 0x10
>   write 0x25f 0x1 0x10
>   write 0x263 0x1 0x20
>   write 0x26b 0x1 0x06
>   write 0x26f 0x1 0x40
>   write 0x277 0x1 0x10
>   write 0x27b 0x1 0x10
>   write 0x283 0x1 0x10
>   write 0x287 0x1 0x10
>   write 0x28f 0x1 0x10
>   write 0x290 0x1 0x10
>   write 0x29b 0x1 0x10
>   write 0x29f 0x1 0x10
>   write 0x2a7 0x1 0x10
>   write 0x2ab 0x1 0x10
>   write 0x2b3 0x1 0x10
>   write 0x2b7 0x1 0x10
>   write 0x2bf 0x1 0x10
>   write 0x2c1 0x1 0x10
>   write 0x2c9 0x1 0x10
>   write 0x2cf 0x1 0x10
>   write 0x2d7 0x1 0x10
>   write 0x2db 0x1 0x10
>   write 0x2e3 0x1 0x10
>   write 0x2e7 0x1 0x10
>   write 0x2ef 0x1 0x03
>   write 0x2f2 0x1 0x10
>   write 0x2fa 0x1 0x10
>   write 0x2ff 0x1 0x10
>   write 0x307 0x1 0x10
>   write 0x30b 0x1 0x10
>   write 0x313 0x1 0x10
>   write 0x316 0x1 0x10
>   write 0x31f 0x1 0x06
>   write 0x323 0x1 0x10
>   outb 0xc040 0x0
>   EOF
> 
>   === Stack Trace ===
>   ==1025760==ERROR: AddressSanitizer: global-buffer-overflow on address 
> 0x558f557253fc at pc 0x558f549ab376 bp
>   0x7ffd436e9770 sp 0x7ffd436e9768
>   READ of size 4 at 0x558f557253fc thread T0
>   SCARINESS: 17 (4-byte-read-global-buffer-overflow)
>   #0 0x558f549ab375 in mode_sense_page /src/qemu/hw/scsi/scsi-disk.c:1104:10
>   #1 0x558f549afd86 in scsi_disk_check_mode_select 
> /src/qemu/hw/scsi/scsi-disk.c:1447:11
>   #2 0x558f549af9a6 in mode_select_pages /src/qemu/hw/scsi/scsi-disk.c:1515:17
>   #3 0x558f549ae593 in scsi_disk_emulate_mode_select 
> /src/qemu/hw/scsi/scsi-disk.c:1570:13
>   #4 0x558f549a56e9 in scsi_disk_emulate_write_data 
> /src/qemu/hw/scsi/scsi-disk.c:1861:9
>   #5 0x558f548b9b49 in scsi_req_continue /src/qemu/hw/scsi/scsi-bus.c:0
>   #6 0x558f548b9fc4 in scsi_req_data /src/qemu/hw/scsi/scsi-bus.c:1427:5
>   #7 0x558f549a5554 in scsi_disk_emulate_write_data 
> /src/qemu/hw/scsi/scsi-disk.c:1853:9
>   #8 0x558f548b9b49 in scsi_req_continue /src/qemu/hw/scsi/scsi-bus.c:0
>   #9 0x558f54ac7cf6 in megasas_enqueue_req /src/qemu/hw/scsi/megasas.c:1660:9
>   #10 0x558f54ab6e09 in megasas_handle_scsi /src/qemu/hw/scsi/megasas.c:1735:5
>   #11 0x558f54ab3083 in megasas_handle_frame 
> /src/qemu/hw/scsi/megasas.c:1974:24
>   #12 0x558f54ab1c8b in megasas_mmio_write /src/qemu/hw/scsi/megasas.c:2131:9
>   #13 0x558f54acc784 in megasas_port_write /src/qemu/hw/scsi/megasas.c:2182:5
>   #14 0x558f54f78d57 in memory_region_write_accessor 
> /src/qemu/softmmu/memory.c:491:5
>   #15 0x558f54f78be2 in access_with_adjusted_size 
> /src/qemu/softmmu/memory.c:552:18
>   #16 0x558f54f78441 in memory_region_dispatch_write 
> /src/qemu/softmmu/memory.c:0:13
>   #17 0x558f550d5627 in flatview_write_continue 
> /src/qemu/softmmu/physmem.c:2763:23
>   #18 0x558f550d02ac in flatview_write /src/qemu/softmmu/physmem.c:2803:14
>   #19 0x558f550d00c7 in address_space_write 
> /src/qemu/softmmu/physmem.c:2895:18
>   #20 0x558f5506c4ff in cpu_outb /src/qemu/softmmu/ioport.c:60:5
> 
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/qemu/+bug/1914638/+subscriptions
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]