~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 9DA30F22B200A47026A1136C7FC29DEE__1701298200 ✰
Заголовок документа оригинал.:
✰ Trojan Source - Wikipedia ✰
Заголовок документа перевод.:
✰ Источник трояна — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Trojan_Source ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/9d/ee/9da30f22b200a47026a1136c7fc29dee.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/9d/ee/9da30f22b200a47026a1136c7fc29dee__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 20:51:56 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 30 November 2023, at 01:50 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Источник трояна — Википедия Jump to content

Троянский источник

Из Википедии, бесплатной энциклопедии
Троянский источник
Идентификатор(ы) CVE
  • CVE - 2021-42574
  • CVE - 2021-42694
Дата обнаружения 9 сентября 2021 г .; 2 года назад ( 09.09.2021 )
Исследователь Николас Баучер, Росс Андерсон
Затронутое программное обеспечение Юникод , исходный код
Веб-сайт исходник трояна .коды

Trojan Source — это название уязвимости программного обеспечения , которая использует исходного двунаправленные символы Юникода для отображения кода иначе, чем при фактическом выполнении исходного кода. [1] Эксплойт использует способ отображения и кодирования на компьютерах сценариев написания различных направлений чтения. Его обнаружили Николас Баучер и Росс Андерсон в Кембриджском университете в конце 2021 года. [2]

Предыстория [ править ]

Unicode — это стандарт кодирования для представления текста, символов и глифов. Юникод — наиболее распространенная кодировка на компьютерах, используемая более чем на 98% веб-сайтов по состоянию на сентябрь 2023 г. . [3] Он поддерживает множество языков и поэтому должен поддерживать разные методы написания текста. Для этого требуется поддержка как языков с письмом слева направо , таких как английский и русский, так и языков с письмом справа налево , таких как иврит и арабский . Поскольку Unicode стремится обеспечить возможность использования более чем одной системы письма, он должен иметь возможность смешивать сценарии с разными порядками отображения и разрешать конфликтующие порядки. В качестве решения Unicode содержит символы, называемые двунаправленными символами ( Bidi ), которые описывают, как отображается и представляется текст. Этими символами можно злоупотреблять, чтобы изменить интерпретацию текста, не меняя его визуально, поскольку символы часто невидимы. [4]

Соответствующие символы двунаправленного форматирования Юникода.
Сокращение Имя Описание
ЖРД U+202A ВСТРОЕНИЕ СЛЕВА НАПРАВО Попробуйте обрабатывать следующий текст слева направо.
РЛЭ U+202B ВСТРОЕНИЕ ПРАВО НАЛЕВО Попробуйте обрабатывать следующий текст как справа налево.
МРО U + 202D ПЕРЕОПРЕДЕЛЕНИЕ СЛЕВА НАПРАВО Принудительно обрабатывать следующий текст слева направо.
РЛО U + 202E ПЕРЕОПРЕДЕЛЕНИЕ СПРАВА НАЛЕВО Принудительно обрабатывать следующий текст как справа налево.
ЛРИ U + 2066 ИЗОЛЯЦИЯ СЛЕВА НАПРАВО Принудительно обрабатывать следующий текст слева направо, не затрагивая соседний текст.
РЛИ U + 2067 ИЗОЛЯЦИЯ СПРАВА НАЛЕВО Принудительно обрабатывать следующий текст как справа налево, не затрагивая соседний текст.
ФСИ U+2068 ПЕРВЫЙ СИЛЬНЫЙ ИЗОЛЯТ Принудительно обрабатывать следующий текст в направлении, указанном следующим символом.
PDF U+202C НАПРАВЛЕННОЕ ФОРМАТИРОВАНИЕ POP Завершите работу ближайшего LRE, RLE, LRO или RLO.
ПДИ U+2069 POP НАПРАВЛЕННЫЙ РАЗЪЕДИНИТЕЛЬ Завершите работу ближайшего LRI или RLI.

Методология [ править ]

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

Уязвимый Python код
Исходный код с подсказками Исходный код отображается визуально Исходный код интерпретирован
def   sum  (  num1  ,   num2  ): 
   '''Сложите num1 и num2, и [RLI] вернется;   ''' 
   вернуть   число1   +   число2 
def   sum  (  num1  ,   num2  ): 
   '''Сложите num1 и num2 и верните результат;   ''' 
   вернуть   число1   +   число2 
def   sum  (  num1  ,   num2  ): 
   '''Сложите num1 и num2 и '''   ; 
    вернуть 
   вернуть   число1   +   число2 

