Wireshark-bugs: [Wireshark-bugs] [Bug 12408] New: Infinite loop in parse_wbxml_tag_defined() in

Date: Sat, 07 May 2016 02:39:06 +0000
Bug ID 12408
Summary Infinite loop in parse_wbxml_tag_defined() in WBXML Dissector
Product Wireshark
Version 1.12.8
Hardware x86
OS All
Status UNCONFIRMED
Severity Normal
Priority Low
Component Dissection engine (libwireshark)
Assignee [email protected]
Reporter [email protected]

Created attachment 14535 [details]
Sample generated by AFL

Build Information:
TShark 1.12.8 (v1.12.8-1-ge00f6ec from unknown)

Copyright 1998-2015 Gerald Combs <[email protected]> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.48.0, with libpcap, with libz 1.2.8, with POSIX
capabilities (Linux), with libnl 3, without SMI, with c-ares 1.11.0, without
Lua, without Python, with GnuTLS 3.4.11, with Gcrypt 1.7.0, with MIT Kerberos,
with GeoIP.

Running on Linux 4.5.1-1-ARCH, with locale en_US.utf8, with libpcap version
1.7.4, with libz 1.2.8.
       Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz

Built using gcc 5.3.0.
--
This issue was uncovered with AFL (http://lcamtuf.coredump.cx/afl/)

This infinite loop is caused by an integer overflow. When a byte read by
tvb_get_guintvar() in sic10_opaque_binary_attr() returns a large integer
(0xffffffd9 in the attached sample) it is makes it way back into
parse_wbxml_tag_defined() where it is eventually used to calculate the offset
of the next tag at parse_wbxml_tag_defined(). When it overflows, it reverts
back to a previous tag which leads to the infinite loop.

This issue is demonstrated in the attached pcap which contains a single packet
that causes 1 million lines of output.

Credit goes to Chris Benedict, Aurelien Delaitre, NIST SAMATE Project,
https://samate.nist.gov


You are receiving this mail because:
  • You are watching all bug changes.