Trojan Source, angreb, der gør det muligt at tilføje kodeændringer, der er usynlige for udvikleren

Få dage siden Cambridge University-forskere frigivet offentliggørelsen af en teknik til subtilt at erstatte koder ondsindet i applikationens kildekode.

Angrebsmetoden forberedte det Det er allerede opført under CVE-2021-42574 Den kommer under navnet Trojan Source og er baseret på dannelsen af ​​tekst, der ser anderledes ud for compileren/fortolkeren og den person, der ser koden.

Om Trojan Source

Metoden er afhængig af at anvende specielle Unicode-tegn i kodekommentarer, som ændrer visningsrækkefølgen af ​​den tovejstekst. Ved hjælp af disse kontroltegn, nogle dele af teksten kan vises fra venstre mod højre, mens andre fra højre mod venstre.

I daglig praksis kan disse kontroltegn fx bruges til at indsætte hebraiske eller arabiske strenge i en kodefil. Men hvis du bruger disse tegn til at kombinere linjer med forskellige tekstretninger på samme linje, kan tekstpassager, der vises fra højre mod venstre, overlappe eksisterende normal tekst, der vises fra venstre mod højre.

Med denne metode, en ondsindet konstruktion kan tilføjes til koden, men så gør teksten med denne konstruktion usynlig, når du ser koden, og tilføj tegnene vist fra højre mod venstre i den næste kommentar eller inde i den bogstavelige, hvilket vil resultere i et resultat af helt andre tegn overlejret på den ondsindede indsættelse. En sådan kode vil stadig være semantisk korrekt, men den vil blive fortolket og vist anderledes.

Vi har opdaget måder at manipulere kodningen af ​​kildekodefiler på, så menneskelige seere og compilere ser forskellig logik. En særlig skadelig metode bruger Unicode-retningsbestemt tilsidesættelsestegn til at vise koden som et anagram af dens sande logik. Vi har bekræftet, at dette angreb virker mod C, C++, C #, JavaScript, Java, Rust, Go og Python, og vi formoder, at det vil virke mod de fleste andre moderne sprog.

Mens du gennemgår koden, udvikleren vil blive konfronteret med den visuelle rækkefølge af karaktererne og vil se en mistænkelig kommentar i en editor tekst, webgrænseflade eller IDE, men kompilatoren og fortolkeren vil bruge den logiske rækkefølge af tegnene og håndtere den ondsindede kode som den er, uanset den tovejstekst i kommentaren. Adskillige populære kodeeditorer (VS Code, Emacs, Atom) samt grænseflader til visning af kode i repositories (GitHub, Gitlab, BitBucket og alle Atlassian-produkter) er berørt.

Der er flere måder at bruge metoden til at implementere ondsindede handlinger: tilføj et skjult "retur"-udtryk, som fører til afbrydelse af funktionsudførelsen for tidligt; konklusionen i kommentaren af ​​udtryk, der normalt betragtes som gyldige konstruktioner (for eksempel for at deaktivere vigtige kontroller); Tildeling af andre strengværdier, der fører til strengvalideringsfejl.

Derudover en anden angrebsmulighed blev foreslået (CVE-2021-42694), som involverer brugen af ​​homoglyffer, symboler, der ligner hinanden i udseende, men afviger i betydning og har forskellige Unicode-koder. Disse tegn kan bruges på nogle sprog i funktions- og variabelnavne for at vildlede udviklere. For eksempel kan du definere to funktioner med navne, der ikke kan skelnes, og som udfører forskellige handlinger. Uden detaljeret analyse kan du ikke umiddelbart forstå, hvilken af ​​disse to funktioner, der kaldes et bestemt sted.

Som en beskyttelsesforanstaltning, det anbefales at implementere i compilere, fortolkere og montageværktøjer, der understøtter Unicode-tegn, der viser en fejl eller advarsel om der er uparrede kontroltegn i kommentarer, strenge bogstaver eller identifikatorer, der ændrer outputretningen. Disse tegn skal også udtrykkeligt være forbudt i programmeringssprogspecifikationerne og skal tages i betragtning i kodeeditorer og grænseflader til arbejde med repositories.

udover det sårbarheder er allerede begyndt at blive rettet forberedt til GCC, LLVM / Clang, Rust, Go, Python og binutils. GitHub, Bitbucket og Jira er også allerede i gang med at udarbejde en løsning sammen med GitLab.

Endelig Hvis du er interesseret i at vide mere om det, du kan konsultere detaljerne i følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.