tcpdump
4 years agoChange the version to 4.9.2. tcpdump-4.9.2
Denis Ovsienko [Sun, 3 Sep 2017 16:13:03 +0000 (17:13 +0100)] 
Change the version to 4.9.2.

4 years agoComplete the 4.9.2 section in CHANGES.
Denis Ovsienko [Mon, 28 Aug 2017 22:28:56 +0000 (23:28 +0100)] 
Complete the 4.9.2 section in CHANGES.

4 years agoRx: Fix alignment issue on Solaris 10 SPARC
Francois-Xavier Le Bail [Mon, 28 Aug 2017 14:13:35 +0000 (16:13 +0200)] 
Rx: Fix alignment issue on Solaris 10 SPARC

Fix the 'Segmentation fault' issue with the 'rx_ubik-oobr' test in
'rx_cache_insert' function with the method described in commit 1376682.

4 years agoCVE-2017-13690/IKEv2: Fix some bounds checks.
Guy Harris [Thu, 24 Aug 2017 04:08:42 +0000 (21:08 -0700)] 
CVE-2017-13690/IKEv2: Fix some bounds checks.

Use a pointer of the correct type in ND_TCHECK(), or use ND_TCHECK2()
and provide the correct length.

While we're at it, remove the blank line between some checks and the
UNALIGNED_MEMCPY()s they protect.

Also, note the places where we print the entire payload.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13689/IKEv1: Fix addr+subnet length check.
Guy Harris [Thu, 24 Aug 2017 03:45:39 +0000 (20:45 -0700)] 
CVE-2017-13689/IKEv1: Fix addr+subnet length check.

An IPv6 address plus subnet mask is 32 bytes, not 20 bytes.
16 bytes of IPv6 address, 16 bytes of subnet mask.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13688/OLSR: Do bounds checks before we fetch data.
Guy Harris [Thu, 24 Aug 2017 02:26:37 +0000 (19:26 -0700)] 
CVE-2017-13688/OLSR: Do bounds checks before we fetch data.

While we're at it, clean up some other bounds checks, so we check that
we have a complete IPv4 message header if it's IPv4 and a complete IPv6
message header if it's IPv6.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add tests using the capture files supplied by the reporter(s).

4 years agoIS-IS: fix Interface Switching Capability sub-TLV too
Denis Ovsienko [Wed, 16 Aug 2017 22:22:45 +0000 (23:22 +0100)] 
IS-IS: fix Interface Switching Capability sub-TLV too

Make a couple more fixes in isis_print_is_reach_subtlv() with the same
reasoning as in the previous commit. This bugfix is based on a code
inspection so comes without a test case.

4 years agoCVE-2017-13055/IS-IS: fix an Extended IS Reachability sub-TLV
Denis Ovsienko [Wed, 16 Aug 2017 22:04:31 +0000 (23:04 +0100)] 
CVE-2017-13055/IS-IS: fix an Extended IS Reachability sub-TLV

In isis_print_is_reach_subtlv() one of the case blocks did not check that
the sub-TLV "V" is actually present and could over-read the input buffer.
Add a length check to fix that and remove a useless boundary check from
a loop because the boundary is tested for the full length of "V" before
the switch block.

Update one of the prior test cases as it turns out it depended on this
previously incorrect code path to make it to its own malformed structure
further down the buffer, the bugfix has changed its output.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13052/CFM: refine decoding of the Sender ID TLV
Denis Ovsienko [Mon, 14 Aug 2017 23:05:32 +0000 (00:05 +0100)] 
CVE-2017-13052/CFM: refine decoding of the Sender ID TLV

In cfm_network_addr_print() add a length argument and use it to validate
the input buffer.

In cfm_print() add a length check for MAC address chassis ID. Supply
cfm_network_addr_print() with the length of its buffer and a correct
pointer to the buffer (it was off-by-one before). Change some error
handling blocks to skip to the next TLV in the current PDU rather than to
stop decoding the PDU. Print the management domain and address contents,
although in hex only so far.

Add some comments to clarify the code flow and to tell exact sections in
IEEE standard documents. Add new error messages and make some existing
messages more specific.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13053/BGP: fix VPN route target bounds checks
Denis Ovsienko [Fri, 11 Aug 2017 12:39:02 +0000 (13:39 +0100)] 
CVE-2017-13053/BGP: fix VPN route target bounds checks

decode_rt_routing_info() didn't check bounds before fetching 4 octets of
the origin AS field and could over-read the input buffer, put it right.

It also fetched the varying number of octets of the route target field
from 4 octets lower than the correct offset, put it right.

It also used the same temporary buffer explicitly through as_printf()
and implicitly through bgp_vpn_rd_print() so the end result of snprintf()
was not what was originally intended.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13054/LLDP: add a missing length check
Denis Ovsienko [Wed, 9 Aug 2017 23:01:55 +0000 (00:01 +0100)] 
CVE-2017-13054/LLDP: add a missing length check

In lldp_private_8023_print() the case block for subtype 4 (Maximum Frame
Size TLV, IEEE 802.3bc-2009 Section 79.3.4) did not include the length
check and could over-read the input buffer, put it right.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13050/RPKI-Router: fix a few bugs
Denis Ovsienko [Wed, 9 Aug 2017 18:51:09 +0000 (19:51 +0100)] 
CVE-2017-13050/RPKI-Router: fix a few bugs

