
Kembridžo universiteto ekspertai paskelbė informaciją apie pavojingą pažeidžiamumą (CVE-2021-42574), kuris turi įtakos beveik visiemsŠiuolaikiniai šaltinio kodo kompiliatoriai. Trojan Source straipsnyje aprašoma klastinga ataka, leidžianti įsilaužėliams paslėpti kenkėjišką kodą įvairių programų šaltinio kode.
Ataka grindžiama tuo, kaip kompiliatoriaitvarkyti unikalius identifikatorius, naudojamus teksto orientacijai nustatyti – iš kairės į dešinę arba iš dešinės į kairę. Trūkumas slypi Unicode Bidi algoritme, leidžiančiame žodžius, parašytus iš dešinės į kairę ir iš kairės į dešinę, naudoti kartu. Dėl šio algoritmo galite derinti arabiškus ir angliškus žodžius. Tai leidžia skaityti tekstą, parašytą iš dešinės į kairę, iš kairės į dešinę ir atvirkščiai.
Kai kuriais atvejais algoritmo galimybėsUnicode Bidi nepakanka norint pakeisti šių žodžių rodymo būdą, ir tokiais atvejais naudojami specialūs valdymo simboliai. Tačiau jei toje pačioje eilutėje sujungiami žodžiai su skirtingomis teksto kryptimis, tada naudodami šiuos valdymo simbolius galite pakeisti kryptį, kuria kompiliatorius skaito tą tekstą, ir, pavyzdžiui, eilutes, kurios atrodo kaip komentarai, veikti kaip vykdomąjį kodą.

</ img>
Naudodami šį metodą galite pridėti kenkėjiškųinstrukcijas į įprastą šaltinio kodą ir padarykite šios instrukcijos tekstą nematomą peržiūrint kodą naudodami tolesnį komentarą. Tai įterps visiškai skirtingus simbolius, kurie iš tikrųjų gali būti savavališkas kodas. Galutinis šaltinio kodas išlieka semantiškai teisingas, tačiau sukompiliavus nutinka kažkas visiškai kitokio.
Peržiūrėdami ir analizuodami tokį šaltinio kodąprogramuotojas pamatys kodą su komentarais, kurie nekelia jokių įtarimų, tačiau kompiliatorius ar interpretatorius pakeis loginę simbolių tvarką, o nekaltas komentaras pavirs į programą įdėtu papildomu kodu. Klaida yra beveik visuose kompiliatoriuose – programavimo kalboms C, C++ (gcc ir clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go ir Python; įvairiose populiariose kodo rengyklėse, įskaitant VS Code, Emacs, Atom ir šaltinio kodo peržiūros sąsajas GitHub, Gitlab, BitBucket ir visuose Atlassian produktuose.
Šaltinis: trojansource, zdnet
</ p>