
Odborníci z University of Cambridge zveřejnili informace o nebezpečné zranitelnosti (CVE-2021-42574), která se týká téměř všechmoderní kompilátory zdrojového kódu. Článek Trojan Source popisuje zákeřný útok, který umožňuje hackerům skrýt škodlivý kód ve zdrojovém kódu různých programů.
Útok je založen na tom, jak kompilátoryzacházet s jedinečnými identifikátory používanými k určení orientace textu – zleva doprava nebo zprava doleva. Slabina spočívá v algoritmu Unicode Bidi, který umožňuje používat slova psaná zprava doleva a zleva doprava dohromady. Díky tomuto algoritmu můžete kombinovat arabská a anglická slova. To vám umožní číst text psaný zprava doleva, zleva doprava a naopak.
V některých případech schopnosti algoritmuUnicode Bidi ke změně způsobu zobrazení těchto slov nestačí a v takových případech se používají speciální řídicí znaky. Pokud však stejný řádek kombinuje slova s různými směry textu, pak pomocí těchto řídicích znaků můžete změnit směr, kterým kompilátor čte text, a například zajistit, aby řádky, které vypadají jako komentáře, fungovaly jako spustitelný kód.

</ img>
Pomocí této metody můžete přidat škodlivéinstrukci do normálního zdrojového kódu a pomocí následného komentáře učiní text této instrukce neviditelným při prohlížení kódu. Tím se vloží úplně jiné znaky, což může být ve skutečnosti libovolný kód. Konečný zdrojový kód zůstává sémanticky správný, ale jakmile je zkompilován, stane se něco úplně jiného.
Při prohlížení a analýze takového zdrojového kóduprogramátor uvidí kód s komentáři, které nevzbuzují žádné podezření, ale překladač nebo interpret obrátí logické pořadí symbolů a nevinný komentář se změní v dodatečný kód vložený do programu. Chyba je přítomna téměř ve všech kompilátorech – pro programovací jazyky C, C++ (gcc a clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go a Python; v řadě oblíbených editorů kódu, včetně VS Code, Emacs, Atom a rozhraní pro prohlížení zdrojového kódu v GitHubu, Gitlabu, BitBucketu a všech produktech Atlassian.
Zdroj: trojansource, zdnet
</ p>