An integer overflow flaw, leading to heap-based buffer overflow was found in the Wiresharks's AFS dissector. A remote attacker could provide a specially-crafted AFS packet capture file, which once opened by an unsuspecting user would lead to denial of service (Wireshark crash). References: ----------- http://www.wireshark.org/security/wnpa-sec-2009-04.html https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3564 Reproducer: ----------- https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3167 Upstream patch: --------------- http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-afs.c?r1=28815&r2=28814&pathrev=28815&view=patch
This issue affects the versions of the Wireshark package, as shipped with Red Hat Enteprise Linux 3, 4, and 5. This issue affects the versions of the Wireshark package, as shipped with Fedora releases of 10, 11, and Rawhide.
MITRE's CVE-2009-2562 entry: Unspecified vulnerability in the AFS dissector in Wireshark 0.9.2 through 1.2.0 allows remote attackers to cause a denial of service (crash) via unknown vectors. References: ---------- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2562 http://www.wireshark.org/security/wnpa-sec-2009-04.html http://www.securityfocus.com/bid/35748 http://secunia.com/advisories/35884 http://www.vupen.com/english/advisories/2009/1970
Official statement from Red Hat Security Response Team regarding this issue: ---------------------------------------------------------------------------- The Red Hat Security Response Team has rated this issue as having low security impact, a future Wireshark package update may address this flaw in Red Hat Enterprise Linux 3, 4, and 5. More information regarding issue severity can be found here: http://www.redhat.com/security/updates/classification/
This really is caused by an integer overflow as indicated in comment #0. i_orxs value is read from the dump. It's later passed to tvb_get_ptr() for sanity-checking, however, that does not report a problem when i_orxs is 0xFFFFFFFF. The reason is that this value is casted from unsigned to signed integer type in compute_offset_length(), i.e. it becomes -1 and that is a special value in compute_offset_length() - which means "to the end of the data". Later, ep_alloc() is called as ep_alloc(i_orxs+1), hence with size equal to 0, allocating buffer of insufficient size. That buffer is later filled with memcpy as memcpy(tmp_orxs, p_orxs, i_orxs). This attempts to copy ~4 gig of data and is likely to trigger SEGV when trying to read or write from an unmapped memory.
wireshark-1.2.2-1.fc11 has been pushed to the Fedora 11 stable repository. If problems still persist, please make note of it in this bug report.
wireshark-1.2.1-1.fc10 has been pushed to the Fedora 10 stable repository. If problems still persist, please make note of it in this bug report.
This issue has been addressed in following products: Red Hat Enterprise Linux 4 Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 3 Via RHSA-2010:0360 https://rhn.redhat.com/errata/RHSA-2010-0360.html