
Експерти Кембриджського університету опублікували інформацію про небезпечну вразливість (CVE-2021-42574), яка зачіпає практично всесучасні компілятори вихідного коду Стаття Trojan Source описує підступну атаку, яка дозволяє хакерам ховати шкідливий код у вихідному коді різних програм.
Атака заснована на тому, як компіляториобробляють унікальні ідентифікатори, використовувані визначення орієнтації тексту – зліва направо або праворуч наліво. Слабкість полягає в алгоритмі Unicode Bidi, який дозволяє використовувати разом слова, написані праворуч наліво та зліва направо. Завдяки цьому алгоритму можна комбінувати арабські та англійські слова. Це дозволяє читати текст, написаний праворуч наліво, зліва направо та навпаки.
У деяких випадках можливостей алгоритмуUnicode Bidi недостатньо для зміни способу відображення цих слів, і в таких випадках використовуються спеціальні символи керування. Однак, якщо в одному рядку поєднуються слова з різним напрямком тексту, то за допомогою цих керуючих символів можна змінити напрямок читання компілятором цього тексту і, наприклад, зробити так, щоб рядки, які виглядають як коментарі, працювали як виконуваний код.

</ Img>
Використовуючи цей метод, можна додати шкідливуінструкцію у звичайний вихідний код, а текст цієї інструкції зробити невидимим під час перегляду коду за допомогою наступного коментаря. Це призведе до вставлення зовсім інших символів, які можуть бути довільним кодом. Кінцевий вихідний код залишається семантично коректним, але після компіляції відбувається зовсім інше.
Під час перегляду та аналізу такого вихідного кодупрограміст побачить код із коментарями, які викликають ніяких підозр, але компілятор чи інтерпретатор оберне логічний порядок символів, і безневинний коментар перетвориться на додатковий код, вставлений у програму. Помилка є практично у всіх компіляторах – для мов програмування C, C++ (gcc та clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go та Python; у різних популярних редакторах коду, включаючи VS Code, Emacs, Atom, а також в інтерфейсах перегляду вихідного коду у репозиторіях GitHub, Gitlab, BitBucket та всіх продуктів Atlassian.
Джерело: trojansource, zdnet
</ P>