Nieuwe week, nieuwe aanvalsmethode die we onder de loep leggen. In het blog van deze week beantwoorden we de vraag wat is insecure deserialization? Als u nu zoiets heeft van ‘dat klinkt best complex’, dan zit u op de goede weg. Het is namelijk ook best een lastige exploit maar toch ga ik mijn best doen om het zo simpel en duidelijk mogelijk uit te leggen. Mocht u na het lezen van dit blog nog vragen hebben, bel Rootsec dan even. Zij leggen het u graag uit!
De hamvraag van de blog is natuurlijk ‘ Wat is Insecure Deserialization?’. Om daar een gedegen antwoord op te geven moeten we beginnen bij het begin. Dat is meestal het beste startpunt namelijk. Ok, dus deze aanvalsmethode stelt aanvallers in staat een payload over te dragen met behulp van geserialiseerde objecten. Ik heb u gewaarschuwd, het wordt een beetje tricky deze week. Ik zal het makkelijker voor u maken. Bij het ontwikkelen van een webapplicatie (bijvoorbeeld) moet u soms een object ‘overdragen’. Een object in deze context bevat een aantal variabelen die informatie bevatten. Echter kan dit vaak niet 1-op-1 worden overgedragen en dus wordt het omgezet in iets anders. Deze stap, ofwel conversie, noemen we serialisatie. Het proces van het nemen van een object en dit vertalen naar hele platte tekst. Deze platte tekst kan vervolgens worden versleuteld of ondertekend en gebruikt worden in die vorm. Het omgekeerde proces is echter waar het hier vooral omgaat. Dit wordt ook wel deserialisatie genoemd. Dus platte tekst wordt weer ’terug’ geconverteerd naar een object.
In het meest eenvoudige gebruik is het mogelijk om alle gegevens in het object te JSON-coderen (JavaScript) en gebruiken zoals het is. Zelfs als ontwikkelaars weten dat gebruikersinvoer niet te vertrouwen is, worden geserialiseerde objecten gezien als iets anders en wordt de beveiliging als het ware vergeten. Hoe het dan wordt gebruikt als aanval? Insecure Deserialization is een methode om een ‘payload’ te verzenden. Een payload is in simpele bewoording hetgeen ervoor zorgt dat een aanval mogelijk is. Voorbeelden hiervan zijn bijvoorbeeld malware, ransomware en worms. De payload wordt verzonden en als die aangekomen is op zijn bestemming tast het vervolgens vaak een onderliggende kwetsbaarheid aan. Het is een middel om binnen te komen dus met je wapens om vervolgens te gaan kijken hoeveel schade je kunt aanrichten.
Het is lastig om echt met cijfers te komen voor deze exploit. Insecure Deserialization kwam namelijk in de OWASP-top 10 terecht op basis van enquêtegegevens, niet kwantificeerbare gegevens. Als zodanig is het moeilijk te zeggen hoe vaak het voorkomt. Dit zorgt er ook voor dat we er relatief weinig over weten. Het enige dat we met zekerheid kunnen zeggen is dat deze kwetsbaarheden vaak worden aangetroffen in grote populaire applicaties. Daarbij is het veelvoorkomend dat deze kwetsbare code al heel lang onopgemerkt aanwezig is geweest binnen deze applicatie.
De impact van een soortgelijke aanval heeft alles te maken met het gebruik van het geserialiseerde object. Het meest impactvolle zou zijn wanneer de aanvaller aan de hand van de payload externe code of commando’s op afstand kan uitvoeren. Iets dat zeker wel mogelijk is bij deze vorm van aanvallen. In de meeste gevallen is Insecure Deserialization ‘slechts’ een manier om de payload over te dragen. Vanuit daar wordt er gezocht naar manieren om uit te breken. Daarom is het lastig de impact vast te stellen. Een van de meest bekende hacks waarbij (vermoedelijk) gebruik werd gemaakt van Insecure Deserialization was de Equifax-hack van 2017. De gevolgen hiervan waren erg impactvol. Het is dus zeker wel iets om rekening mee te houden.
Er zijn een paar stappen die genomen kunnen worden om dit zo goed mogelijk te voorkomen. Hierbij is het belangrijk een architectuurpatroon te gebruiken waarbij geserialiseerde objecten uit niet-vetrouwde bronnen niet worden geaccepteerd. Optie twee is om serialisatiemedia te gebruiken die alleen primitieve gegevenstypen toestaat. Zijn beide opties niet mogelijk en zit u met uw handen in het haar? Niet gevreesd, u kunt ook het volgende nog proberen.
We begrijpen dat we met deze blogs wellicht ook wel een beetje angst creëren. Er zijn namelijk veel kwetsbaarheden en exploits waaraan uw systeem ten onder zou kunnen gaan. Wilt u gewoon eens even weten wat voor u handig is om te doen? Neem dan contact op met ons. Wij kijken samen met u naar uw situatie en leggen rustig de opties uit. Ook al komt er wellicht geen dienstverlening uit voort, weet u in ieder geval wel waar u staat. Neem vandaag nog contact met ons op via [email protected] / 036 760 0451.
Automated page speed optimizations for fast site performance