ports/83851: Update port: dns/dnrd Security update

Natanael Copa ncopa at users.sourceforge.net
Thu Jul 21 14:00:38 UTC 2005


>Number:         83851
>Category:       ports
>Synopsis:       Update port: dns/dnrd Security update
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 21 14:00:32 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Natanael Copa
>Release:        FreeBSD 5.4-RELEASE i386
>Organization:
>Environment:
System: FreeBSD vmfreebsd.example.com 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May 8 10:21:06 UTC 2005 root at harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386


	
>Description:
	Buffer and stack overflow in dnrd-2.19 and older.
	CAN-2005-2315
	CAN-2005-2316
	
>How-To-Repeat:
	1) Buffer overflow (CAN-2005-2315)

	* create a buffer, a DNS packet, bigger than 268 (256+12) bytes.
	* Fill the buffer with random data.
	* Clear the Z and QR flags.
	* Send it to dnrd.
	* Repeat til dnrd dies.

	Impact : this could probably be exploited to perform remote execution.
	However, dnrd runs in an chroot environment and runs as non-root.

	2) Infinite recursion causes stack overflow (CAN-2005-2316)

	* Create a buffer, a DNS packet.
	* in the QNAME, use Message compression (see rfc 4.1.4). Set the 
	  pointer to point on another location in the buffer.
	* On this new location set another pointer to point pack to the
	  original QNAME location. In other words, its a circular buffer.

	Dnrd will recurse until the stack is overflowed.
	To reproduce #2 its important to not have any valid digits between the
	loops. It must only contain pointers.

	Impact : crash -> DoS
>Fix:

	

--- dnrd-ports-2.19-2.19.1.diff begins here ---
diff -bruN dnrd.orig/Makefile dnrd/Makefile
--- dnrd.orig/Makefile	Tue Jul 19 14:04:35 2005
+++ dnrd/Makefile	Tue Jul 19 14:04:52 2005
@@ -6,7 +6,7 @@
 #
 
 PORTNAME=		dnrd
-PORTVERSION=		2.19
+PORTVERSION=		2.19.1
 CATEGORIES=		dns
 MASTER_SITES=		${MASTER_SITE_SOURCEFORGE}
 MASTER_SITE_SUBDIR=	dnrd
diff -bruN dnrd.orig/distinfo dnrd/distinfo
--- dnrd.orig/distinfo	Tue Jul 19 14:04:35 2005
+++ dnrd/distinfo	Thu Jul 21 15:25:47 2005
@@ -1,2 +1,2 @@
-MD5 (dnrd-2.19.tar.gz) = b8749250450f7d8de9a51af035e009eb
-SIZE (dnrd-2.19.tar.gz) = 156241
+MD5 (dnrd-2.19.1.tar.gz) = 58de30f0b09e333ca008444ca25848bc
+SIZE (dnrd-2.19.1.tar.gz) = 157686
--- dnrd-ports-2.19-2.19.1.diff ends here ---


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



More information about the freebsd-ports-bugs mailing list