В приведенном выше примере знак RLI (выделение справа налево) заставляет следующий текст интерпретироваться в обратном порядке: сначала идет тройная кавычка (завершение строки), за которой следует точка с запятой (начало новой строки). , и, наконец, с преждевременным возвратом (возвращением Нет и игнорируется любой код под ним). Новая строка завершает метку RLI, предотвращая ее попадание в приведенный ниже код. Из-за символа двунаправленного текста некоторые редакторы исходного кода и IDE переупорядочивают код для отображения без какой-либо визуальной индикации того, что код был перестроен, поэтому человек, проверяющий код, обычно их не обнаруживает. Однако когда код вставляется в компилятор, компилятор может игнорировать символ двунаправленного текста и обрабатывать символы в другом порядке, чем отображается визуально. Когда компилятор завершит работу, он потенциально может выполнить код, который визуально кажется неисполняемым. [5] Метки форматирования можно комбинировать несколько раз для создания сложных атак. [6]

Воздействие и смягчение последствий [ править ]

Языки программирования, которые поддерживают строки Unicode и следуют алгоритму Bidi Unicode, уязвимы для эксплойта. Сюда входят такие языки, как Java , Go , C , C++ , C# , Python и JavaScript . [7]

Хотя атака не является строго ошибкой, многие компиляторы, интерпретаторы и веб-сайты добавили предупреждения или меры по смягчению последствий эксплойта. И GNU GCC , и LLVM получили запросы на устранение этой уязвимости. [8] Марек Полачек отправил в GCC патч вскоре после публикации эксплойта, который реализовал предупреждение о потенциально небезопасных направленных символах; эта функциональность была объединена с GCC 12 в рамках -Wbidi-chars флаг. [9] [10] LLVM также объединила подобные патчи. Rust исправил эксплойт в версии 1.56.1, отклонив код, содержащий символы по умолчанию. До исправления разработчики Rust не обнаружили уязвимых пакетов. [11]

Red Hat опубликовала на своем веб-сайте предупреждение, в котором эксплойт был назван «умеренным». [12] GitHub опубликовал предупреждение в своем блоге, а также обновил веб-сайт, чтобы отображать диалоговое окно при обнаружении символов Bidi в коде репозитория. [13]

Ссылки [ править ]

  1. ^ « Ошибка «Источник трояна» угрожает безопасности всего кода – Кребс о безопасности» . Ноябрь 2021 г. Архивировано из оригинала 14 января 2022 г. Проверено 17 января 2022 г.
  2. ^ «VU#999008 — Компиляторы допускают управляющие символы Юникода и гомоглифические символы» . www.kb.cert.org . Архивировано из оригинала 21 января 2022 г. Проверено 17 января 2022 г.
  3. ^ «Обзор использования кодировок символов с разбивкой по рейтингу» . w3techs.com . Архивировано из оригинала 21 января 2022 г. Проверено 17 января 2022 г.
  4. ^ «UAX #9: Двунаправленный алгоритм Unicode» . www.unicode.org . Архивировано из оригинала 02 мая 2019 г. Проверено 17 января 2022 г.
  5. ^ Эдж, Джейк (3 ноября 2021 г.). «Источник трояна: трюки (без угощений) с Unicode [LWN.net]» . lwn.net . Проверено 12 марта 2022 г.
  6. ^ Стокли, Марк (3 ноября 2021 г.). «Источник трояна: сокрытие вредоносного кода на виду» . Лаборатория Малваребайтс . Проверено 12 марта 2022 г.
  7. ^ Тунг, Лиам. «Языки программирования: этот хитрый трюк может позволить злоумышленникам скрыть «невидимые» уязвимости в коде» . ЗДНет . Архивировано из оригинала 21 декабря 2021 г. Проверено 21 января 2022 г.
  8. ^ «Ожидаются исправления GCC и LLVM для отражения атак троянских источников» . www.phoronix.com . Архивировано из оригинала 01 декабря 2021 г. Проверено 17 января 2022 г.
  9. ^ Малькольм, Дэвид (12 января 2022 г.). «Предотвратите атаки троянских источников с помощью GCC 12» . Разработчик Red Hat . Архивировано из оригинала 17 января 2022 г. Проверено 17 января 2022 г.
  10. ^ «Параметры предупреждения (с использованием коллекции компиляторов GNU (GCC))» . gcc.gnu.org . Архивировано из оригинала 5 декабря 2018 г. Проверено 17 января 2022 г.
  11. ^ «Рекомендации по безопасности для RustC (CVE-2021-42574) | Блог Rust» . blog.rust-lang.org . Архивировано из оригинала 30 ноября 2021 г. Проверено 21 января 2022 г.
  12. ^ «Атаки на источник трояна RHSB-2021-007 (CVE-2021-42574, CVE-2021-42694)» . Портал для клиентов Red Hat . Архивировано из оригинала 17 января 2022 г. Проверено 21 января 2022 г.
  13. ^ «Предупреждение о двунаправленном тексте в Юникоде | Журнал изменений GitHub» . Блог GitHub . 31 октября 2021 г. Архивировано из оригинала 15 января 2022 г. Проверено 21 января 2022 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 9DA30F22B200A47026A1136C7FC29DEE__1701298200
URL1:https://en.wikipedia.org/wiki/Trojan_Source
Заголовок, (Title) документа по адресу, URL1:
Trojan Source - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)