Trojan Source, атака, яка дозволяє вносити зміни в код, невидимі для розробника

Кілька днів тому Про це повідомили дослідники Кембриджського університету публікація техніка тонкої заміни кодів шкідливий у вихідному коді програми.

Метод атаки підготував це Він уже внесений до списку CVE-2021-42574 Він має назву Trojan Source і заснований на формуванні тексту, який виглядає по-різному для компілятора/інтерпретатора та для людини, яка переглядає код.

Про троянське джерело

Метод покладається на застосування спеціальних символів Unicode в коментарях до коду, які змінюють порядок відображення двонаправленого тексту. За допомогою цих керуючих символів, деякі частини тексту можна відобразити зліва направо, а інші — справа наліво.

У повсякденній практиці ці контрольні символи можна використовувати, наприклад, для вставки івриту чи арабської рядків у файл коду. Однак якщо ви використовуєте ці символи для поєднання рядків з різними напрямками тексту в одному рядку, уривки тексту, що відображається справа наліво, можуть перекривати існуючий звичайний текст, що відображається зліва направо.

За допомогою цього методу до коду можна додати шкідливу конструкцію, але потім зробіть текст з цією конструкцією невидимим під час перегляду коду, додавши символи, показані справа наліво в наступному коментарі або всередині літералу, що призведе до того, що на шкідливу вставку будуть накладені зовсім інші символи. Такий код все одно буде семантично правильним, але він буде інтерпретуватися та відображатися по-різному.

Ми знайшли способи маніпулювати кодуванням файлів вихідного коду, щоб люди-переглядачі та компілятори бачили різну логіку. Один з особливо шкідливих методів використовує символи зміни спрямованості Unicode для відображення коду як анаграми його справжньої логіки. Ми перевірили, що ця атака працює проти C, C ++, C #, JavaScript, Java, Rust, Go і Python, і ми підозрюємо, що вона працюватиме проти більшості інших сучасних мов.

Переглядаючи код, розробник зіткнеться з візуальним порядком символів і побачить підозрілий коментар у редакторі текст, веб-інтерфейс або IDE, але компілятор і інтерпретатор будуть використовувати логічний порядок символів і обробляти шкідливий код як є, незалежно від двонаправленого тексту в коментарі. Це стосується кількох популярних редакторів коду (VS Code, Emacs, Atom), а також інтерфейсів для перегляду коду в репозиторіях (GitHub, Gitlab, BitBucket і всі продукти Atlassian).

Існує кілька способів використання методу для реалізації шкідливих дій: додати прихований вираз «повернення», що призводить до передчасного припинення виконання функції; висновок у коментарі виразів, які зазвичай вважаються дійсними конструкціями (наприклад, для відключення важливих перевірок); Призначення інших значень рядка призводить до помилок перевірки рядка.

Крім того, був запропонований інший варіант атаки (CVE-2021-42694), який передбачає використання гомогліфів, символи, схожі за зовнішнім виглядом, але відрізняються за значенням і мають різні коди Unicode. Ці символи можна використовувати в деяких мовах в іменах функцій і змінних, щоб ввести розробників в оману. Наприклад, можна визначити дві функції з нерозрізненими іменами, які виконують різні дії. Без детального аналізу неможливо відразу зрозуміти, яка з цих двох функцій викликається в тому чи іншому місці.

Як захід захисту, рекомендується впроваджувати в компілятори, інтерпретатори та інструменти складання, які підтримують символи Unicode, показуючи помилку або попередження чи є непарні керуючі символи в коментарях, рядкових літералах або ідентифікаторах, які змінюють напрямок виведення. Ці символи також повинні бути явно заборонені в специфікаціях мови програмування і повинні враховуватися в редакторах коду та інтерфейсах для роботи зі сховищами.

Крім того уразливості вже почали виправляти підготовлено для GCC, LLVM / Clang, Rust, Go, Python і binutils. GitHub, Bitbucket і Jira також вже готують рішення разом з GitLab.

В кінці кінців Якщо вам цікаво дізнатись більше про це, ви можете проконсультуватися деталі у наступному посиланні.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.