Denial-of-Service (DoS)
CS 161: Computer Security
- Prof. Vern Paxson
Denial-of-Service (DoS) CS 161: Computer Security Prof. Vern Paxson - - PowerPoint PPT Presentation
Denial-of-Service (DoS) CS 161: Computer Security Prof. Vern Paxson TAs: Paul Bramsen, Apoorva Dornadula, David Fifield, Mia Gil Epner, David Hahn, Warren He, Grant Ho, Frank Li, Nathan Malkin, Mitar Milutinovic, Rishabh Poddar, Rebecca Portnoff,
execution to prevent code injection ⇒ denial-of-service
– # rm -rf /
– char buf[1024]; int f = open("/tmp/junk"); while (1) write(f, buf, sizeof(buf));
– while (1) fork();
– Create zillions of files, keep opening, reading, writing, deleting
– … doubtless many more
– Isolate users / impose quotas
– (in order to maximize the packet arrival rate)
– Install a network filter to discard any packets that arrive with attacker's IP address as their source
that’s not in benign traffic
– Filter = isolation mechanism – Attacker’s IP address = means of identifying misbehaving user
– Just pick a random 32-bit number of each packet sent
– They don’t! (Unless the traffic has some sort of identifying quirk) – Best they can hope for is that operators around the world implement anti-spoofing mechanisms (today about 1/3rd do nothing)
– Just pick a random 32-bit number of each packet sent
– They don’t! (Unless the traffic has some sort of identifying quirk) – Best they can hope for is that operators around the world implement anti-spoofing mechanisms (today about 1/3rd do nothing)
– Today they are very cheap to acquire … :-(
Client (initiator) SYN, SeqNum = x S Y N + A C K , S e q N u m = y , A c k = x + 1 ACK, Ack = y + 1 Server
Server creates state associated with connection here (buffers, timers, counters)
Attacker doesn’t even need to send this ack
doing so requires we have an established connection!
Client (initiator) SYN, SeqNum = x S + A , S e q N u m = y , A c k = x + 1 , < S t a t e > ACK, Ack = y + 1, <State> Server
Server only saves state here Do not save state here; give to client
Client (initiator) SYN, SeqNum = x S + A , S e q N u m = y , A c k = x + 1 , < S t a t e > ACK, Ack = y + 1, <State> Server
Server only saves state here Do not save state here; give to client
Client (initiator) SYN, SeqNum = x S Y N a n d A C K , S e q N u m = y , A c k = x + 1 ACK, Ack = y + 1 Server
Server only creates state here if y validates Do not create state here
Instead, encode it here
Client (initiator) SYN, SeqNum = x S Y N a n d A C K , S e q N u m = y , A c k = x + 1 ACK, Ack = y + 1 Server
Server only creates state here if y validates