mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 01:30:30 -04:00
tcp: mitigate a side channel for detection of TCP connections
If a blind attacker wants to guess by sending ACK segments if there
exists a TCP connection , this might trigger a challenge ACK on an
existing TCP connection. To make this hit non-observable for the
attacker, also increment the global counter, which would have been
incremented if it would have been a non-hit.
This issue was reported as issue number 11 in Keyu Man et al.:
SCAD: Towards a Universal and Automated Network Side-Channel
Vulnerability Detection
Reviewed by: Nick Banks, Peter Lei
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D51724
This commit is contained in:
parent
2eb786d96e
commit
f0f6e50388
1 changed files with 8 additions and 0 deletions
|
|
@ -82,6 +82,7 @@
|
|||
#include <netinet/ip.h>
|
||||
#include <netinet/ip_icmp.h>
|
||||
#include <netinet/ip_var.h>
|
||||
#include <netinet/icmp_var.h>
|
||||
#ifdef INET6
|
||||
#include <netinet/icmp6.h>
|
||||
#include <netinet/ip6.h>
|
||||
|
|
@ -2156,6 +2157,13 @@ tcp_send_challenge_ack(struct tcpcb *tp, struct tcphdr *th, struct mbuf *m)
|
|||
sbintime_t now;
|
||||
bool send_challenge_ack;
|
||||
|
||||
/*
|
||||
* The sending of a challenge ACK could be triggered by a blind attacker
|
||||
* to detect an existing TCP connection. To mitigate that, increment
|
||||
* also the global counter which would be incremented if the attacker
|
||||
* would have guessed wrongly.
|
||||
*/
|
||||
(void)badport_bandlim(BANDLIM_TCP_RST);
|
||||
if (V_tcp_ack_war_time_window == 0 || V_tcp_ack_war_cnt == 0) {
|
||||
/* ACK war protection is disabled. */
|
||||
send_challenge_ack = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue