Sårbarhet upptäcktes i ett stort antal kompilatorer som låter dig dölja skadlig kod

Experter från University of Cambridge har publicerat information om en farlig sårbarhet (CVE-2021-42574), vilket påverkar nästan allamoderna källkodskompilatorer. Den trojanska källartikeln beskriver en lömsk attack som gör att hackare kan gömma skadlig kod i källkoden för olika program.

Attacken är baserad på hur kompilatorerhantera unika identifierare som används för att bestämma textorientering – från vänster till höger eller från höger till vänster. Svagheten ligger i Unicode Bidi-algoritmen, som gör att ord skrivna från höger till vänster och vänster till höger kan användas tillsammans. Tack vare denna algoritm kan du kombinera arabiska och engelska ord. Detta gör att du kan läsa text skriven från höger till vänster, vänster till höger och vice versa.

I vissa fall algoritmens kapacitetUnicode Bidi är inte tillräckligt för att ändra hur dessa ord visas, och speciella kontrolltecken används i sådana fall. Men om samma rad kombinerar ord med olika textriktningar kan du med hjälp av dessa kontrolltecken ändra riktningen som kompilatorn läser texten och till exempel få rader som ser ut som kommentarer att fungera som körbar kod.


</ img>

Med den här metoden kan du lägga till skadliginstruktionen till den normala källkoden, och gör texten i denna instruktion osynlig när du tittar på koden med en efterföljande kommentar. Detta kommer att infoga helt andra tecken, som faktiskt kan vara godtycklig kod. Den slutliga källkoden förblir semantiskt korrekt, men när den väl har kompilerats händer något helt annat.

När du tittar på och analyserar sådan källkodprogrammeraren kommer att se kod med kommentarer som inte väcker misstankar, men kompilatorn eller tolken kommer att vända den logiska ordningen för symbolerna, och den oskyldiga kommentaren kommer att förvandlas till ytterligare kod som infogas i programmet. Felet finns i nästan alla kompilatorer &#8211; för programmeringsspråken C, C++ (gcc och clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go och Python; i en mängd populära kodredigerare, inklusive VS Code, Emacs, Atom och källkodsvisningsgränssnitt i GitHub, Gitlab, BitBucket och alla Atlassian-produkter.

Källa: trojansource, zdnet

</ p>