Trojan Source, атака, която позволява добавяне на промени в кода, невидими за разработчика

Преди няколко дни Изследователи от Кеймбриджския университет съобщиха публикуването на техника за фино заместване на кодове злонамерен код в изходния код на приложението.

Методът на атака подготви това Той вече е посочен под CVE-2021-42574 Той идва под името Trojan Source и се основава на формирането на текст, който изглежда различно за компилатора/интерпретатора и лицето, което преглежда кода.

Относно Trojan Source

Методът разчита на прилагането на специални Unicode символи в кодови коментари, които променят реда на показване на двупосочния текст. С помощта на тези контролни знаци, някои части от текста могат да се показват отляво надясно, а други от дясно на ляво.

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

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

Открихме начини за манипулиране на кодирането на файлове с изходен код, така че човешките зрители и компилаторите да виждат различна логика. Един особено пагубен метод използва символи за отмяна на насочеността на Unicode, за да покаже кода като анаграма на неговата истинска логика. Проверихме, че тази атака работи срещу C, C ++, C #, JavaScript, Java, Rust, Go и Python и подозираме, че ще работи срещу повечето други съвременни езици.

Докато преглеждате кода, разработчикът ще бъде изправен пред визуалния ред на героите и ще види подозрителен коментар в редактор текст, уеб интерфейс или IDE, но компилаторът и интерпретаторът ще използват логическия ред на знаците и ще обработват злонамерения код както е, независимо от двупосочния текст в коментара. Засегнати са няколко популярни редактора на код (VS Code, Emacs, Atom), както и интерфейси за преглед на код в хранилища (GitHub, Gitlab, BitBucket и всички продукти на Atlassian).

Има няколко начина за използване на метода за изпълнение на злонамерени действия: добавяне на скрит израз „return“, което води до преждевременно прекратяване на изпълнението на функцията; заключението в коментара на изрази, които обикновено се считат за валидни конструкции (например за деактивиране на важни проверки); Присвояване на други стойности на низове, водещи до неуспехи при валидиране на низове.

Освен това, беше предложена друга опция за атака (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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.