Door een kwetsbaarheid in het protocol TCP kunnen aanvallers op afstand de internetverbinding van een gebruiker kapen. Linux is de enige kernel die de kwetsbare functionaliteit volledig heeft geïmplementeerd en dus voor het lek vatbaar is.

Onderzoekers van de University of California, Riverside, hebben op het 25ste USENIX Security Symposium een presentatie gegeven over een zwakheid in TCP (Transmission Control Protocol), een belangrijk netwerkprotocol op internet. Het gaat om een subtiele side channel vulnerability in RFC 5961, nota bene een standaard die TCP beter moet beschermen tegen spoofing.

Geen man-in-the-middle nodig

De onderzoekers demonstreerden tijdens hun presentatie hoe ze dankzij de kwetsbaarheid kwaadaardige JavaScript-code konden injecteren in een webpagina van USA Today waarop bezoekers hun e-mailadres en wachtwoord moeten invoeren. De aanval werkt voor alle pagina’s die niet versleuteld zijn, zolang de webserver een zestigtal seconden de verbinding open houdt. Bij een versleutelde verbinding werkt het injecteren niet, maar een aanvaller kan de verbinding dan wel afsluiten.

Naast JavaScript-code injecteren zijn ook andere aanvallen mogelijk, zoals Tor-verbindingen afbreken en daardoor de kans groter maken dat een slachtoffer via een kwaadaardige exit-node surft. Voor de aanval hoeft maar één van de twee partijen kwetsbaar te zijn en de aanvaller hoeft alleen maar een internetverbinding te hebben; hij hoeft het verkeer tussen de twee partijen niet af te luisteren (man-in-the-middle). Daardoor is dit een krachtige aanval.

Gepatcht in Linux 4.7

RFC 5961 is nog niet volledig geïmplementeerd door Windows, OS X en de BSD’s; alleen Linux heeft een volledige implementatie. Versies 3.6 (uit 2012) tot en met 4.6 van de Linux-kernel zijn kwetsbaar voor de fout. In Linux 4.7, dat enkele weken geleden uitkwam, is de fout al gepatcht. De meeste Linux-distributies moeten de patch echter nog toepassen.

Totdat de fout in de kernel is gepatcht, kun je met de volgende opdrachten ervoor zorgen dat je Linux-systeem niet kwetsbaar is:

echo 'net.ipv4.tcp_challenge_ack_limit = 999999999' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p