fbpx
-0.8 C
София

В редица компилатори бе открита уязвимост, която дава възможност за скриване на вредоносен код

Най-четени

Даниел Десподов
Даниел Десподовhttps://www.kaldata.com/
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

Специалистите от Кеймбриджкия университет публикуваха информация за опасна уязвимост (CVE-2021-42574), която засяга на практика всички съвременни компилатори на сорс код. В статията Trojan Source е описана коварна атака, която дава възможност на хакерите да скрият вредоносен код в сорс кода на различните програми.

Атаката се базира на начина, по който компилаторите обработват Unique идентификаторите, използвани за определяне на ориентацията на текста – дали е отляво надясно или отдясно наляво. Слабото място е в алгоритъма Unicode Bidi, който дава възможност за съвместното използване на написани отдясно наляво и отляво надясно думи. Благодарение на този алгоритъм е възможно да се съчетават думи на арабски и английски език. Той позволява написаният отдясно наляво текст да се чете отляво надясно и обратното.

В някои случаи възможностите на алгоритъма Unicode Bidi са недостатъчни за промяната на начина на показване на тези думи и в подобни случаи се използват специални управляващи символи. Но ако се комбинират думи с различна посока на текста в един и същи ред, с помощта на тези управляващи символи е възможно да се промени посоката на четене на този текст от компилатора и например, редове, които изглеждат като коментари, да се окажат като действащ код.

Използвайки този метод, в обикновения сорс код може да се добави вредоносна инструкция, като текстът с тази инструкция може да бъде направен незабележим при преглеждането на кода с помощта на поставен след това коментар. Това ще доведе до вмъкването на съвсем други символи, които всъщност могат да бъдат произволен код. Крайният сорс код си остава семантично коректен, но след компилирането се получава нещо по-различно.

 

При прегледа и рецензирането на подобен сорс код програмистът ще види код с коментари, които не предизвикват каквито и да било подозрение, но компилаторът или интерпретаторът ще обърнат логическия ред на символите и невинният коментар се превръща в вмъкнат в програмата допълнителен код. Бъгът присъства в почти всички компилатори – за програмните езици C, C++ (gcc и clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go и Python; в различните популярни редактори на код, включително VS Code, Emacs, Atom, както и в интерфейсите за преглед на сорс кодовете в хранилищата на GitHub, Gitlab, BitBucket и всички продукти на Atlassian.

Използвайки тази уязвимост хакерът може да включи следния ред:

if access_level != "user{U+202E} {U+2066}// Check if admin{U+2069} {U+2066}" {

В интерфейса на редакторите на код този ред ще изглежда по следния начин:

if access_level != "user" { // Check if admin

Като защита срещу този уязвимост в компилаторите, поддържащи работата с Unicode символи се предвижда извеждане на предупреждение, когато в коментарите има управляващи символи, променящи направлението на текста. Това са символите (U+202A, U+202B, U+202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E и U+200F).


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iOS и Huawei!

Абонирай се
Извести ме за
guest

0 Коментара
Отзиви
Всички коментари

Нови ревюта

Подобни новини