New submission from shuoz <zzw20124...@gmail.com>: python hashlib a signd overflow maybe cause a memory over read.
python version: Python 3.6.7rc1+ (heads/3.6:cb0bec3, Oct 1 2018, 02:19:39) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. ``` [----------------------------------registers-----------------------------------] RAX: 0x0 RBX: 0x7fffffffd5f0 --> 0x41b58ab3 RCX: 0x0 RDX: 0x1ffffffffffffff6 RSI: 0x7ffff35ae880 --> 0x0 RDI: 0x7fffffffd650 --> 0x7d828fe8a42b9c7f RBP: 0xffffffffabe --> 0x0 RSP: 0x7fffffffd5c8 --> 0x7ffff2a5f793 (<_sha3_shake_128_hexdigest+627>: test eax,eax) RIP: 0x7ffff2a5ec60 (<_PySHA3_KeccakWidth1600_SpongeSqueeze>: push r15) R8 : 0x65fc7ba985946aff R9 : 0xefbdaa140b587a16 R10: 0x50573373c9b2b8dc R11: 0xfba4d93abbdabffc R12: 0x7fffffffd770 --> 0x7fffffffd7d0 --> 0xffffffffb00 --> 0x0 R13: 0x7fffffffd650 --> 0x7d828fe8a42b9c7f R14: 0x7ffff35ae880 --> 0x0 R15: 0xfffffffffffffff6 EFLAGS: 0xa06 (carry PARITY adjust zero sign trap INTERRUPT direction OVERFLOW) [-------------------------------------code-------------------------------------] 0x7ffff2a5ec50 <_PySHA3_KeccakP1600_ExtractBytes+160>: jmp 0x7ffff2a54d10 <_PySHA3_KeccakP1600_ExtractBytesInLane@plt> 0x7ffff2a5ec55: nop 0x7ffff2a5ec56: nop WORD PTR cs:[rax+rax*1+0x0] => 0x7ffff2a5ec60 <_PySHA3_KeccakWidth1600_SpongeSqueeze>: push r15 0x7ffff2a5ec62 <_PySHA3_KeccakWidth1600_SpongeSqueeze+2>: push r14 0x7ffff2a5ec64 <_PySHA3_KeccakWidth1600_SpongeSqueeze+4>: push r13 0x7ffff2a5ec66 <_PySHA3_KeccakWidth1600_SpongeSqueeze+6>: push r12 0x7ffff2a5ec68 <_PySHA3_KeccakWidth1600_SpongeSqueeze+8>: mov r13,rdx [------------------------------------stack-------------------------------------] 0000| 0x7fffffffd5c8 --> 0x7ffff2a5f793 (<_sha3_shake_128_hexdigest+627>: test eax,eax) 0008| 0x7fffffffd5d0 --> 0x7fffffffd5f0 --> 0x41b58ab3 0016| 0x7fffffffd5d8 --> 0xffffefdb33b --> 0x0 0024| 0x7fffffffd5e0 --> 0x7ffff7ed99d8 --> 0x0 0032| 0x7fffffffd5e8 --> 0x7ffff3606910 --> 0x6190000096e5 --> 0x9000009828000000 0040| 0x7fffffffd5f0 --> 0x41b58ab3 0048| 0x7fffffffd5f8 --> 0x7ffff2a68c08 ("2 32 8 6 length 96 224 4 temp ") 0056| 0x7fffffffd600 --> 0x7ffff2a5f520 (<_sha3_shake_128_hexdigest>: push r15) [------------------------------------------------------------------------------] Legend: code, data, rodata, value Breakpoint 2, _PySHA3_KeccakWidth1600_SpongeSqueeze (instance=0x7fffffffd650, data=0x7ffff35ae880 "", dataByteLen=0x1ffffffffffffff6) at /home/test/cpython/Modules/_sha3/kcp/KeccakSponge.inc:272 ``` dataByteLen=0x1ffffffffffffff6 ``` RAX: 0x7ffff3615f90 --> 0xfffffffffffffffa RBX: 0xa8 RCX: 0x7ffff3616028 --> 0xf938000001a4 RDX: 0x18 RSI: 0x7fffffffd6e0 --> 0x6ab2a5fe4fe8efd RDI: 0x7ffff3615fe0 --> 0x44b6a41dfdc1a3df RBP: 0x7fffffffd510 --> 0xa8 RSP: 0x7fffffffcc78 --> 0x7ffff6e936cf (mov rcx,QWORD PTR [rbp-0x38]) RIP: 0x7ffff6120786 (<__memmove_sse2_unaligned_erms+614>: movntdq XMMWORD PTR [rdi+0x20],xmm2) R8 : 0xfffffffffffffff0 R9 : 0x10007e6bac07 --> 0x0 R10: 0x7ffff3616038 --> 0x0 R11: 0x7ffff3615f90 --> 0xfffffffffffffffa R12: 0x7ffff3615f90 --> 0xfffffffffffffffa R13: 0x7fffffffd650 --> 0xa35bf3e9cd13e78e R14: 0x7ffff3615f90 --> 0xfffffffffffffffa R15: 0x0 EFLAGS: 0x10206 (carry PARITY adjust zero sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x7ffff6120779 <__memmove_sse2_unaligned_erms+601>: sub rdx,0x40 0x7ffff612077d <__memmove_sse2_unaligned_erms+605>: movntdq XMMWORD PTR [rdi],xmm0 0x7ffff6120781 <__memmove_sse2_unaligned_erms+609>: movntdq XMMWORD PTR [rdi+0x10],xmm1 => 0x7ffff6120786 <__memmove_sse2_unaligned_erms+614>: movntdq XMMWORD PTR [rdi+0x20],xmm2 0x7ffff612078b <__memmove_sse2_unaligned_erms+619>: movntdq XMMWORD PTR [rdi+0x30],xmm3 0x7ffff6120790 <__memmove_sse2_unaligned_erms+624>: add rdi,0x40 0x7ffff6120794 <__memmove_sse2_unaligned_erms+628>: cmp rdx,0x40 0x7ffff6120798 <__memmove_sse2_unaligned_erms+632>: ja 0x7ffff6120758 <__memmove_sse2_unaligned_erms+568> [------------------------------------stack-------------------------------------] 0000| 0x7fffffffcc78 --> 0x7ffff6e936cf (mov rcx,QWORD PTR [rbp-0x38]) 0008| 0x7fffffffcc80 --> 0x7fffffffccf0 --> 0x41b58ab3 0016| 0x7fffffffcc88 --> 0x7fffffffcd90 --> 0x6 0024| 0x7fffffffcc90 --> 0xffffffff99e --> 0x0 0032| 0x7fffffffcc98 --> 0x7fffffffcd50 --> 0x0 0040| 0x7fffffffcca0 --> 0x0 0048| 0x7fffffffcca8 --> 0x7ffff3616038 --> 0x0 0056| 0x7fffffffccb0 --> 0x7ffff358a068 --> 0x1 [------------------------------------------------------------------------------] Legend: code, data, rodata, value Stopped reason: SIGSEGV __memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:492 492 ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory. gdb-peda$ bt #0 __memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:492 #1 0x00007ffff6e936cf in ?? () from /usr/lib/x86_64-linux-gnu/libasan.so.4 #2 0x00007ffff2a5eab4 in memcpy (__len=0xa8, __src=<optimized out>, __dest=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:34 #3 _PySHA3_KeccakP1600_ExtractLanes (state=<optimized out>, data=<optimized out>, laneCount=0x15) at /home/test/cpython/Modules/_sha3/kcp/KeccakP-1600-opt64.c:342 #4 0x00007ffff2a5ec2c in _PySHA3_KeccakP1600_ExtractBytes (state=0x7fffffffd650, data=0x7ffff3615f90 "\372\377\377\377\377\377\377\377\002", offset=<optimized out>, length=0xa8) at /home/test/cpython/Modules/_sha3/kcp/KeccakP-1600-opt64.c:375 #5 0x00007ffff2a5ee1d in _PySHA3_KeccakWidth1600_SpongeSqueeze (instance=0x7fffffffd650, data=<optimized out>, dataByteLen=0x1ffffffffffffff6) at /home/test/cpython/Modules/_sha3/kcp/KeccakSponge.inc:287 #6 0x00007ffff2a5f793 in _SHAKE_digest (hex=0x1, digestlen=0xfffffffffffffff6, self=0x7ffff7ed98e8) at /home/test/cpython/Modules/_sha3/sha3module.c:620 #7 _sha3_shake_128_hexdigest_impl (length=0xfffffffffffffff6, self=0x7ffff7ed98e8) at /home/test/cpython/Modules/_sha3/sha3module.c:669 #8 _sha3_shake_128_hexdigest (self=0x7ffff7ed98e8, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at /home/test/cpython/Modules/_sha3/clinic/sha3module.c.h:149 #9 0x000055555583eab6 in _PyCFunction_FastCallDict (kwargs=0x0, nargs=0x1, args=0x616000021518, func_obj=0x7ffff2e86f30) at Objects/methodobject.c:250 #10 _PyCFunction_FastCallKeywords (func=func@entry=0x7ffff2e86f30, stack=0x616000021518, nargs=nargs@entry=0x1, kwnames=kwnames@entry=0x0) at Objects/methodobject.c:294 #11 0x0000555555995945 in call_function (pp_stack=pp_stack@entry=0x7fffffffdc30, oparg=oparg@entry=0x1, kwnames=kwnames@entry=0x0) at Python/ceval.c:4837 #12 0x000055555599feaa in _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3335 #13 0x0000555555994939 in PyEval_EvalFrameEx (throwflag=0x0, f=0x616000021398) at Python/ceval.c:754 #14 _PyEval_EvalCodeWithName (_co=_co@entry=0x7ffff36088a0, globals=globals@entry=0x0, locals=locals@entry=0x7ffff355a9d8, args=args@entry=0x0, argcount=argcount@entry=0x0, kwnames=kwnames@entry=0x0, kwargs=0x0, kwcount=0x0, kwstep=0x2, defs=0x0, defcount=0x0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at Python/ceval.c:4166 #15 0x0000555555997b73 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0x0, defs=0x0, kwcount=0x0, kws=0x0, argcount=0x0, args=0x0, locals=locals@entry=0x7ffff355a9d8, globals=globals@entry=0x0, _co=_co@entry=0x7ffff36088a0) at Python/ceval.c:4187 #16 PyEval_EvalCode (co=co@entry=0x7ffff36088a0, globals=globals@entry=0x7ffff7e5a318, locals=locals@entry=0x7ffff7e5a318) at Python/ceval.c:731 #17 0x00005555556b5b3b in run_mod (arena=0x7ffff7e75150, flags=<optimized out>, locals=0x7ffff7e5a318, globals=0x7ffff7e5a318, filename=0x7ffff358d270, mod=0x62500001e300) at Python/pythonrun.c:1025 #18 PyRun_FileExFlags (fp=<optimized out>, filename_str=<optimized out>, start=<optimized out>, globals=<optimized out>, locals=<optimized out>, closeit=<optimized out>, flags=<optimized out>) at Python/pythonrun.c:978 #19 0x00005555556b5fdc in PyRun_SimpleFileExFlags (fp=<optimized out>, filename=0x7ffff35c2680 "\314\070\064\302\227\a\254\bJf\331u\230N\273\022\355@\200\352\024`z[\267&\257+\022Q\324\017\310\nSyF2+\001{\327\354\355\245\275\002\064d-\235x\\\327O\230٧\036ތF\222\326\336\060\027q\220\037\217\b\364#=\366\224,\362\355\224i4h\030.c\377\225\360.׀M\033\066\251\ve'M=\261\t\365\307\016\267\203Q\316\313n\251]+\351H\222\244\266{\224FG\257\022\340\071\233r\300\220\065\031\236][\266\v\027\071#\354Ɣ\310\\\243M\243\251\250\372_\362^Φ\306ڝ\222\365\062O1nY\224pĥ\243IV\364\070\356\232\\\222z\242\321\v\027|\342\027\325\325O֬\300\252a0\250"..., closeit=0x1, flags=<optimized out>) at Python/pythonrun.c:419 #20 0x00005555556f2704 in run_file (p_cf=0x7fffffffe2b0, filename=0x604000000010 L"crash.py", fp=0x616000034880) at Modules/main.c:340 #21 Py_Main (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:810 #22 0x000055555569a293 in main (argc=argc@entry=0x2, argv=argv@entry=0x7fffffffe528) at ./Programs/python.c:69 #23 0x00007ffff6086b97 in __libc_start_main (main=0x55555569a050 <main>, argc=0x2, argv=0x7fffffffe528, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe518) at ../csu/libc-start.c:310 #24 0x000055555569bb2a in _start () ``` x.py ``` import hashlib hashlib.shake_128().hexdigest(-10) ``` ---------- components: Demos and Tools messages: 327277 nosy: shuoz priority: normal severity: normal status: open title: hashlib segmentation fault type: security versions: Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue34922> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com