https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=14470

            Bug ID: 14470
           Summary: Crafted CIP packets causes heap-use-after-free
           Product: Wireshark
           Version: Git
          Hardware: x86
                OS: Linux
            Status: UNCONFIRMED
          Severity: Major
          Priority: Low
         Component: Dissection engine (libwireshark)
          Assignee: bugzilla-ad...@wireshark.org
          Reporter: otto.air...@gmail.com
  Target Milestone: ---

Created attachment 16178
  --> https://bugs.wireshark.org/bugzilla/attachment.cgi?id=16178&action=edit
capture file

Build Information:
TShark (Wireshark) 2.5.1 (v2.5.1rc0-417-g24b5a553)
Built using clang 4.2.1 Compatible Clang 3.8.0 (tags/RELEASE_380/final).
--
=================================================================
==130947==ERROR: AddressSanitizer: heap-use-after-free on address
0x61d000019a9e at pc 0x7fe2cc795523 bp 0x7ffd2fe97910 sp 0x7ffd2fe97908
READ of size 4 at 0x61d000019a9e thread T0
    #0 0x7fe2cc795522 in enip_open_cip_connection
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-enip.c:1098
(discriminator 1)
    #1 0x7fe2cc795522 in dissect_cpf
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-enip.c:2628
(discriminator 1)
    #3 0x7fe2cc78ebc2 in dissect_enip_pdu
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-enip.c:2827
    #5 0x7fe2cd677941 in tcp_dissect_pdus
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:3612
    #7 0x7fe2cc78c185 in dissect_enip_tcp
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-enip.c:2869
    #9 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #11 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #13 0x7fe2cbe1bb62 in dissector_try_uint_new
/home/fuzzer/wireshark/wireshark/epan/packet.c:1361
    #15 0x7fe2cd6798b6 in decode_tcp_ports
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:5548
    #17 0x7fe2cd67f4d9 in process_tcp_payload
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:5611
    #19 0x7fe2cd67c124 in desegment_tcp
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:3134
    #20 0x7fe2cd67c124 in dissect_tcp_payload
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:5684
    #22 0x7fe2cd68a800 in dissect_tcp
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-tcp.c:6522
    #24 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #26 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #28 0x7fe2cbe1bb62 in dissector_try_uint_new
/home/fuzzer/wireshark/wireshark/epan/packet.c:1361
    #30 0x7fe2ccb56501 in ip_try_dissect
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-ip.c:1845
    #31 0x7fe2ccb56501 in dissect_ip_v4
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-ip.c:2303
    #33 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #35 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #37 0x7fe2cbe1c8de in dissector_try_uint_new
/home/fuzzer/wireshark/wireshark/epan/packet.c:1361
    #38 0x7fe2cbe1c8de in dissector_try_uint
/home/fuzzer/wireshark/wireshark/epan/packet.c:1385
    #40 0x7fe2cc7d97b0 in dissect_ethertype
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-ethertype.c:259
    #42 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #44 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #46 0x7fe2cbe17f0b in call_dissector_only
/home/fuzzer/wireshark/wireshark/epan/packet.c:3092
    #47 0x7fe2cbe17f0b in call_dissector_with_data
/home/fuzzer/wireshark/wireshark/epan/packet.c:3105
    #49 0x7fe2cc7d651e in dissect_eth_common
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-eth.c:526
    #51 0x7fe2cc7d4087 in dissect_eth
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-eth.c:801
(discriminator 3)
    #53 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #55 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #57 0x7fe2cbe1bb62 in dissector_try_uint_new
/home/fuzzer/wireshark/wireshark/epan/packet.c:1361
    #59 0x7fe2cc859901 in dissect_frame
/home/fuzzer/wireshark/wireshark/epan/dissectors/packet-frame.c:579
    #61 0x7fe2cbe2b291 in call_dissector_through_handle
/home/fuzzer/wireshark/wireshark/epan/packet.c:694
    #63 0x7fe2cbe1c0bb in call_dissector_work
/home/fuzzer/wireshark/wireshark/epan/packet.c:779
    #65 0x7fe2cbe17f0b in call_dissector_only
/home/fuzzer/wireshark/wireshark/epan/packet.c:3092
    #66 0x7fe2cbe17f0b in call_dissector_with_data
/home/fuzzer/wireshark/wireshark/epan/packet.c:3105
    #68 0x7fe2cbe16fd7 in dissect_record
/home/fuzzer/wireshark/wireshark/epan/packet.c:568
    #70 0x7fe2cbdf2d15 in epan_dissect_run
/home/fuzzer/wireshark/wireshark/epan/epan.c:527
    #72 0x5185b3 in process_packet_first_pass
/home/fuzzer/wireshark/wireshark/tshark.c:2917
    #73 0x5185b3 in process_cap_file
/home/fuzzer/wireshark/wireshark/tshark.c:3186
    #74 0x5185b3 in main /home/fuzzer/wireshark/wireshark/tshark.c:2033
    #76 0x7fe2c26b582f in __libc_start_main
/build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
    #78 0x424098 in _start ??:?

0x61d000019a9e is located 30 bytes inside of 2048-byte region
[0x61d000019a80,0x61d00001a280)
freed by thread T0 here:
    #0 0x4c4548 in realloc ??:?
    #2 0x7fe2c3a527d7 in g_realloc ??:?
    #4 0x7fe2d85831d5 in wtap_read_packet_bytes
/home/fuzzer/wireshark/wireshark/wiretap/wtap.c:1346
    #6 0x7fe2d84b2f33 in libpcap_read_packet
/home/fuzzer/wireshark/wireshark/wiretap/libpcap.c:760
    #8 0x7fe2d8582c4a in wtap_read
/home/fuzzer/wireshark/wireshark/wiretap/wtap.c:1234
    #10 0x5182a3 in process_cap_file
/home/fuzzer/wireshark/wireshark/tshark.c:3185 (discriminator 1)
    #11 0x5182a3 in main /home/fuzzer/wireshark/wireshark/tshark.c:2033
(discriminator 1)
    #13 0x7fe2c26b582f in __libc_start_main
/build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291

previously allocated by thread T0 here:
    #0 0x4c41c8 in __interceptor_malloc ??:?
    #2 0x7fe2c3a52718 in g_malloc ??:?
    #4 0x7fe2d8468c24 in wtap_open_offline
/home/fuzzer/wireshark/wireshark/wiretap/file_access.c:1100
    #6 0x51cbf3 in cf_open /home/fuzzer/wireshark/wireshark/tshark.c:4030
    #8 0x51607f in main /home/fuzzer/wireshark/wireshark/tshark.c:2009
    #10 0x7fe2c26b582f in __libc_start_main
/build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291

SUMMARY: AddressSanitizer: heap-use-after-free
(/home/fuzzer/wireshark/wireshark/epan/.libs/libwireshark.so.0+0x8616522)
Shadow bytes around the buggy address:
  0x0c3a7fffb300: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c3a7fffb310: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c3a7fffb320: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c3a7fffb330: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c3a7fffb340: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c3a7fffb350: fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3a7fffb360: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3a7fffb370: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3a7fffb380: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3a7fffb390: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3a7fffb3a0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
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
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  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
==130947==ABORTING

Credit goes to: Otto Airamo and Antti Levomäki, Forcepoint

-- 
You are receiving this mail because:
You are watching all bug changes.
___________________________________________________________________________
Sent via:    Wireshark-bugs mailing list <wireshark-bugs@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-bugs
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-bugs
             mailto:wireshark-bugs-requ...@wireshark.org?subject=unsubscribe

Reply via email to