The decoder didn't properly check that the PDU length stored in the PDU
header is correct. The only check in place was in rpki_rtr_print() and it
tested whether the length is zero but that is not sufficient. Make all
necessary length and bounds checks, both generic and type-specific, in
rpki_rtr_pdu_print() and reduce rpki_rtr_print() to a simple loop.

This also fixes a minor bug and PDU type 0 (Serial Notify from RFC 6810
Section 5.2) is valid again.

In rpki_rtr_pdu_print() any protocol version was considered version 0,
fix it to skip the rest of input if the PDU protocol version is unknown.

Ibid, the PDU type 10 (Error Report from RFC 6810 Section 5.10) case
block didn't consider the "Length of Error Text" data element mandatory,
put it right.

Ibid, when printing an encapsulated PDU, give itself (via recursion)
respective buffer length to make it possible to tell whether the
encapsulated PDU fits. Do not recurse deeper than 2nd level.

Update prior RPKI-Router test cases that now stop to decode earlier
because of the stricter checks.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13051/RSVP: fix bounds checks for UNI
Denis Ovsienko [Mon, 7 Aug 2017 21:43:20 +0000 (22:43 +0100)] 
CVE-2017-13051/RSVP: fix bounds checks for UNI

Fixup the part of rsvp_obj_print() that decodes the GENERALIZED_UNI
object from RFC 3476 Section 3.1 to check the sub-objects inside that
object more thoroughly.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13047/ES-IS: put an existing bounds check right
Denis Ovsienko [Sun, 6 Aug 2017 19:54:42 +0000 (20:54 +0100)] 
CVE-2017-13047/ES-IS: put an existing bounds check right

The bounds check in esis_print() tested one pointer at the beginning of
a loop that incremented another, make the trivial fix. While at it, make
the function print a standard marker when it detects truncated data and
update some existing ES-IS tests respectively.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13048/RSVP: fix decoding of Fast Reroute objects
Denis Ovsienko [Sun, 6 Aug 2017 17:45:09 +0000 (18:45 +0100)] 
CVE-2017-13048/RSVP: fix decoding of Fast Reroute objects

In rsvp_obj_print() the case block for Class-Num 205 (FAST_REROUTE) from
RFC 4090 Section 4.1 could over-read accessing the buffer contents before
making the bounds check. Rearrange those steps the correct way around.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoRx: add a missing bounds check for callbacks
Denis Ovsienko [Fri, 4 Aug 2017 20:57:55 +0000 (21:57 +0100)] 
Rx: add a missing bounds check for callbacks

Add a bounds check to cb_print(), this likely makes the same type of
bugfix as the previous commit but comes without a test case as the
problem was identified through code review.

Add a comment about bounds check to ubik_print().

4 years agoCVE-2017-13049/Rx: add a missing bounds check for Ubik
Denis Ovsienko [Fri, 4 Aug 2017 16:15:07 +0000 (17:15 +0100)] 
CVE-2017-13049/Rx: add a missing bounds check for Ubik

One of the case blocks in ubik_print() didn't check bounds before
fetching 32 bits of packet data and could overread past the captured
packet data by that amount.

This fixes a buffer over-read discovered by Henri Salo from Nixu
Corporation.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13043/BGP: fix decoding of MVPN route types 6 and 7
Denis Ovsienko [Thu, 3 Aug 2017 23:08:23 +0000 (00:08 +0100)] 
CVE-2017-13043/BGP: fix decoding of MVPN route types 6 and 7

RFC 6514 Section 4.6 defines the structure for Shared Tree Join (6) and
Source Tree Join (7) multicast VPN route types. decode_multicast_vpn()
didn't implement the Source AS field of that structure properly, adjust
the offsets to put it right.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13046/BGP: fix an existing bounds check for PMSI Tunnel
Denis Ovsienko [Thu, 3 Aug 2017 21:34:44 +0000 (22:34 +0100)] 
CVE-2017-13046/BGP: fix an existing bounds check for PMSI Tunnel

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13045/VQP: add some bounds checks
Denis Ovsienko [Sat, 29 Jul 2017 22:21:00 +0000 (23:21 +0100)] 
CVE-2017-13045/VQP: add some bounds checks

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13044/HNCP: add DHCPv4-Data bounds checks
Denis Ovsienko [Sat, 29 Jul 2017 20:45:35 +0000 (21:45 +0100)] 
CVE-2017-13044/HNCP: add DHCPv4-Data bounds checks

dhcpv4_print() in print-hncp.c had the same bug as dhcpv6_print(), apply
a fix along the same lines.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13042/HNCP: add DHCPv6-Data bounds checks
Denis Ovsienko [Sat, 29 Jul 2017 17:52:38 +0000 (18:52 +0100)] 
CVE-2017-13042/HNCP: add DHCPv6-Data bounds checks

hncp_print_rec() validates each HNCP TLV to be within the declared as
well as the on-the-wire packet space. However, dhcpv6_print() in the same
file didn't do the same for the DHCPv6 options within the HNCP
DHCPv6-Data TLV value, which could cause an out-of-bounds read when
decoding an invalid packet. Add missing checks to dhcpv6_print().

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13041/ICMP6: Add more bounds checks.
Guy Harris [Tue, 13 Jun 2017 05:16:12 +0000 (22:16 -0700)] 
CVE-2017-13041/ICMP6: Add more bounds checks.

