Forskare har hackat sig in i en dator genom att gömma x86-kod i ett DNA-prov och utsätta det för DNA-analys. Ett analysprogram infekterades med kod som lät forskarna fjärrstyra datorn.
Forskare har sedan länge roat sig med att lägga data i form av filmer och text i biologisk arvsmassa. Men det här är första gången de demonstrerat att det är teoretisk möjligt att smuggla in x86-kod i en dator via ett fysiskt DNA-prov.
Biologer kan idag syntetisera arvsmassa, det vill säga tillverka DNA-molekyler med valfria sekvenser av de fyra så kallade nukleotider som DNA-molekyler är uppbyggda av, förkortade A, C, T, och G.
Dessutom finns idag metoder för att göra motsatsen – att läsa av vilka symboler som en DNA-molekyl är sammanfogad av. Det kallas DNA-sekvensering.
Forskarna syntetiserade DNA-kod som gick att tolka som meningsfull programkod. Och så lyckades de lura en dator att exekvera koden.
Det senare gjorde de med hjälp av en ganska vanlig bugg som kallas buffer overflow och beror på att programmeraren glömmer att testa om alla data får plats i ett reserverat minnesutrymme.
När datat inte får plats flödar det över utanför sitt reserverade område. Angriparen kan se till att överflödet hamnar på en plats i minnet där det tolkas som programkod och exekveras.
Forskarna lät tillverka och preparera en DNA-sträng på 176 symboler (till ett pris av 89 dollar). Därefter sekvenserade de DNA-provet och stoppade in utdatat i ett typiskt program som bioinformatiker använder att för bearbeta DNA-data.
Där passerade DNA-strängen en buffert dimensionerad för bara 150 tecken varvid en buffer overflow-bugg utlöstes. De överflödande tecknen exekverades som kod och lät forskarna ta kontrollen över datorn och fjärrstyra den.
De fyra DNA-nukleotiderna datalagras vanligen som tecknen A, T, C, G vilket är svårt att pussla samman till x86-instruktioner. Men forskarna attackerade ett DNA-analysprogram kallat fqzcomp där nukleotiderna packas i två bitar vardera. Därmed fyller fyra nukleotider exakt upp en byte, vilket gav forskarna full frihet att specificera godtycklig binärkod för en x86-processor.
Forskarna fick prova sig fram innan de hittade en lämplig attackväg. Exempelvis var de tvungna att anpassa koden till att en DNA-sträng inte kan se ut hur som helst för att inte gå sönder och för att DNA-sekvenseraren ska kunna bearbeta den.
Attacken fungerade logiskt nog inte när sekvenseraren råkade läsa av DNA-symbolerna baklänges. Så en av de uppgifter som forskarna ska ta sig an härnäst, är att hitta attack-kod som är palindrom, det vill säga ser likadan ut om den läses baklänges.
En del fusk använde sig forskarna av. Inte nog med att de stängde av vissa säkerhetskontroller för att koden skulle exekveras, utan det var till och med de själva som introducerade den overflowbugg som de sedan utnyttjade. De dimensionerande den för att kunna lagra 150 symboler, och matade den med 176 symboler.
Men de har i alla fall lyckats demonstrera att attacken är teoretiskt möjligt.
Och förresten så är bioinformatiker urusla programmerare, så det går säkert att hitta andra säkerhetshål som kan utnyttjas.
Oj, det lät som en fördom!
Men forskargruppen har faktiskt belagt detta. De sökte igenom tretton program inom bioinformatikområdet och hittade en cirka tio gånger högre förekomst av riskabel kod än i jämförelsematerialet.
I det program som forskarna introducerade en overlowbugg i, fqzcomp, fanns två dussin fast dimensionerade buffertar som skulle kunna drabbas av overflow-buggar.
Genom att det var de själva som introducerade buggen i sin egen version av fqzcomp, så finns det ingen anledning att oroa sig över attacker av detta slag redan idag.
Resultatet presenteras på säkerhetskonferensen Usenix nästa vecka.
Forskarna arbetar på University of Washington i Seattle.
Här kan du ladda hem forskarnas rapport: (länk).