
Gli esperti dell'Università di Cambridge hanno pubblicato informazioni su una pericolosa vulnerabilità (CVE-2021-42574), che interessa quasi tuttimoderni compilatori di codice sorgente. L'articolo di Trojan Source descrive un attacco insidioso che consente agli hacker di nascondere codice dannoso nel codice sorgente di vari programmi.
L'attacco si basa su come compilatorigestire identificatori univoci utilizzati per determinare l'orientamento del testo – da sinistra a destra o da destra a sinistra. Il punto debole risiede nell'algoritmo Unicode Bidi, che consente di utilizzare insieme le parole scritte da destra a sinistra e da sinistra a destra. Grazie a questo algoritmo puoi combinare parole arabe e inglesi. Ciò consente di leggere il testo scritto da destra a sinistra, da sinistra a destra e viceversa.
In alcuni casi, le capacità dell'algoritmoUnicode Bidi non è sufficiente per cambiare il modo in cui queste parole vengono visualizzate e in questi casi vengono utilizzati caratteri di controllo speciali. Tuttavia, se la stessa riga combina parole con direzioni di testo diverse, utilizzando questi caratteri di controllo è possibile modificare la direzione in cui il compilatore legge il testo e, ad esempio, fare in modo che le righe che assomigliano a commenti si comportino come codice eseguibile.

</ img>
Usando questo metodo, puoi aggiungere malwareistruzione nel normale codice sorgente e rendere invisibile il testo di questa istruzione quando si visualizza il codice utilizzando un commento successivo. Questo inserirà caratteri completamente diversi, che in realtà potrebbero essere codici arbitrari. Il codice sorgente finale rimane semanticamente corretto, ma una volta compilato accade qualcosa di completamente diverso.
Durante la visualizzazione e l'analisi di tale codice sorgenteil programmatore vedrà codice con commenti che non destano alcun sospetto, ma il compilatore o l'interprete invertiranno l'ordine logico dei simboli, e l'innocente commento si trasformerà in codice aggiuntivo inserito nel programma. L'errore è presente in quasi tutti i compilatori – per i linguaggi di programmazione C, C++ (gcc e clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go e Python; in una varietà di editor di codice popolari, tra cui VS Code, Emacs, Atom e interfacce di visualizzazione del codice sorgente in GitHub, Gitlab, BitBucket e tutti i prodotti Atlassian.
Fonte: trojansource, zdnet
</ p>