[Bug 239974] ping(8) crashes with SIGSEGV - Out-of-Bounds Write of size 1 (global-buffer-overflow)
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Aug 19 21:24:19 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=239974
Bug ID: 239974
Summary: ping(8) crashes with SIGSEGV - Out-of-Bounds Write of
size 1 (global-buffer-overflow)
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: bugs at FreeBSD.org
Reporter: neerajpal09 at gmail.com
Created attachment 206711
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=206711&action=edit
proposed patch
ping(8) crashes with Segmentation Fault due to Out-0f-Bound Write of size 1,
causing global-buffer-overflow
* /usr/src/sbin/ping/ping.c:945
Compiled with address sanitizer option "-fsanitize=address" on clang/gcc to
verify the reproducibility with detailed log info.
[Steps to reproduce]
* compile: make CC=clang CFLAGS="-fsanitize=address -O0"
* /usr/obj/usr/src/amd64.amd64/sbin/ping/ping -G 1 -h 65452 localhost
without compiling with sanitizer, it crashes when:
* ping -G 1 -h 69517 localhost
root at freebsd:/usr/src/sbin/ping # ping -G 1 -h 69517 localhost
PING localhost (127.0.0.1): (0 ... 1) data bytes
8 bytes from 127.0.0.1: icmp_seq=0 ttl=64
Segmentation fault
Below command will crash at any test case:
(tested with already available ping with system)
* command: ping -G -h 123456 localhost
Sanitizer log as follows:
==4641==ERROR: AddressSanitizer: global-buffer-overflow on address
0x000000bad87f at pc 0x0000002e6d49 bp 0x7ffffffed7b0 sp 0x7ffffffed7a8
WRITE of size 1 at 0x000000bad87f thread T0
#0 0x2e6d48 in main /usr/src/sbin/ping/ping.c:945:15
#1 0x23a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
0x000000bad87f is located 0 bytes to the right of global variable 'outpackhdr'
defined in '/usr/src/sbin/ping/ping.c:172:15' (0xb9d880) of size 65535
SUMMARY: AddressSanitizer: global-buffer-overflow
/usr/src/sbin/ping/ping.c:945:15 in main
Shadow bytes around the buggy address:
0x400000175ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x400000175ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x400000175ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x400000175ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x400000175af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x400000175b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00[07]
0x400000175b10: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
0x400000175b20: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
0x400000175b30: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
0x400000175b40: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
0x400000175b50: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
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
Shadow gap: cc
==4641==ABORTING
[Inferior 1 (process 4641) exited with code 01
Note: root privilege required.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list