URL:
<https://savannah.gnu.org/bugs/?65880>
Summary: heap-buffer-overflow in grub-mkrescue.c
Group: GNU GRUB
Submitter: vegorova
Submitted: Пт 14 июн 2024 11:13:08
Category: None
Severity: Major
Priority: 5 - Normal
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Release: other
Release:
Discussion Lock: Any
Reproducibility: Every Time
Planned Release: None
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Пт 14 июн 2024 11:13:08 By: Victoriia Egorova <vegorova>
Steps to reproduce:
build grub2 (i tried v2.06, but this code part seems almost the same in
v.2.12) with ASAN
run grub-mkrescue with -k or -d opt without additional args:
./grub-mkrescue -k
or
./grub-mkrescue -d
It looks like we're looking for the arg after these flags (-k and -d), but if
we don't have it we also haven't allocated enough memory for argp_argv (we
allocated it only for argc elements, in this case there are only two of them),
but trying to write here in line
argp_argv[argp_argc++] = argv[i];
so it causes a heap-buffer-overflow.
Backtrace:
=================================================================
==264950==ERROR: AddressSanitizer: heap-buffer-overflow on address
0x602000000380 at pc 0x5e64d4e5f556 bp 0x7fff53f3ba30 sp 0x7fff53f3ba28
WRITE of size 8 at 0x602000000380 thread T0
#0 0x5e64d4e5f555 in main ../../util/grub-mkrescue.c:471
#1 0x7cc0f5e04249 in __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
#2 0x7cc0f5e04304 in __libc_start_main_impl ../csu/libc-start.c:360
#3 0x5e64d4e61a20 in _start
(/app/grub/grub2/grub2-2.06/obj/grub-pc/grub-mkrescue+0x4ea20)
0x602000000380 is located 0 bytes to the right of 16-byte region
[0x602000000370,0x602000000380)
allocated by thread T0 here:
#0 0x7cc0f61553b7 in __interceptor_calloc
../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
#1 0x5e64d4ff5275 in xcalloc ../../grub-core/kern/emu/misc.c:93
SUMMARY: AddressSanitizer: heap-buffer-overflow ../../util/grub-mkrescue.c:471
in main
Shadow bytes around the buggy address:
0x0c047fff8020: fa fa fd fa fa fa 00 04 fa fa 00 04 fa fa 00 04
0x0c047fff8030: fa fa 00 04 fa fa 00 04 fa fa 00 04 fa fa 00 04
0x0c047fff8040: fa fa 00 04 fa fa 00 04 fa fa 00 04 fa fa 00 04
0x0c047fff8050: fa fa 00 04 fa fa 00 04 fa fa 00 04 fa fa 05 fa
0x0c047fff8060: fa fa 05 fa fa fa 00 fa fa fa fd fd fa fa 00 00
=>0x0c047fff8070:[fa]fa 00 00 fa fa fa fa fa fa fa fa fa fa fa fa
0x0c047fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c047fff8090: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c047fff80a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c047fff80b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c047fff80c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==264950==ABORTING
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?65880>
{savane: Include the next line when replying by email.}
{savane: user = [email protected]; tracker = bugs; item = 65880}
_______________________________________________
Сообщение отправлено по Savannah
https://savannah.gnu.org/