Несколько дней назад Выпущены исследователи Кембриджского университета публикация метод тонкой подстановки кодов вредоносный в исходном коде приложения.
Метод атаки подготовил, что Он уже указан в 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.
В конце концов Если вам интересно узнать об этом больше, вы можете проконсультироваться подробности по следующей ссылке.