Ok, i pached the source, with the following diff from

http://bk.ntp.org/ntp-dev/?PAGE=patch&REV=4f977538lZC_iBKp-J-Xg1LFrR9foQ


--- 1.340/ntpd/ntp_proto.c      2012-03-10 17:27:45 +00:00
+++ 1.341/ntpd/ntp_proto.c      2012-04-25 03:53:27 +00:00
@@ -394,18 +394,15 @@ receive(
         * reveals a clogging attack.
         */
        sys_received++;
-       if (SRCPORT(&rbufp->recv_srcadr) < NTP_PORT) {
+       if (0 == SRCPORT(&rbufp->recv_srcadr)) {
                sys_badlength++;
                return;                         /* bogus port */
        }
        restrict_mask = restrictions(&rbufp->recv_srcadr);
-#ifdef DEBUG
-       if (debug > 1)
-               printf("receive: at %ld %s<-%s flags %x restrict %03x\n",
+       DPRINTF(2, ("receive: at %ld %s<-%s flags %x restrict %03x\n",
                    current_time, stoa(&rbufp->dstadr->sin),
                    stoa(&rbufp->recv_srcadr),
-                   rbufp->dstadr->flags, restrict_mask);
-#endif
+                   rbufp->dstadr->flags, restrict_mask));
        pkt = &rbufp->recv_pkt;
        hisversion = PKT_VERSION(pkt->li_vn_mode);
        hisleap = PKT_LEAP(pkt->li_vn_mode);


It tested it with a simple python ntp client:

from socket import *
import struct
import sys
import time

TIME1970 = 2208988800L

client = socket( AF_INET, SOCK_DGRAM )
client.bind(('', 112))
data = '\x1b' + 47 * '\0'
client.sendto( data, ( sys.argv[1], 123 ))
data, address = client.recvfrom( 1024 )
if data:
    print 'Response received from:', address
    t = struct.unpack( '!12I', data )[10]
    t -= TIME1970
    print '\tTime=%s' % time.ctime(t)


root@lab-test:~/ntppatch# python pythoncl 127.0.0.1
Response received from: ('127.0.0.1', 123)
        Time=Tue Oct 30 10:52:55 2012


root@lab-test:~/ntppatch# ntpdc -n -c monlist
remote address          port local address      count m ver rstr avgint  lstint
===============================================================================
127.0.0.1                112 127.0.0.1             16 3 3      0     28      53

thx
csszep


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to