⬢ DragonFlyBSD Kernel Audit
DF-3294 / fix.diff
← back to finding ↓ download raw
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ dropafterack (challenge-ACK rate limiting, CVE-2016-5696 family)
+	static int tcp_ack_challenge_budget = 100;	/* per second */
+	SYSCTL_INT(_net_inet_tcp, OID_AUTO, ack_challenge_limit, CTLFLAG_RW,
+	    &tcp_ack_challenge_budget, 0, "DF-3294: max challenge ACKs/s");
 	...
 	m_freem(m);
 	tp->t_flags |= TF_ACKNOW;
+	if (!tcp_rate_limit_challenge_ack())	/* budget exhausted: drop */
+		return (IPPROTO_DONE);
 	tcp_output(tp);