211service.com
Waarom het toevoegen van bugs aan software het veiliger kan maken
Als het gaat om het volgen van radar, is een van de meest effectieve tegenmaatregelen het vrijgeven van een wolk van aluminium strips of gemetalliseerd plastic. Deze reflecteren de radar sterk en creëren duizenden doelen, die de radarsignalen overspoelen en verwarren. Dat verwart alles wat je probeert te volgen, zoals een radargeleide raket.
De meeste militaire vliegtuigen en oorlogsschepen, en veel ballistische raketten, hebben loksystemen met kaf. En nu passen cybersecurity-onderzoekers hetzelfde idee toe op software.
Het idee is in principe eenvoudig. Software bevat vaak bugs, waarvan de meeste onopgemerkt blijven door de makers en legitieme gebruikers. Maar kwaadwillende actoren zoeken actief naar deze bugs, zodat ze deze kunnen misbruiken voor gerichte aanvallen. Hun doel is om de computer over te nemen of anderszins te manipuleren.
Maar niet alle bugs zijn gelijk. Sommige kunnen niet worden misbruikt voor kwaadaardige doeleinden en doen niets ergers dan een programma laten crashen. Dit kan serieus zijn, maar er is een grote klasse van software, zoals microservices op de achtergrond, die is ontworpen om crashes gracieus af te handelen door de software opnieuw op te starten terwijl de gebruiker niets wijzer is. Deze bugs zijn veel minder ernstig dan degene die kwaadwillende controle mogelijk maken.
Maar ze uit elkaar houden is niet altijd eenvoudig. Nadat kwaadwillende codeerders bugs hebben gevonden, moeten ze onderscheid maken tussen de echt gevaarlijke en de relatief onschuldige, en dat proces is over het algemeen moeilijk en tijdrovend.
Dat is de basis voor een nieuwe aanpak ontwikkeld door Zhenghao Hu en collega's van de New York University. Waarom vul je de gewone code niet met goedaardige bugs om potentiële aanvallers voor de gek te houden?
Het idee is om aanvallers te dwingen hun middelen te gebruiken om bugs te vinden en te testen waar ze niets aan hebben. Hu en co noemen deze lokvogels kafwantsen, naar analogie van de aluminium strips die worden gebruikt om radaroperators voor de gek te houden.
Het idee is slechts de nieuwste zet in een steeds complexer kat-en-muisspel waarin beveiligingsexperts het opnemen tegen aanvallers. De afgelopen jaren hebben verschillende groepen programma's ontwikkeld die door code jagen, op zoek naar kwetsbaarheden die een aanvaller zou kunnen misbruiken. Beveiligingsexperts gebruiken deze aanpak om deze kwetsbaarheden te vinden en te verwijderen voordat de code openbaar wordt, terwijl kwaadwillende aanvallers dezelfde aanpak gebruiken om bugs te vinden die ze kunnen misbruiken.
Maar voor beveiligingsonderzoekers is het ontwikkelen van deze programma's moeilijk en vereist het in de eerste plaats kwetsbaarheden in de software. Daarom hebben onderzoekers een andere tool ontwikkeld die deze bugs automatisch aan software toevoegt, zodat ze later kunnen worden ontdekt door het programma voor het opsporen van kwetsbaarheden.
Het blijkt dat het toevoegen van bugs geenszins eenvoudig is. Willekeurige wijzigingen in de code hebben de neiging om het nutteloos te maken, in plaats van interessante anomalieën te introduceren. In plaats daarvan houdt het proces in dat de code met verschillende invoer wordt uitgevoerd en wordt gecontroleerd wat er met deze invoer gebeurt naarmate de code vordert.
Dit proces zoekt naar punten in het programma waar de input niet langer wordt gebruikt om toekomstige beslissingen te nemen. In dat geval kan deze dode invoer kwaadwillig worden gemanipuleerd om het geheugen te beschadigen of te overstromen.
Het programma voor het opsporen van kwetsbaarheden merkt op waar deze dode zones zich bevinden, zodat ze later kunnen worden uitgebuit.
Het blijkt dat deze potentiële fouten veel voorkomen in code die is geschreven in talen zoals C en C++, die geen systemen hebben die het geheugengebruik overzien.
Hu en co gebruiken deze benadering eenvoudig om fouten in het geheugen toe te voegen aan de code. In normale omstandigheden zijn deze bugs goedaardig. Maar als ze worden gevonden door een kwaadwillende acteur, kunnen ze alleen worden misbruikt om het programma te laten crashen - niet voor iets sinisters. Daarom fungeren ze als kaf.
Aanvallers die proberen bugs in software te vinden en te exploiteren, zullen met grote waarschijnlijkheid een opzettelijk geplaatste niet-exploiteerbare bug vinden en kostbare middelen verspillen bij het proberen een werkende exploit te bouwen, zeggen Hu en co.
Het team laat verder zien dat de huidige processen voor het opsporen van mogelijke bugs door deze aanpak voor de gek worden gehouden. We laten zien dat de functionaliteit van de software niet wordt geschaad en laten zien dat onze bugs misbruikbaar lijken voor de huidige triage-tools, zeggen ze.
Dat is een interessante benadering die het potentieel heeft om kwaadwillende aanvallers aanzienlijk op een zijspoor te zetten. We zijn van mening dat kafbugs kunnen dienen als een effectief afschrikmiddel tegen zowel menselijke aanvallers als geautomatiseerde Cyber Reasoning Systems, zeggen Hu en co.
Maar het roept ook enkele interessante vragen op. Er is bijvoorbeeld geen echt bewijs dat het uitkiezen van bugs om de exploiteerbare bugs te vinden, noodzakelijkerwijs moeilijk en tijdrovend is. Het is theoretisch mogelijk dat iemand ergens een snelle manier heeft gevonden om het te doen.
Als blijkt dat er een manier is om kafbugs gemakkelijk te onderscheiden van exploiteerbare, dan wordt deze aanpak minder waardevol. Hu en co proberen hun fouten inderdaad niet te verbergen of te verhullen. Dit betekent dat ze momenteel veel artefacten bevatten die aanvallers zouden kunnen gebruiken om ze te identificeren en te negeren, zeggen ze.
Er is ook heel weinig variatie in deze geïnjecteerde bugs. [Dit] zou een aanvaller in staat kunnen stellen patronen te identificeren in de bugs die we produceren en de bugs uit te sluiten die overeenkomen met het patroon, zeggen ze.
Maar er is een aanzienlijk potentieel in het verschiet. Het idee om bugs toe te voegen in plaats van ze te verwijderen, is een heerlijk kwaadaardige benadering van cybercriminaliteit, en een die zou moeten leiden tot een aantal interessante mogelijkheden voor toekomstig onderzoek.
Referentie: arxiv.org/abs/1808.00659 : Chaff Bugs: Aanvallers afschrikken door software buggier te maken