Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Mar 2006 11:22:51 +0100 (CET)
From:      Daniel Roethlisberger <daniel@roe.ch>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        Alan Amesbury <amesbury@umn.edu>, daniel@roe.ch
Subject:   ports/94264: [maintainer] security/nmap: fix infinite loop in scan engine
Message-ID:  <200603091022.k29AMpxh016850@aphrodite.roe>
Resent-Message-ID: <200603091040.k29Ae455013148@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         94264
>Category:       ports
>Synopsis:       [maintainer] security/nmap: fix infinite loop in scan engine
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Mar 09 10:40:03 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Daniel Roethlisberger
>Release:        FreeBSD 5.4-STABLE i386
>Organization:
>Environment:
System: FreeBSD aphrodite.roe 5.4-STABLE FreeBSD 5.4-STABLE #7: Mon Oct 10 18:02:44 CEST 2005 root@aphrodite.roe:/usr/obj/usr/src/sys/APHRODITE i386
>Description:
Add: files/patch-scan_engine.cc

- Add patch resolving an infinite loop in the scan engine
- Bump PORTREVISION

Requested by:   Alan Amesbury <amesbury@umn.edu>
>How-To-Repeat:
>Fix:
--- nmap-4.01-loopfix.diff begins here ---
diff -ruN nmap.orig/Makefile nmap/Makefile
--- nmap.orig/Makefile	Sat Feb 18 12:20:31 2006
+++ nmap/Makefile	Thu Mar  9 10:59:18 2006
@@ -7,6 +7,7 @@
 
 PORTNAME?=	nmap
 PORTVERSION=	${DISTVERSION:L:C/([a-z])[a-z]+/\1/g:C/[^a-z0-9+]+/./g}
+PORTREVISION=	1
 CATEGORIES=	security ipv6
 MASTER_SITES=	http://download.insecure.org/nmap/dist/ \
 		http://www.mirrors.wiretapped.net/security/network-mapping/nmap/ \
diff -ruN nmap.orig/files/patch-scan_engine.cc nmap/files/patch-scan_engine.cc
--- nmap.orig/files/patch-scan_engine.cc	Thu Jan  1 01:00:00 1970
+++ nmap/files/patch-scan_engine.cc	Thu Mar  9 11:03:44 2006
@@ -0,0 +1,45 @@
+$FreeBSD$
+
+Patch taken from <20060217013528.GG7214@syn.lnxnet.net>.
+http://seclists.org/lists/nmap-dev/2006/Jan-Mar/0205.html
+Will be included in nmap 4.02.
+
+--- scan_engine.cc.ORIG	Wed Mar  8 13:36:06 2006
++++ scan_engine.cc	Wed Mar  8 13:40:44 2006
+@@ -807,6 +807,7 @@
+ 
+   /* Returns true if the GLOBAL system says that sending is OK.*/
+ bool GroupScanStats::sendOK() {
++  int recentsends;
+ 
+   if (USI->scantype == CONNECT_SCAN && CSI->numSDs >= CSI->maxSocketsAllowed)
+     return false;
+@@ -815,7 +816,9 @@
+      the last listen call, at least for systems such as Windoze that
+      don't give us a proper pcap time.  Also for connect scans, since
+      we don't get an exact response time with them either. */
+-  if (USI->scantype == CONNECT_SCAN || !pcap_recv_timeval_valid()) {
++  recentsends = USI->gstats->probes_sent - USI->gstats->probes_sent_at_last_wait;
++  if (recentsends > 0 &&
++     (USI->scantype == CONNECT_SCAN || !pcap_recv_timeval_valid())) {
+     int to_ms = (int) MAX(to.srtt * .75 / 1000, 50);
+     if (TIMEVAL_MSEC_SUBTRACT(USI->now, last_wait) > to_ms)
+       return false;
+@@ -828,7 +831,7 @@
+      responses when I scan localhost.  And half of those are the @#$#
+      sends being received.  I think I'll put a limit of 50 sends per
+      wait */
+-  if (USI->gstats->probes_sent - USI->gstats->probes_sent_at_last_wait >= 50)
++  if (recentsends >= 50)
+     return false;
+ 
+   /* When there is only one target left, let the host congestion
+@@ -969,7 +972,7 @@
+ 
+   getTiming(&tmng);
+   if (tmng.cwnd >= num_probes_active + .5 && 
+-      (freshPortsLeft() || num_probes_waiting_retransmit)) {
++      (freshPortsLeft() || num_probes_waiting_retransmit || !retry_stack.empty())) {
+     if (when) *when = USI->now;
+     return true;
+   }
--- nmap-4.01-loopfix.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603091022.k29AMpxh016850>