Hvorfor legge til feil i programvare kan gjøre det tryggere

Når det gjelder radarsporing, er en av de mest effektive mottiltakene å frigjøre en sky av aluminiumslister eller metallisert plast. Disse reflekterer radaren sterkt og skaper tusenvis av mål, som oversvømmer og forvirrer radarens returer. Det forvirrer alt som prøver å spore deg, for eksempel et radarstyrt missil.





De fleste militære fly og krigsskip, og mange ballistiske missiler, har lokkesystemer som inkluderer agner. Og nå bruker cybersikkerhetsforskere den samme ideen på programvare.

Ideen er i prinsippet enkel. Programvare inneholder ofte feil, hvorav de fleste blir ubemerket av skaperne og av legitime brukere. Men ondsinnede aktører søker aktivt etter disse feilene slik at de kan utnytte dem til målrettede angrep. Målet deres er å overta datamaskinen eller på annen måte manipulere den.

Men ikke alle feil er like. Noen kan ikke utnyttes til ondsinnede formål og gjør ingenting verre enn å få et program til å krasje. Dette kan være alvorlig, men det er en stor klasse programvare, for eksempel bakgrunnsmikrotjenester, som er designet for å håndtere krasj på en elegant måte ved å starte programvaren på nytt mens brukeren ikke er noe klokere. Disse feilene er mye mindre alvorlige enn de som tillater ondsinnet kontroll.



Men å skille dem fra hverandre er ikke alltid enkelt. Etter at ondsinnede kodere finner feil, må de skille de som er virkelig farlige fra de som er relativt godartede, og den prosessen er generelt vanskelig og tidkrevende.

Det er grunnlaget for en ny tilnærming utviklet av Zhenghao Hu og kolleger ved New York University. Hvorfor ikke fylle vanlig kode med godartede feil som en måte å lure potensielle angripere på?

Tanken er å tvinge angripere til å bruke opp ressursene sine for å finne og teste feil som ikke vil være til nytte for dem. Hu og co kaller disse lokkefuglene chaff bugs, i analogi med aluminiumsremsene som brukes for å lure radaroperatører.



Ideen er bare det siste trekket i et stadig mer komplekst katt-og-mus-spill som setter sikkerhetseksperter mot angripere. De siste årene har ulike grupper utviklet programmer som jakter gjennom kode, på jakt etter sårbarheter som en angriper kan utnytte. Sikkerhetseksperter bruker denne tilnærmingen for å finne og fjerne disse sårbarhetene før koden blir offentlig, mens ondsinnede angripere bruker samme tilnærming for å finne feil de kan utnytte.

Men for sikkerhetsforskere er det vanskelig å utvikle disse programmene og krever at det er sårbarheter i programvaren i utgangspunktet. Så forskere har utviklet et annet verktøy som automatisk legger disse feilene til programvare, slik at de senere kan oppdages av sårbarhetsjaktprogrammet.

Det viser seg at det på ingen måte er enkelt å legge til feil. Tilfeldige endringer i koden har en tendens til å gjøre den ubrukelig, i stedet for å introdusere interessante anomalier. I stedet innebærer prosessen å kjøre koden med forskjellige innganger og overvåke hva som skjer med disse inngangene etter hvert som koden skrider frem.



Denne prosessen ser etter punkter i programmet der input ikke lenger brukes til å ta fremtidige beslutninger. I så fall kan denne døde inngangen manipuleres ondsinnet for å ødelegge eller flyte over minnet.

Programmet for å oppdage sårbarheter registrerer hvor disse døde sonene er, slik at de kan utnyttes senere.

Det viser seg at disse potensielle feilene er vanlige i kode skrevet på språk som C og C++, som ikke har systemer som overvåker minnebruk.



Hu og co bruker ganske enkelt denne tilnærmingen for å legge til minnekorrupsjonsfeil gjennom hele koden. Under vanlige omstendigheter er disse insektene godartede. Men hvis de blir funnet av en ondsinnet skuespiller, kan de bare utnyttes til å krasje programmet – ikke for noe mer skummelt. Det er derfor de fungerer som agner.

Angripere som forsøker å finne og utnytte feil i programvare vil, med stor sannsynlighet, finne en med hensikt plassert ikke-utnyttbar feil og kaste bort dyrebare ressurser på å prøve å bygge en fungerende utnyttelse, sier Hu og co.

Teamet fortsetter med å vise at de nåværende prosessene for å oppdage potensielle feil blir lurt av denne tilnærmingen. Vi viser at funksjonaliteten til programvaren ikke blir skadet, og demonstrerer at feilene våre ser ut til å kunne utnyttes til gjeldende triage-verktøy, sier de

Det er en interessant tilnærming som har potensial til å avspore ondsinnede angripere betydelig. Vi tror at chaff bugs kan tjene som en effektiv avskrekking mot både menneskelige angripere og automatiserte Cyber ​​Reasoning Systems, sier Hu og co.

Men det reiser også noen interessante spørsmål. For eksempel er det ingen faktiske bevis for at å utprøve feil for å finne de som kan utnyttes, nødvendigvis er vanskelig og tidkrevende. Det er teoretisk mulig at noen et sted har funnet en rask måte å gjøre det på.

Hvis det viser seg at det er en måte å enkelt skille agnebugs fra utnyttbare, blir denne tilnærmingen mindre verdifull. Hu og co prøver faktisk ikke å skjule eller skjule feilene sine. Dette betyr at de for øyeblikket inneholder mange artefakter som angripere kan bruke til å identifisere og ignorere dem, sier de.

Det er også svært liten variasjon i disse injiserte insektene. [Dette] kan tillate en angriper å identifisere mønstre i feilene vi produserer og ekskludere de som samsvarer med mønsteret, sier de.

Men det er et betydelig potensiale fremover. Ideen om å legge til feil i stedet for å fjerne dem er en deilig ondsinnet tilnærming til nettkriminalitet, og en som bør utløse noen interessante veier for fremtidig forskning.

Ref: arxiv.org/abs/1808.00659 : Chaff Bugs: Avskrekke angripere ved å gjøre programvare Buggier

gjemme seg