Метод атаки «троянский источник» может скрыть ошибки в открытом коде

26
Вымогательство Ransomware не прекращается после уплаты выкупа

Академические исследователи опубликовали подробную информацию о новом методе атаки, который они называют «троянский источник», который позволяет внедрять уязвимости в исходный код программного проекта таким образом, чтобы рецензенты не могли их обнаружить.

Trojan Source использует простой прием, который не требует модификации компилятора для создания уязвимых двоичных файлов.

Этот метод работает с некоторыми из наиболее широко используемых сегодня языков программирования, и злоумышленники могут использовать его для атак на цепочку поставок.

Нарушение стандартов кодирования текста

Исследователи из Кембриджского университета, Великобритания, раскрыли и продемонстрировали класс атак «Троянский источник», которые могут поставить под угрозу собственное программное обеспечение и цепочки поставок.

Приведенные ими примеры относятся к проектам, написанным на C, C ++, C #, JavaScript, Java, Rust, Go и Python, где злоумышленник может использовать кодировку файлов исходного кода для внедрения уязвимостей.

«Уловка состоит в том, чтобы использовать управляющие символы Unicode для изменения порядка токенов в исходном коде на уровне кодирования», — говорит Николас Баучер , один из исследователей, обнаруживших Trojan Source.

«Мы обнаружили способы манипулирования кодировкой файлов исходного кода, чтобы люди-зрители и компиляторы видели разную логику. Один особенно пагубный метод использует символы переопределения направленности Unicode для отображения кода как анаграммы его истинной логики », — объясняет Росс Андерсон , другой исследователь, тестировавший метод атаки троянского источника.

Используя управляющие символы, встроенные в комментарии и строки, злоумышленник может переупорядочить исходный код, чтобы изменить его логику таким образом, чтобы создать уязвимость, которую можно использовать.

Двунаправленная и гомоглифическая атака

Исследователи показали, что одним из способов достижения этого является использование элементов управления Unicode для двунаправленного текста (например, изоляция LRI слева направо и изоляция RLI справа налево), чтобы определять направление, в котором отображается контент. Этот метод теперь отслеживается как CVE-2021-42574.

Двунаправленные (Bidi) элементы управления LRI и RLI являются невидимыми символами, и они не единственные. Вводя эти инструкции, компилятор может скомпилировать код, полностью отличный от того, что видит человек.

На изображении ниже с использованием элементов управления RLI / RLI внутри строки вторая строка компилируется, в то время как человеческий глаз читает ее как комментарий, который компилятор проигнорирует.

Внедряя символы переопределения Unicode Bidi в комментарии и строки, злоумышленник может «создать синтаксически корректный исходный код на большинстве современных языков, для которого порядок отображения символов представляет собой логику, отличающуюся от реальной логики».

Другой способ — это атака гомоглифа ( CVE-2021-42694 ), при которой два разных символа имеют одинаковое визуальное представление, например число «ноль» и букву «O» или строчную «L» и прописную «i». ”

При атаке гомоглифного троянского источника, как показано ниже, человеческий глаз будет видеть обе функции идентичными, в то время как компилятор различает латинскую «H» и кириллическую «H» и обрабатывает код как имеющий две разные функции, поэтому результат не будет быть таким же.

В  документе  [PDF], подробно описывающем новый метод атаки троянского источника, исследователи подчеркивают, что двунаправленные (Bidi) переопределяющие символы сохраняются при копировании / вставке в большинстве браузеров, редакторов и операционных систем.

Исследователи протестировали атаку Trojan Source против нескольких редакторов кода и веб-репозиториев, которые обычно используются в программировании, и обнаружили, что их метод работал со многими из них.

Следуя принципу использования переопределений Bidi для создания кода, который действителен при изменении порядка, исследователи обнаружили по крайней мере три метода, которые позволяют использовать исходный код:

  • Ранние возвраты — скрыть в комментарии подлинный оператор return, чтобы он мог вызвать возврат функции раньше, чем кажется.
  • Комментирование Out — обмануть человеческий обзор, поместив важный код, такой как условное, в комментарий, чтобы компилятор или интерпретатор проигнорировали его.
  • Растянутые строки — измените порядок кода в обратном порядке, чтобы он выглядел вне строкового литерала.

Один из способов защиты от Trojan Source — отказаться от использования управляющих символов для направления текста в спецификациях языков и в компиляторах, реализующих эти языки.

«В большинстве случаев этого простого решения вполне может быть достаточно. Если приложение желает напечатать текст, требующий переопределения Bidi, разработчики могут генерировать эти символы с помощью управляющих последовательностей, а не встраивать потенциально опасные символы в исходный код»

Согласованное раскрытие

25 июля исследователи проинформировали нескольких специалистов по сопровождению о продуктах, на которые было установлено влияние метода атаки троянского источника, и установили 99-дневный период запрещения раскрытия информации.

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

После своего отчета исследователи получили в среднем 2246 долларов в виде вознаграждений за ошибки от пяти получателей, хотя у 11 из них была программа вознаграждений за ошибки.

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

Поскольку многие специалисты по сопровождению еще не внедрили патч, два исследователя рекомендуют правительствам и компаниям идентифицировать своих поставщиков и заставлять их принимать необходимые меры защиты.

«Тот факт, что уязвимость Trojan Source затрагивает почти все компьютерные языки, дает редкую возможность для общесистемного и экологически обоснованного кросс-платформенного и кросс-платформенного сравнения ответов»

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

В репозитории на GitHub они предоставляют сценарии подтверждения концепции (PoC), которые демонстрируют, насколько серьезной угрозой может быть атака с использованием троянского источника.

Последнее обновление 3 месяца назад — GameZoom

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии