Trojan Source, attack som gör det möjligt att lägga till kodändringar som är osynliga för utvecklaren

Några dagar sen Cambridge University forskare släppt publiceringen av en teknik för att subtilt ersätta koder skadlig i programmets källkod.

Angreppsmetoden förberedde det Den är redan listad under CVE-2021-42574 Den kommer under namnet Trojan Source och är baserad på bildandet av text som ser annorlunda ut för kompilatorn/tolken och den person som tittar på koden.

Om trojansk källa

Metoden förlitar sig på att använda speciella Unicode-tecken i kodkommentarer, som ändrar visningsordningen för den dubbelriktade texten. Med hjälp av dessa kontrolltecken, vissa delar av texten kan visas från vänster till höger, medan andra från höger till vänster.

I vardagen kan dessa kontrolltecken användas till att till exempel infoga hebreiska eller arabiska strängar i en kodfil. Men om du använder dessa tecken för att kombinera rader med olika textriktningar på samma rad, kan textavsnitt som visas från höger till vänster överlappa befintlig normal text som visas från vänster till höger.

Med denna metod en skadlig konstruktion kan läggas till i koden, men gör sedan texten med denna konstruktion osynlig när du tittar på koden, lägg till tecknen som visas från höger till vänster i nästa kommentar eller inuti den bokstavliga, vilket kommer att resultera i ett resultat av helt andra tecken överlagrade på den skadliga infogningen. Sådan kod kommer fortfarande att vara semantiskt korrekt, men den kommer att tolkas och visas annorlunda.

Vi har upptäckt sätt att manipulera kodningen av källkodsfiler så att mänskliga tittare och kompilatorer ser olika logik. En särskilt skadlig metod använder Unicode-riktningsöverskridande tecken för att visa koden som ett anagram av dess sanna logik. Vi har verifierat att denna attack fungerar mot C, C ++, C #, JavaScript, Java, Rust, Go och Python, och vi misstänker att den kommer att fungera mot de flesta andra moderna språk.

När du granskar koden, utvecklaren kommer att ställas inför karaktärernas visuella ordning och kommer att se en misstänkt kommentar i en redigerare text, webbgränssnitt eller IDE, men kompilatorn och tolken kommer att använda den logiska ordningen för tecknen och hantera den skadliga koden som den är, oavsett den dubbelriktade texten i kommentaren. Flera populära kodredigerare (VS Code, Emacs, Atom), såväl som gränssnitt för visning av kod i repositories (GitHub, Gitlab, BitBucket och alla Atlassian-produkter) påverkas.

Det finns flera sätt att använda metoden för att implementera skadliga åtgärder: lägg till ett dolt uttryck "retur", vilket leder till att funktionen avslutas i förtid; slutsatsen i kommentaren av uttryck som normalt anses vara giltiga konstruktioner (till exempel för att inaktivera viktiga kontroller); Tilldela andra strängvärden som leder till strängvalideringsfel.

Dessutom, ett annat attackalternativ föreslogs (CVE-2021-42694), som involverar användning av homoglyfer, symboler som ser likadana ut, men skiljer sig i betydelse och har olika Unicode-koder. Dessa tecken kan användas på vissa språk i funktions- och variabelnamn för att vilseleda utvecklare. Du kan till exempel definiera två funktioner med oskiljbara namn som utför olika åtgärder. Utan detaljerad analys kan du inte omedelbart förstå vilken av dessa två funktioner som kallas på en viss plats.

Som en skyddsåtgärd, det rekommenderas att implementera i kompilatorer, tolkar och monteringsverktyg som stöder Unicode-tecken, som visar ett fel eller en varning om det finns oparade kontrolltecken i kommentarer, bokstavliga strängar eller identifierare som ändrar utmatningsriktningen. Dessa tecken måste också uttryckligen vara förbjudna i programmeringsspråksspecifikationerna och måste beaktas i kodredigerare och gränssnitt för att arbeta med repositories.

Förutom det sårbarheter har redan börjat åtgärdas förberedd för GCC, LLVM / Clang, Rust, Go, Python och binutils. GitHub, Bitbucket och Jira håller också redan på att förbereda en lösning tillsammans med GitLab.

Slutligen Om du är intresserad av att veta mer om det, du kan rådfråga detaljerna i följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.