«Trojan Source»

Advarer mot lumske angrep med usynlig sårbarhet i kildekoden

Forskere fant metode som kan plante svakheter og ondsinnet kode i programvare ved hjelp av Unicode.

Kildekoden kan inneholde en trojansk hest i form av ondsinnet logikk og skadelige funksjoner du ikke kan oppdage med en manuell inspeksjon, mener forskerne.
Kildekoden kan inneholde en trojansk hest i form av ondsinnet logikk og skadelige funksjoner du ikke kan oppdage med en manuell inspeksjon, mener forskerne. (Illustrasjonsfoto: Colourbox)

Forskere fant metode som kan plante svakheter og ondsinnet kode i programvare ved hjelp av Unicode.

Ideen om å snike fiendtlig kode inn i et dataprogram, også før kildekoden settes sammen til en eksekverbar applikasjon, er ikke ny. Det er derfor bruk av tredjeparts biblioteker og eksterne kodelagre kan innebære en viss risiko. 

Forskere fra University of Cambridge har nettopp publisert en studie med «kule nye triks» for å plante målrettede sårbarheter i kildekoden – og som kan være usynlige for det blotte øyet.

Det er en avhandling om ulike teknikker som er døpt «Trojan Source», med klar referanse til den berømte trojanske trehesten fra gresk mytologi.

Sårbarhetene de røper nå, skal være holdt tilbake i 99 dager for å koordinere avsløringene med påkrevde endringer hos en rekke utgivere av kompilatorer, koderedigeringsverktøy og kodedepoter som skal ha implementert beskyttelse mot farene de representerer.

Lureri i koden

Vanlig lesbar kildekode inneholder som regel en del kommentarer, både i form av ubrukt kode og tekst som forklarer hva deler av programmet gjør. Forskerne klarer ikke å lure en kompilator til å tolke kode som faktisk er kommentert bort.

Derimot har de funnet en teknikk for å lure mennesker som studerer kildekoden, til å tro at deler av det som tilsynelatende er kommentert vekk, faktisk er aktiv kode – som kan ende opp i programvaren med potensielt dramatiske konsekvenser.

Det gjør de ved hjelp av såkalte bidi-algoritmer (bidirectional text) og kontrolltegn, som er en del av standard Unicode for å bestemme tolkning av i hvilken retning en tekst skal vises.

Usynlig logikk

Les også

Slike mekanismer gjør det mulig å vise for eksempel hebraiske og arabiske tegn og ord, som leses fra høyre mot venstre, på korrekt vis, inkludert når de er sitert som del av en annen latinsk tekst med flyt fra venstre mot høyre.

Slike kontrolltegn er ikke nødvendigvis synlige for det blotte øye, de er ment for maskinell tolkning. Cambridge-forskerne har oppdaget at de fleste kompilatorer og utviklingsverktøy ikke er utstyrt med evner til å håndtere bidi-tegn eller å signalisere bruken av slike på innsiden av kildekodens kommentarer, melder nettstedet The Record.

– Vi har oppdaget metoder for å manipulere kodingen av kildekodefiler, som gjør at mennesker og kompilatorer vil observere ulik logikk. En særlig skadelig metode benytter seg av Unicode-tegn for retningsoverstyring for å vise kode som et anagram av dens virkelige logikk, skriver forskerne i en kunngjøring.

Sårbarheten ligger i Unicode-spesifikasjonen og har fått en egen CVE-identifikator (Common Vulnerabilities and Exposures) med sporingsnummeret CVE-2021-42574.

Utnytter homografe tegn

Les også

Ifølge forskerne fungerer angrepet mot programmeringsspråk som C, C++, C#, Javascript, Java, Rust, Go og Python, men de mistenker også at samme teknikk vil fungere like godt mot de fleste andre moderne språk.

Avhandlingen beskriver også funn av et annet, lignende angrep, der vanlige bokstaver fra det latinske alfabetet blir erstattet med lignende bokstaver fra andre tegnsett.

Unicode-tegn som ligner hverandre rent visuelt, såkalt homografe tegn, kan også misbrukes til å gjøre skade i kildekode, mener forskerne. Et angrep de beskriver i rapporten (PDF), er opprettelsen av falske funksjoner med navn som kloner en ekte funksjon, men der en latinsk bokstav er byttet ut med en svært lik variant fra det kyrilliske alfabetet.

Den sistnevnte sårbarheten har fått løpenummeret CVE-2021-42694.

– Yikes

Matthew Green, professor i kryptografi ved Johns Hopkins University, sier at forskningen fra Cambridge med all tydelighet viser at kompilatorer flest kan bli narret. De kan lures til å prosessere kode på andre måter enn man skulle tro, melder den anerkjente sikkerhetsskribenten Brian Krebs.

– Før jeg leste denne avhandlingen, ville jeg ikke latt meg overraske over at Unicode kan utnyttes på en eller annen måte. Det som overrasker meg, er hvor mange kompilatorer som gladelig vil tolke Unicode uten noen form for beskyttelse – og hvor effektiv deres høyre-til-venstre-kodeteknikk er med å snike kode inn i kodebaser. Det er et skikkelig smart triks som jeg ikke trodde var mulig. Yikes, sier informatikkprofessoren til nettstedet Krebs on Security.

Les også

Kommentarer (2)

Kommentarer (2)
Til toppen