aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Lichvar <mlichvar@redhat.com>2016-08-01 20:24:24 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-08-01 20:25:06 +0200
commit150dc7a2b483b8338a3e185c478b4b23ee884e71 (patch)
tree623634cfafbb14f5b46f89b8cf63167cdef66bdd
parent6b5abc95969caf270d269ae640bb64e6bf8a7996 (diff)
downloadbusybox-w32-150dc7a2b483b8338a3e185c478b4b23ee884e71.tar.gz
busybox-w32-150dc7a2b483b8338a3e185c478b4b23ee884e71.tar.bz2
busybox-w32-150dc7a2b483b8338a3e185c478b4b23ee884e71.zip
ntpd: respond only to client and symmetric active packets
The busybox NTP implementation doesn't check the NTP mode of packets received on the server port and responds to any packet with the right size. This includes responses from another NTP server. An attacker can send a packet with a spoofed source address in order to create an infinite loop of responses between two busybox NTP servers. Adding more packets to the loop increases the traffic between the servers until one of them has a fully loaded CPU and/or network. Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ntpd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/networking/ntpd.c b/networking/ntpd.c
index 130cef0af..8ca62cf1b 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -2051,6 +2051,13 @@ recv_and_process_client_pkt(void /*int fd*/)
2051 goto bail; 2051 goto bail;
2052 } 2052 }
2053 2053
2054 /* Respond only to client and symmetric active packets */
2055 if ((msg.m_status & MODE_MASK) != MODE_CLIENT
2056 && (msg.m_status & MODE_MASK) != MODE_SYM_ACT
2057 ) {
2058 goto bail;
2059 }
2060
2054 query_status = msg.m_status; 2061 query_status = msg.m_status;
2055 query_xmttime = msg.m_xmttime; 2062 query_xmttime = msg.m_xmttime;
2056 2063