Sårbarhed blev opdaget i et stort antal compilere, der giver dig mulighed for at skjule ondsindet kode

Eksperter fra University of Cambridge har offentliggjort information om en farlig sårbarhed (CVE-2021-42574), hvilket påvirker næsten allemoderne kildekode kompilatorer. Den trojanske kilde-artikel beskriver et snigende angreb, der gør det muligt for hackere at skjule ondsindet kode i kildekoden til forskellige programmer.

Angrebet er baseret på, hvordan kompilatorer håndterer unikke identifikatorer, der bruges til at bestemme, om tekst er orienteret fra venstre mod højre eller højre mod venstre.Svagheden ligger i Unicode Bidi-algoritmen, som giver dig mulighed for at bruge ord skrevet fra højre mod venstre og venstre mod højre sammen.Takket være denne algoritme er det muligt at kombinere arabiske og engelske ord.Læs tekst skrevet fra højre mod venstre, venstre mod højre og omvendt.

I nogle tilfælde algoritmens mulighederUnicode Bidi er ikke nok til at ændre den måde, disse ord vises på, og specielle kontroltegn bruges i sådanne tilfælde. Men hvis den samme linje kombinerer ord med forskellige tekstretninger, så kan du ved hjælp af disse kontroltegn ændre retningen, som compileren læser den tekst og for eksempel få linjer, der ligner kommentarer, til at fungere som eksekverbar kode.


</ img>

Ved hjælp af denne metode kan du tilføje ondsindetinstruktion ind i den normale kildekode, og gør teksten i denne instruktion usynlig, når du ser koden ved hjælp af en efterfølgende kommentar. Dette vil indsætte helt andre tegn, som faktisk kunne være vilkårlig kode. Den endelige kildekode forbliver semantisk korrekt, men når den først er kompileret, sker der noget helt andet.

Når du ser og analyserer en sådan kildekodeprogrammøren vil se kode med kommentarer, der ikke giver anledning til mistanke, men kompilatoren eller tolken vil vende symbolernes logiske rækkefølge, og den uskyldige kommentar bliver til yderligere kode indsat i programmet. Fejlen findes i næsten alle compilere &#8211; til programmeringssprogene C, C++ (gcc og clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go og Python; i en række populære kodeeditorer, herunder VS Code, Emacs, Atom og kildekodevisningsgrænseflader i GitHub, Gitlab, BitBucket og alle Atlassian-produkter.

Kilde: trojansource, zdnet

</ p>