SACK PANIC vulnerability in Linux uitgelegd

Leestijd
3 minuten
Auteur
William Edwards
Datum
25 juni 2019

Er is een grote kwetsbaarheid in de Linux-kernel genaamd SACK PANIC ontdekt. Wat houdt SACK PANIC in en hoe houd je je servers veilig?

Natuurlijk wil je dat je hosting zo veilig mogelijk is. Door de complexiteit van Linux, het meest gebruikte besturingssysteem voor servers, komen er soms kwetsbaarheden aan het licht die zo snel mogelijk opgelost moeten worden. Zo ook vorige week: Netflix kondigde aan dat zij enkele grote kwetsbaarheden hebben gevonden in de Linux-kernel.

Een kwaadwillende kan deze kwetsbaarheden misbruiken om een Linux server van afstand traag te maken of te laten crashen. In dit blog-artikel leggen we uit wat SACK PANIC precies inhoudt en wat je moet doen om je hosting immuun te maken voor SACK PANIC.

Wat is SACK?

De 'SACK PANIC' kwetsbaarheid komt voort uit 'SACK', voluit 'Selective Acknowledgement'. Daarom leggen we eerst uit wat SACK inhoudt.

Hoe werken internet-pakketten

Een client, bijvoorbeeld je pc, verzendt pakketten met een bepaalde grootte naar een server. Bezoek je bijvoorbeeld een website, dan stuurt je browser een pakket naar de server met gegevens over de aanvraag, zoals je IP-adres en de HTTP-methode. Een HTTP-pakket is over het algemeen slechts enkele bytes. Soms worden er echter grotere pakket over het internet verstuurd, bijvoorbeeld door het meesturen van uitgebreide headers. De maximale grootte van een pakket is 1.500 bytes op een typische ethernet-verbinding.

Internet
Over het internet worden pakketten verstuurd
Pakketten opdelen

Het internetprotocol TCP kan pakketten opsplitsen in kleinere pakketten. Hoewel het spreiden van pakketten ervoor zorgt dat grote pakketten ook verstuurd kunnen worden, zorgt het tegelijkertijd voor inefficiëntie: als één deel van het grotere pakket niet aankomt, dan worden ook pakketten die wél aangekomen zijn opnieuw verstuurd.

Stel: je stuurt pakket A. Pakket A wordt opgesplitst in kleinere delen A, B, C, D en E. Komen pakketten A en B netjes aan bij de ontvangende server, dan stuurt de client ook pakket C, D en E. Maar, komt C niet aan maar D en E wel? Dan stuurt de client alle pakketjes na het pakket dat niet aankwam opnieuw (C en D en E), terwijl D en E wel al aan waren gekomen.

SACK als oplossing

Om te voorkomen dat de client pakketten die al aangekomen zijn opnieuw stuurt, wordt SACK gebruikt. Met SACK wordt de de afzender ervan op de hoogte gebracht welke pakketten wel ontvangen zijn. De ontvangende server communiceert bijvoorbeeld: "ik heb alles ontvangen tot en met nummer 10. Ik heb ook alles ontvangen tussen 13 en 20." De afzender weet dus dat alleen de pakketten tussen 10 en 13 niet aangekomen zijn en opnieuw verzonden moeten worden.

Wat houdt SACK PANIC in?

Met SACK PANIC kan een kwaadwillende op afstand een 'kernel panic' veroorzaken, met een server crash als gevolg. Nu je weet wat SACK inhoudt, leggen we uit hoe de SACK PANIC vulnerability precies in zijn werk gaat.

Stuur je een pakket in meerdere delen, dan moeten de gegevens van de transactie ergens bijgehouden worden. Linux slaat de gegevens over de pakketten op totdat deze worden teruggezonden en bevestigd. Stuur je een pakket dus in meerdere delen, dan wordt dit bijgehouden. Iedere combinatie van IP-adres en poortnummer kan maximaal 17 'opgesplitste' delen van een pakket tegelijkertijd bevatten. Dit is een technische limiet.

TCP SACK: opsplitsen in delen
TCP SACK: opsplitsen in delen

Als er delen van pakketten worden verstuurd terwijl de connectiviteit tussen client en server niet optimaal is, dan is het mogelijk dat de pakket-delen inefficiënt opgeslagen worden. Om dat te voorkomen voegt Linux de delen samen om onder de limiet van 17 te blijven. Tijdens het samenvoegen van de pakketten kunnen er echter meer dan 17 pakketten opgeslagen worden. Omdat 17 de harde limiet is, crasht Linux met een 'kernel panic' (vergelijkbaar met de 'Blue Screen of Death' in Windows).

SACK PANIC bij Cyberfusion

Er zijn twee mogelijke oplossingen: het uitschakelen van SACK of het 'patchen' van het probleem in de Linux-kernel.

Ben je klant van Cyberfusion?

Dankzij ons container-platform is de fix afgelopen weekend zonder downtime toegepast. SACK is dus niet uitgeschakeld, zodat er geen traagheid ontstaat. Tip voor onze partners: laat je klanten ook weten dat jouw hosting niet kwetsbaar is voor SACK PANIC!

Meer lezen over de exacte technische werking van SACK PANIC? Lees dan het artikel van Red Hat.

Heb je een eigen server?

Heb je zelf ergens servers draaien, dan zul je de kernel moeten updaten en rebooten. Wil je geen onderhoudsmoment inplannen voor downtime, dan kun je SACK uitschakelen. Let wel: dit kan traagheid met zich meebrengen. Het is aan te raden SACK zo snel mogelijk te patchen, omdat het uitstellen hiervan zorgt dat iedere kwaadwillende je server op afstand kan laten crashen.

Ook interessant
Preloading in PHP 7.4 uitgelegd!
Leestijd
2 minuten
Auteur
William Edwards
Datum
21 november 2019

Preloading in PHP maakt je PHP 7.4 websites met OPcache sneller. Lees alles over preloading, shared memory, process memory en OPcache.

CyberNOC 2.0 ziet het levenslicht!
Leestijd
2 minuten
Auteur
William Edwards
Datum
4 november 2019

CyberNOC, de statuspagina van Cyberfusion, heeft een grote update gekregen. De software CyberStatus hebben we in-house ontwikkeld.

Laravel-based open sourced knowledge base released!
Leestijd
2 minuten
Auteur
Cyberfusion
Datum
24 september 2019

We have released the Laravel-based, open source Cyberfusion knowledge base into the wild! With 2FA, user management, and knowledge base content management.

Direct Contact

Meer informatie? Neem direct contact op!

icon-phone

Bel nu: 040 - 711 44 96

icon-mail

Mail nu: sales@cyberfusion.nl