Trojan Source, атака, позволяющая вносить изменения в код, невидимые для разработчика.

Несколько дней назад Выпущены исследователи Кембриджского университета публикация метод тонкой подстановки кодов вредоносный в исходном коде приложения.

Метод атаки подготовил, что Он уже указан в CVE-2021-42574. Он известен под названием «Троянский источник» и основан на формировании текста, который отличается для компилятора / интерпретатора и человека, просматривающего код.

О троянском источнике

Метод полагается на применение специальных символов 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)