This fixes a buffer over-read discovered by Kim Gwan Yeong.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13040/MPTCP: Clean up printing DSS suboption.
Guy Harris [Mon, 12 Jun 2017 22:04:18 +0000 (15:04 -0700)] 
CVE-2017-13040/MPTCP: Clean up printing DSS suboption.

Do the length checking inline; that means we print stuff up to the point
at which we run out of option data.

First check to make sure we have at least 4 bytes of option, so we have
flags to check.

This fixes a buffer over-read discovered by Kim Gwan Yeong.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13039/IKEv1: Do more bounds checking.
Guy Harris [Mon, 12 Jun 2017 04:06:55 +0000 (21:06 -0700)] 
CVE-2017-13039/IKEv1: Do more bounds checking.

Have ikev1_attrmap_print() and ikev1_attr_print() do full bounds
checking, and return null on a bounds overflow.  Have their callers
check for a null return.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13038/PPP: Do bounds checking.
Guy Harris [Mon, 12 Jun 2017 01:27:27 +0000 (18:27 -0700)] 
CVE-2017-13038/PPP: Do bounds checking.

This fixes a buffer over-read discovered by Brian 'geeknik' Carpenter.

Add a test using the capture file supplied by Katie Holly.

4 years agoRemove some trailing spaces
Francois-Xavier Le Bail [Mon, 27 Mar 2017 09:34:57 +0000 (11:34 +0200)] 
Remove some trailing spaces

4 years agoCVE-2017-13037/IP: Add bounds checks when printing time stamp options.
Guy Harris [Sat, 25 Mar 2017 01:42:09 +0000 (18:42 -0700)] 
CVE-2017-13037/IP: Add bounds checks when printing time stamp options.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoIPv6 mobility: Add another test.
Guy Harris [Fri, 24 Mar 2017 02:11:31 +0000 (19:11 -0700)] 
IPv6 mobility: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoPIM: Add another test.
Guy Harris [Fri, 24 Mar 2017 02:08:06 +0000 (19:08 -0700)] 
PIM: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoOSPFv3: More bounds checks.
Guy Harris [Fri, 24 Mar 2017 01:54:36 +0000 (18:54 -0700)] 
OSPFv3: More bounds checks.

4 years agoCVE-2017-13036/OSPFv3: Add a bounds check before fetching data
Francois-Xavier Le Bail [Thu, 23 Mar 2017 23:55:18 +0000 (00:55 +0100)] 
CVE-2017-13036/OSPFv3: Add a bounds check before fetching data

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13035/Properly handle IS-IS IDs shorter than a system ID (MAC address).
Guy Harris [Thu, 23 Mar 2017 21:37:56 +0000 (14:37 -0700)] 
CVE-2017-13035/Properly handle IS-IS IDs shorter than a system ID (MAC address).

Some of them are variable-length, with a field giving the total length,
and therefore they can be shorter than 6 octets.  If one is, don't run
past the end.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13034/PGM: Add a bounds check.
Guy Harris [Thu, 23 Mar 2017 21:11:30 +0000 (14:11 -0700)] 
CVE-2017-13034/PGM: Add a bounds check.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Move a return to make the code a bit cleaner (i.e., make it more obvious
that if we don't have enough of the PGM header, we just print the source
and destination IP addresses, mark it as incomplete PGM, and don't try
to look at the PGM header).

4 years agoIPv6 mobility: Add another test.
Guy Harris [Thu, 23 Mar 2017 20:52:40 +0000 (13:52 -0700)] 
IPv6 mobility: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13033/VTP: Add more bound and length checks.
Guy Harris [Thu, 23 Mar 2017 20:30:56 +0000 (13:30 -0700)] 
CVE-2017-13033/VTP: Add more bound and length checks.

This fixes a buffer over-read discovered by Bhargava Shastry.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Update another VTP test's .out file for this change.

Don't treate a TLV type or length of 0 as invalid; a type of 0 should
just be reported as illegal if that type isn't used, and the length is
the length of the *value*, not the length of the entire TLV, so if it's
zero there won't be an infinite loop.  (It's still not *legal*, as the
values of all the TLVs we handle are 1 16-bit word long; we added a
check for that.)

