
Experții de la Universitatea din Cambridge au publicat informații despre o vulnerabilitate periculoasă (CVE-2021-42574), care îi afectează aproape pe toțicompilatoare moderne de cod sursă. Articolul Trojan Source descrie un atac insidios care permite hackerilor să ascundă cod rău intenționat în codul sursă al diferitelor programe.
Atacul se bazează pe modul în care compilatoriigestionează identificatorii unici utilizați pentru a determina orientarea textului – de la stânga la dreapta sau de la dreapta la stânga. Punctul slab constă în algoritmul Unicode Bidi, care permite ca cuvintele scrise de la dreapta la stânga și de la stânga la dreapta să fie folosite împreună. Datorită acestui algoritm, puteți combina cuvinte arabe și engleze. Acest lucru vă permite să citiți textul scris de la dreapta la stânga, de la stânga la dreapta și invers.
În unele cazuri, capacitățile algoritmuluiUnicode Bidi nu este suficient pentru a schimba modul în care aceste cuvinte sunt afișate, iar caracterele speciale de control sunt folosite în astfel de cazuri. Cu toate acestea, dacă aceeași linie combină cuvinte cu direcții de text diferite, atunci folosind aceste caractere de control puteți schimba direcția în care compilatorul citește acel text și, de exemplu, puteți face ca liniile care arată ca comentarii să acționeze ca un cod executabil.

</ img>
Folosind această metodă, puteți adăuga malwareinstrucțiunea în codul sursă normal și faceți textul acestei instrucțiuni invizibil atunci când vizualizați codul folosind un comentariu ulterior. Acest lucru va insera caractere complet diferite, care ar putea fi de fapt cod arbitrar. Codul sursă final rămâne corect din punct de vedere semantic, dar odată compilat, se întâmplă ceva complet diferit.
Când vizualizați și analizați un astfel de cod sursăprogramatorul va vedea cod cu comentarii care nu ridică nicio suspiciune, dar compilatorul sau interpretul va inversa ordinea logică a simbolurilor, iar comentariul nevinovat se va transforma în cod suplimentar introdus în program. Eroarea este prezentă în aproape toate compilatoarele – pentru limbaje de programare C, C++ (gcc și clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go și Python; într-o varietate de editori de cod populari, inclusiv VS Code, Emacs, Atom și interfețe de vizualizare a codului sursă în GitHub, Gitlab, BitBucket și toate produsele Atlassian.
Sursa: trojansource, zdnet
</ p>