A kutatók egy új támadási módszert dolgoztak ki “Trojan Source” néven, amely lehetővé teszi a sebezhetőségek elrejtését egy szoftver forráskódjában. A technika kihasználható láthatatlan kártevők bejuttatására, anélkül hogy a forráskód szemantikáját befolyásolná, miközben megváltoztatja annak logikáját. Ez a támadás a szövegkódolási szabványok (Unicode) tulajdonságait használja ki, hogy olyan forráskódot állítson elő, amelynek tokenjei logikailag más sorrendben vannak kódolva, mint ahogyan megjelennek. Ez olyan sebezhetőségekhez vezet, amelyeket közvetlenül nem érzékelnek azok, akik a kódot olvassák.
A Trojan Source támadások komoly kockázatot jelentenek a szervezetekre, és lehetővé tehetik az ellátási láncokat érintő támadásokat. A kutatók két, CVE-2021-42574 és CVE-2021-42694 néven nyomon követhető sebezhetőséget használtak ki, amelyek a legtöbb népszerű programozási nyelv, köztük a C, C++, C#, Go, Java, JavaScript, Python és Rust fordítóit érintik. Továbbá felfedezték, hogy hogyan lehet manipulálni a forráskódfájlok kódolását úgy, hogy a programozók és a fordítóprogramok eltérő logikát lássanak. Az egyik ilyen technika a kód valódi logikájának anagrammájaként való megjelenítése. A probléma az Unicode kétirányú (Bidi) algoritmusát érinti, amely lehetővé teszi a balról jobbra (például angol) és a jobbról balra (például arab vagy héber) nyelvek támogatását. A Bidi felülírások jellemzően azt eredményezik, hogy a kurzor pozíciókat ugrik a sorban, amikor például karakterenként jelölünk ki egy sornyi szöveget.
A szakértők a Trojan Source támadások homoglifákat használó változataira is figyelmeztetnek. Az azonosnak tűnő karakterek, például a cirill “х” betű jellemzően azonos az angolban használt latin “x” betűvel, de más kódpontot foglal el. A támadók ezt a trükköt arra használhatják, hogy olyan homoglif funkciót hozzanak létre, amely látszólag hasonlónak tűnik az eredetihez, de valójában rosszindulatú kódot tartalmaz.