Update some comments while we're at it, to give a new URL for one Cisco
page and a non-Cisco URL for another former Cisco page (Cisco's UniverCD
pages don't seem to be available any more, and Cisco's robots.txt file
didn't allow the Wayback Machine to archive it).

4 years agoIPv6 mobility: Add another test.
Guy Harris [Wed, 22 Mar 2017 23:07:50 +0000 (16:07 -0700)] 
IPv6 mobility: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13020/VTP: Add another test.
Guy Harris [Wed, 22 Mar 2017 23:02:48 +0000 (16:02 -0700)] 
CVE-2017-13020/VTP: Add another test.

A capture file supplied by Bhargava Shastry, modified so the capture
file won't be rejected as an invalid capture.

4 years agoCVE-2017-13028/BOOTP: Add another test.
Guy Harris [Wed, 22 Mar 2017 22:59:23 +0000 (15:59 -0700)] 
CVE-2017-13028/BOOTP: Add another test.

A capture file supplied by Bhargava Shastry, modified so the capture
file won't be rejected as an invalid capture.

4 years agoCVE-2017-13032/RADIUS: Check whether a byte exists before testing its value.
Guy Harris [Wed, 22 Mar 2017 22:38:02 +0000 (15:38 -0700)] 
CVE-2017-13032/RADIUS: Check whether a byte exists before testing its value.

Reverse the test in a for loop to test the length before testing whether
we have a null byte.

This fixes a buffer over-read discovered by Bhargava Shastry.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Clean up other length tests while we're at it.

4 years agoPGM: Add another test.
Guy Harris [Wed, 22 Mar 2017 22:03:51 +0000 (15:03 -0700)] 
PGM: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13031/Check for the presence of the entire IPv6 fragment header.
Guy Harris [Wed, 22 Mar 2017 21:55:12 +0000 (14:55 -0700)] 
CVE-2017-13031/Check for the presence of the entire IPv6 fragment header.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Clean up some whitespace in tests/TESTLIST while we're at it.

4 years agoPIM: Add another test.
Guy Harris [Wed, 22 Mar 2017 21:47:04 +0000 (14:47 -0700)] 
PIM: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoIPv6 mobility: Add another test.
Guy Harris [Wed, 22 Mar 2017 21:42:50 +0000 (14:42 -0700)] 
IPv6 mobility: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoPIM: Add another test.
Guy Harris [Wed, 22 Mar 2017 21:36:35 +0000 (14:36 -0700)] 
PIM: Add another test.

Add a test using the capture file supplied by Bhargava Shastry, modified
so the capture file won't be rejected as an invalid capture.

4 years agoPIM: Iterate using the length, not the end pointer.
Guy Harris [Wed, 22 Mar 2017 21:33:39 +0000 (14:33 -0700)] 
PIM: Iterate using the length, not the end pointer.

That way, we report snapshot-based truncations, rather than just saying
"end of packet".

4 years agoCVE-2017-13030/PIM: Redo bounds checks and add length checks.
Guy Harris [Wed, 22 Mar 2017 21:09:28 +0000 (14:09 -0700)] 
CVE-2017-13030/PIM: Redo bounds checks and add length checks.

Use ND_TCHECK macros to do bounds checking, and add length checks before
the bounds checks.

Add a bounds check that the review process found was missing.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Update one test output file to reflect the changes.

4 years agoCVE-2017-13029/PPP: Fix a bounds check, and clean up other bounds checks.
Guy Harris [Wed, 22 Mar 2017 18:48:06 +0000 (11:48 -0700)] 
CVE-2017-13029/PPP: Fix a bounds check, and clean up other bounds checks.

For configuration protocol options, use ND_TCHECK() and
ND_TCHECK_nBITS() macros, passing them the appropriate pointer argument.
This fixes one case where the ND_TCHECK2() call they replace was not
checking enough bytes.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13028/BOOTP: Add a bounds check before fetching data
Francois-Xavier Le Bail [Wed, 22 Mar 2017 18:37:04 +0000 (19:37 +0100)] 
CVE-2017-13028/BOOTP: Add a bounds check before fetching data

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't cause 'tcpdump: pcap_loop: truncated dump file'

4 years agoCVE-2017-13027/LLDP: Fix a bounds check.
Guy Harris [Wed, 22 Mar 2017 18:21:00 +0000 (11:21 -0700)] 
CVE-2017-13027/LLDP: Fix a bounds check.

The total length of the OID is the OID length plus the length of the OID
length itself.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13026/IS-IS: Clean up processing of subTLVs.
Guy Harris [Wed, 22 Mar 2017 17:59:47 +0000 (10:59 -0700)] 
CVE-2017-13026/IS-IS: Clean up processing of subTLVs.

Add bounds checks, do a common check to make sure we captured the entire
subTLV, add checks to make sure the subTLV fits within the TLV.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add tests using the capture files supplied by the reporter(s), modified
so the capture files won't be rejected as an invalid capture.

Update existing tests for changes to IS-IS dissector.

4 years agoCVE-2017-13024/IPv6 mobility: Add another test for a previous bounds check fix
Francois-Xavier Le Bail [Wed, 22 Mar 2017 17:03:24 +0000 (18:03 +0100)] 
CVE-2017-13024/IPv6 mobility: Add another test for a previous bounds check fix

This is another capture file supplied by Bhargava Shastry, modified
so the capture file won't cause 'tcpdump: pcap_loop: truncated dump file'

4 years agoCVE-2017-13025/IPv6 mobility: Add a bounds check before fetching data
Francois-Xavier Le Bail [Wed, 22 Mar 2017 16:07:47 +0000 (17:07 +0100)] 
CVE-2017-13025/IPv6 mobility: Add a bounds check before fetching data

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't cause 'tcpdump: pcap_loop: truncated dump file'

4 years agoCVE-2017-13024/IPv6 mobility: Add a bounds check before fetching data
Francois-Xavier Le Bail [Wed, 22 Mar 2017 15:27:48 +0000 (16:27 +0100)] 
CVE-2017-13024/IPv6 mobility: Add a bounds check before fetching data

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't cause 'tcpdump: pcap_loop: truncated dump file'

4 years agoCVE-2017-13023/IPv6 mobility: Add a bounds check before fetching data
Francois-Xavier Le Bail [Wed, 22 Mar 2017 15:08:25 +0000 (16:08 +0100)] 
CVE-2017-13023/IPv6 mobility: Add a bounds check before fetching data

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't cause 'tcpdump: pcap_loop: truncated dump file'

4 years agoCVE-2017-13022/IP: Add bounds checks to ip_printroute().
Guy Harris [Wed, 22 Mar 2017 06:07:17 +0000 (23:07 -0700)] 
CVE-2017-13022/IP: Add bounds checks to ip_printroute().

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13021/ICMP6: Add a missing bounds check.
Guy Harris [Wed, 22 Mar 2017 06:01:44 +0000 (23:01 -0700)] 
CVE-2017-13021/ICMP6: Add a missing bounds check.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13020/VTP: Add some missing bounds checks.
Guy Harris [Wed, 22 Mar 2017 05:02:41 +0000 (22:02 -0700)] 
CVE-2017-13020/VTP: Add some missing bounds checks.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13019: Clean up PGM option processing.
Guy Harris [Wed, 22 Mar 2017 04:49:45 +0000 (21:49 -0700)] 
CVE-2017-13019: Clean up PGM option processing.

Add #defines for option lengths or the lengths of the fixed-length part
of the option.  Sometimes those #defines differ from what was there
before; what was there before was wrong, probably because the option
lengths given in RFC 3208 were sometimes wrong - some lengths included
the length of the option header, some lengths didn't.

Don't use "sizeof(uintXX_t)" for sizes in the packet, just use the
number of bytes directly.

For the options that include an IPv4 or IPv6 address, check the option
length against the length of what precedes the address before fetching
any of that data.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13018/PGM: Add a missing bounds check.
Guy Harris [Wed, 22 Mar 2017 02:49:28 +0000 (19:49 -0700)] 
CVE-2017-13018/PGM: Add a missing bounds check.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13017/DHCPv6: Add a missing option length check.
Guy Harris [Wed, 22 Mar 2017 02:40:51 +0000 (19:40 -0700)] 
CVE-2017-13017/DHCPv6: Add a missing option length check.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13016/ES-IS: Fix printing of addresses in RD PDUs.
Guy Harris [Wed, 22 Mar 2017 02:30:48 +0000 (19:30 -0700)] 
CVE-2017-13016/ES-IS: Fix printing of addresses in RD PDUs.

Always print the SNPA, and flag it as such; only print it as a MAC
address if it's 6 bytes long.

Identify the NET as such.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add tests using the capture files supplied by the reporter(s), modified
so the capture files won't be rejected as an invalid capture.

4 years agoCVE-2017-13015/EAP: Add more bounds checks.
Guy Harris [Thu, 16 Mar 2017 19:02:20 +0000 (12:02 -0700)] 
CVE-2017-13015/EAP: Add more bounds checks.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13014/White Board: Do more bounds checks.
Guy Harris [Thu, 16 Mar 2017 18:25:40 +0000 (11:25 -0700)] 
CVE-2017-13014/White Board: Do more bounds checks.

This fixes a buffer over-read discovered by Yannick Formaggio.

Add a test using the capture file supplied by the reporter(s).

While we're at it, print a truncation error if the packets are
truncated, rather than just, in effect, ignoring the result of the
routines that print particular packet types.

4 years agoCVE-2017-13013/ARP: Fix printing of ARP protocol addresses.
Guy Harris [Thu, 16 Mar 2017 17:54:31 +0000 (10:54 -0700)] 
CVE-2017-13013/ARP: Fix printing of ARP protocol addresses.

If the protocol type isn't ETHERTYPE_IP or ETHERTYPE_TRAIL, or if the
protocol address length isn't 4, don't print the address as an IPv4 address.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

Update another test file's tcpdump output to reflect this change.

4 years agoCVE-2017-13012/ICMP: Add a missing bounds check.
Guy Harris [Thu, 16 Mar 2017 06:45:38 +0000 (23:45 -0700)] 
CVE-2017-13012/ICMP: Add a missing bounds check.

Check before fetching the length from the included packet's IPv4 header.

This fixes a buffer over-read discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoCVE-2017-13011/Properly check for buffer overflow in bittok2str_internal().
Guy Harris [Wed, 15 Mar 2017 19:12:21 +0000 (12:12 -0700)] 
CVE-2017-13011/Properly check for buffer overflow in bittok2str_internal().

Also, make the buffer bigger.

This fixes a buffer overflow discovered by Bhargava Shastry,
SecT/TU Berlin.

Add a test using the capture file supplied by the reporter(s), modified
so the capture file won't be rejected as an invalid capture.

4 years agoip6r0_reserved is an array of octets; extract the value from it.
Guy Harris [Tue, 14 Mar 2017 19:22:28 +0000 (12:22 -0700)] 
ip6r0_reserved is an array of octets; extract the value from it.

dp0->ip6r0_reserved evaluates to a pointer to the first element of the
array, which is always non-null, so it doesn't test whether the *value*
of the field is non-zero.  Call EXTRACT_32BITS() on it to check whether
the value is zero.

4 years agoFix Linux/GCC build after the previous commit.
Denis Ovsienko [Sun, 12 Mar 2017 10:00:52 +0000 (10:00 +0000)] 
Fix Linux/GCC build after the previous commit.

ip6.h now needs netdissect.h, fix includes order where required to fix:

./ip6.h:181:2: error: unknown type name ‘nd_uint8_t’
  nd_uint8_t  ip6r0_nxt;  /* next header */
  ^
./ip6.h:182:2: error: unknown type name ‘nd_uint8_t’
  nd_uint8_t  ip6r0_len;  /* length in units of 8 octets */
  ^
./ip6.h:183:2: error: unknown type name ‘nd_uint8_t’
  nd_uint8_t  ip6r0_type;  /* always zero */
  ^
./ip6.h:184:2: error: unknown type name ‘nd_uint8_t’
  nd_uint8_t  ip6r0_segleft; /* segments left */
  ^
./ip6.h:185:2: error: unknown type name ‘nd_uint32_t’
  nd_uint32_t ip6r0_reserved; /* reserved field */
  ^

4 years agoRT6: Fix alignment issue with Solaris Studio 12.3 on Solaris 10 SPARC
Francois-Xavier Le Bail [Sat, 11 Mar 2017 14:42:26 +0000 (15:42 +0100)] 
RT6: Fix alignment issue with Solaris Studio 12.3 on Solaris 10 SPARC

Fix the 'Bus Error - core dumped' issue with the 'ipv6-routing-header' test
when '-m64' compiling option is used.

Fix with the method described in commit 1376682.

/opt/solarisstudio12.3/bin/cc -V
gives:
cc: Sun C 5.12 SunOS_sparc Patch 148917-09 2016/08/02

4 years agoBGP: Fix a test invalid on a 32 bits system
Francois-Xavier Le Bail [Fri, 10 Mar 2017 09:02:48 +0000 (10:02 +0100)] 
BGP: Fix a test invalid on a 32 bits system

The 'len - (tptr - pptr)' expression type is 'unsigned int' on a 32 bits
system.
Thus the conversion changes negative values to positive ones and the > 0
test is invalid.
Update the expression to compare two pointers.

4 years agoCVE-2017-13010/BEEP: Do bounds checking when comparing strings.
Guy Harris [Tue, 7 Mar 2017 04:12:33 +0000 (20:12 -0800)] 
CVE-2017-13010/BEEP: Do bounds checking when comparing strings.

This fixes a buffer over-read discovered by Brian 'geeknik' Carpenter.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13009/IPv6 mobility: Add a bounds check.
Guy Harris [Mon, 6 Mar 2017 18:13:22 +0000 (10:13 -0800)] 
CVE-2017-13009/IPv6 mobility: Add a bounds check.

This fixes a buffer over-read discovered by Brian 'geeknik' Carpenter.

Add a test using the capture file supplied by the reporter(s).

While we're at it:

Add a comment giving the RFC for IPv6 mobility headers.

Clean up some bounds checks to make it clearer what they're checking, by
matching the subsequent EXTRACT_ calls or memcpy.

For the binding update, if none of the flag bits are set, don't check
the individual flag bits.

4 years agoCVE-2017-13008/IEEE 802.11: Fix TIM bitmap copy to copy from p + offset.
Guy Harris [Mon, 6 Mar 2017 17:42:49 +0000 (09:42 -0800)] 
CVE-2017-13008/IEEE 802.11: Fix TIM bitmap copy to copy from p + offset.

offset has already been advanced to point to the bitmap; we shouldn't
add the amount to advance again.

This fixes a buffer over-read discovered by Brian 'geeknik' Carpenter.

Add a test using the capture file supplied by the reporter(s).

While we're at it, remove some redundant tests - we've already checked,
before the case statement, whether we have captured the entire
information element and whether the entire information element is
present in the on-the-wire packet; in the cases for particular IEs, we
only need to make sure we don't go past the end of the IE.

4 years agoCVE-2017-13007/PKTAP: Pass a properly updated struct pcap_pkthdr to the sub-dissector.
Guy Harris [Mon, 6 Mar 2017 04:21:48 +0000 (20:21 -0800)] 
CVE-2017-13007/PKTAP: Pass a properly updated struct pcap_pkthdr to the sub-dissector.

The sub-dissector expects that the length and captured length will
reflect the actual remaining data in the packet, not the raw amount
including the PKTAP header; pass an updated header, just as we do for
PPI.

This fixes a buffer over-read discovered by Yannick Formaggio.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13006/L2TP: Check whether an AVP's content exceeds the AVP length.
Guy Harris [Mon, 6 Mar 2017 03:56:20 +0000 (19:56 -0800)] 
CVE-2017-13006/L2TP: Check whether an AVP's content exceeds the AVP length.

It's not good enough to check whether all the data specified by the AVP
length was captured - you also have to check whether that length is
large enough for all the required data in the AVP.

This fixes a buffer over-read discovered by Yannick Formaggio.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-12896/ISAKMP: Add another test.
Guy Harris [Sun, 5 Mar 2017 21:00:43 +0000 (13:00 -0800)] 
CVE-2017-12896/ISAKMP: Add another test.

This is from Brian Carpenter for the print-isakmp bug fix.

4 years agoCVE-2017-12899/DECnet: Add another test.
Guy Harris [Sun, 5 Mar 2017 19:28:45 +0000 (11:28 -0800)] 
CVE-2017-12899/DECnet: Add another test.

This is from Brian Carpenter for the print-decnet bug fix.

4 years agoNFS: Check for all relevant RPC call body fields at the beginning.
Guy Harris [Sun, 5 Mar 2017 19:11:20 +0000 (11:11 -0800)] 
NFS: Check for all relevant RPC call body fields at the beginning.

If we don't have the procedure number, we'll give up eventually; might
as well give up before we do any work that'll be thrown away.

4 years agoCVE-2017-13005/NFS: Add two bounds checks before fetching data
Francois-Xavier Le Bail [Thu, 23 Feb 2017 15:50:18 +0000 (16:50 +0100)] 
CVE-2017-13005/NFS: Add two bounds checks before fetching data

This fixes a buffer over-read discovered by Kamil Frankowicz.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13004/Juniper: Add a capture file.
Guy Harris [Wed, 22 Feb 2017 09:24:45 +0000 (01:24 -0800)] 
CVE-2017-13004/Juniper: Add a capture file.

File from Kamil Frankowicz testing an existing fix.

(Same problem, and same fix, as the recent Juniper fixes.)

4 years agoCVE-2017-13004/Juniper: Add a bounds check.
Guy Harris [Tue, 21 Feb 2017 22:20:32 +0000 (14:20 -0800)] 
CVE-2017-13004/Juniper: Add a bounds check.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add tests using the capture files supplied by the reporter(s).

4 years agoCVE-2017-13003/Clean up the LMP dissector.
Guy Harris [Mon, 20 Feb 2017 05:13:25 +0000 (21:13 -0800)] 
CVE-2017-13003/Clean up the LMP dissector.

Do a lot more bounds and length checks.

Add a EXTRACT_8BITS() macro, for completeness, and so as not to confuse
people into thinking that, to fetch a 1-byte value from a packet, they
need to use EXTRACT_16BITS() to fetch a 2-byte value and then use
shifting and masking to extract the desired byte.  Use that rather than
using EXTRACT_16BITS() to fetch a 2-byte value and then shifting and
masking to extract the desired byte.

Don't treat IPv4 addresses and unnumbered interface IDs the same; the
first should be printed as an IPv4 address but the latter should just be
printed as numbers.  Handle IPv6 addresses in more object types while
we're at it.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13002/AODV: Add some missing bounds checks.
Guy Harris [Sun, 19 Feb 2017 22:19:32 +0000 (14:19 -0800)] 
CVE-2017-13002/AODV: Add some missing bounds checks.

In aodv_extension() do a bounds check on the extension header before we
look at it.

This fixes a buffer over-read discovered by Kamil Frankowicz.

Add a test using the capture file supplied by the reporter(s).

While we're at it, add the RFC number, and check the validity of the
length for the Hello extension.

4 years agoCVE-2017-13001/NFS: Don't copy more data than is in the file handle.
Guy Harris [Sun, 19 Feb 2017 21:56:12 +0000 (13:56 -0800)] 
CVE-2017-13001/NFS: Don't copy more data than is in the file handle.

Also, put the buffer on the stack; no reason to make it static.  (65
bytes isn't a lot.)

This fixes a buffer over-read discovered by Kamil Frankowicz.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13000/IEEE 802.15.4: Fix bug introduced two fixes prior.
Guy Harris [Tue, 21 Feb 2017 22:10:15 +0000 (14:10 -0800)] 
CVE-2017-13000/IEEE 802.15.4: Fix bug introduced two fixes prior.

We've already advanced the pointer past the PAN ID, if present; it now
points to the address, so don't add 2 to it.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13000/IEEE 802.15.4: Fix bug introduced by previous fix.
Guy Harris [Tue, 21 Feb 2017 21:40:19 +0000 (13:40 -0800)] 
CVE-2017-13000/IEEE 802.15.4: Fix bug introduced by previous fix.

We've already advanced the pointer past the PAN ID, if present; it now
points to the address, so don't add 2 to it.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-13000/IEEE 802.15.4: Add more bounds checks.
Guy Harris [Sat, 18 Feb 2017 01:43:10 +0000 (17:43 -0800)] 
CVE-2017-13000/IEEE 802.15.4: Add more bounds checks.

While we're at it, add a bunch of macros for the frame control field's
subfields, have the reserved frame types show the frame type value, use
the same code path for processing source and destination addresses
regardless of whether -v was specified (just leave out the addresses in
non-verbose mode), and return the header length in all cases.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add tests using the capture files supplied by the reporter(s).

4 years agoThat array only needs 16 elements.
Guy Harris [Thu, 16 Feb 2017 00:20:33 +0000 (16:20 -0800)] 
That array only needs 16 elements.

No need for a 17th null terminator.

This might, or might not, give Coverity a clue that

u_char *p;

hex[*p >> 4]
hex[*p & 0xf]

are both safe, no matter how "tainted" p is, because if you shift an
8-bit unsigned value right 4 bits, the result is between 0 and 15.  (See
CID 1206732.)

4 years agoClean up addrtostr6().
Guy Harris [Thu, 16 Feb 2017 00:11:46 +0000 (16:11 -0800)] 
Clean up addrtostr6().

"Word" in "words" means "16-bit words", or "16-bit piece of an IPv6
address".  Declare it so.

Instead of going over the IPv6 address a byte at a time, process 2 bytes
at a time; it makes what the code's doing more obvious.

Should squelch Coverity CID 1324572.

4 years agoRESP: Fix overflow check.
Guy Harris [Wed, 15 Feb 2017 23:43:46 +0000 (15:43 -0800)] 
RESP: Fix overflow check.

At that point, result is a multiple of 10, so it can at most be
2147483640, i.e. (INT_MAX / 10)*10.

If it's less than that, you can add any value between 0 and 9 to it and
it won't overflow.

If it's *equal* to that, you can only add a value between 0 and 7
without overflowing, i.e. the maximum is INT_MAX % 10.

Addresses Coverity CID 1400557.

4 years agoJust dissect the TFTP packet byte by byte.
Guy Harris [Wed, 15 Feb 2017 23:24:56 +0000 (15:24 -0800)] 
Just dissect the TFTP packet byte by byte.

Don't use a structure to define the layout - Coverity gets confused by
tu_stuff being 1 byte, and complains that we're going past 1 byte.

Should fix Coverity CID 1400556.

4 years agoCFM: There must be at least one byte of MA short name.
Guy Harris [Wed, 15 Feb 2017 23:01:02 +0000 (15:01 -0800)] 
CFM: There must be at least one byte of MA short name.

This should fix Coverity CID 1400555.

4 years agoRESP: Remove some redundant checks.
Guy Harris [Wed, 15 Feb 2017 21:22:41 +0000 (13:22 -0800)] 
RESP: Remove some redundant checks.

Before we break out of the loop, we've already checked for those
conditions.  No need to check for them again.

This fixes Coverity CIDs 1400553 and 1400554.

4 years agoCVE-2017-13725/IPv6 R.H.: Add a capture file.
Guy Harris [Wed, 15 Feb 2017 08:37:11 +0000 (00:37 -0800)] 
CVE-2017-13725/IPv6 R.H.: Add a capture file.

This is from Kamil Frankowicz testing an existing fix.

This is a test for the print-rt6.c fix I made after inspecting the code.

4 years agoCVE-2017-12996/PIMv2: Make sure PIM TLVs have the right length.
Guy Harris [Mon, 13 Feb 2017 19:31:25 +0000 (11:31 -0800)] 
CVE-2017-12996/PIMv2: Make sure PIM TLVs have the right length.

We do bounds checks based on the TLV length, so if the TLV's length is
too short, and we don't check for that, we could end up fetching data
past the end of the TLV - including past the length of the captured data
in the packet.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add tests using the capture files supplied by the reporter(s).

4 years agoCVE-2017-12997/LLDP: Don't use an 8-bit loop counter.
Guy Harris [Mon, 13 Feb 2017 19:11:42 +0000 (11:11 -0800)] 
CVE-2017-12997/LLDP: Don't use an 8-bit loop counter.

If you have a

for (i = 0; i < N; i++)

loop, you'd better make sure that i is big enough to hold N - not N-1,
N.

The TLV length here is 9 bits long, not 8 bits long, so an 8-bit loop
counter will overflow and you can loop infinitely.

This fixes an infinite loop discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add tests using the capture files supplied by the reporter(s).

Clean up the output a bit while we're at it.

4 years agoCVE-2017-12998/IS-IS: Check for 2 bytes if we're going to fetch 2 bytes.
Guy Harris [Mon, 13 Feb 2017 18:38:04 +0000 (10:38 -0800)] 
CVE-2017-12998/IS-IS: Check for 2 bytes if we're going to fetch 2 bytes.

Probably a copy-and-pasteo.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add a test using the capture file supplied by the reporter(s).

4 years agoCVE-2017-12999/IS-IS: Add a missing length check.
Guy Harris [Mon, 13 Feb 2017 18:26:49 +0000 (10:26 -0800)] 
CVE-2017-12999/IS-IS: Add a missing length check.

This fixes a buffer over-read discovered by Forcepoint's security
researchers Otto Airamo & Antti Levomäki.

Add tests using the capture files supplied by the reporter(s).

4 years agoFurther fix the fix to CVE-2017-5485.
Guy Harris [Sat, 11 Feb 2017 03:52:29 +0000 (19:52 -0800)] 
Further fix the fix to CVE-2017-5485.

1) Take the length of the NSAP into account.  Otherwise, if, in our
search of the hash table, we come across a byte string that's shorter
than the string we're looking for, we'll search past the end of the
string in the hash table.

2) The first byte of the byte string in the table is the length of the
NSAP, with the byte *after* that being the first byte of the NSAP, but
the first byte of the byte string passed into lookup_nsap() is the first
byte of the NSAP, with the length passed in as a separate argument.  Do
the comparison correctly.

This fixes a vulnerability discovered by Kamil Frankowicz.

Add a test using the capture file supplied by the reporter(s).

While we're at it, clean up the fix to lookup_bytestring():

1) Get rid of an unused structure member and an unused #define.

2) Get rid of an incorrect "+ 1" when calculating the size of the byte
array to allocate - that was left over from the NSAP table, where the
length was guaranteed to fit in 1 byte and we used the first byte of the
array to hold the length of the rest of the array.