Security Week 44: Trojan Source, или как скрыть вредоносный код в исходниках
Сегодня, 1 ноября, исследователи из Кембриджского университета в Великобритании опубликовали работу, в которой описали уязвимость в большинстве современных компиляторов. Правильнее было бы назвать разработку авторов атакой: ее суть заключается в том, что компилятор не обрабатывает специальные Unicode-идентификаторы, сообщающие, как именно ориентировать текст — для письма слева направо или справа налево. При отображении исходного кода эти идентификаторы обрабатываются. Вот показательный пример:
Здесь перед закрытием комментария вставляется символ RLI (U+2067), который требует ориентировать последующие символы с ориентацией справа налево. В результате для того, кто будет просматривать исходный код, команда return окажется внутри комментария, хотя на самом деле она находится за его пределами и будет выполнена. То есть появляется возможность «протащить» потенциально уязвимый или вовсе вредоносный код, который не будет замечен при ручной проверке.
Гипотетическая атака эксплуатирует алгоритм Unicode Bidirectional или bidi. Он призван разрешить проблемы с текстами с разным направлением письма в одной строке, для чего и вводятся те самые спецсимволы-команды.
Креативное их применение дает много способов добавления команд, которые будут выглядеть как часть комментария или строки, выводимой на экран. В общем, как что-то безобидное. Такие атаки применяются далеко не в первый раз: спецсимволы или написание right-to-left ранее часто использовались в фишинговых атаках для создания «похожих на настоящие» доменных имен и тому подобного.
Даже в случае кода данная «уязвимость» выглядит как нечто относительно безобидное. Но она была расценена как достаточно опасная, получила свой идентификатор CVE (CVE-2021-42574), а сама работа была опубликована после трехмесячной паузы на подготовку патчей. Пример решения проблемы можно посмотреть в бюллетене разработчиков языка программирования Rust: код со спецсимволами просто не будет компилироваться.
Что еще произошло
В Евросоюзе расследуют потенциальную утечку приватного ключа, которым подписываются цифровые сертификаты о получении прививки от коронавируса. С помощью этого ключа были сгенерированы поддельные сертификаты, которые успешно проходили проверку. Что именно произошло — пока не ясно, официальные представители структур Евросоюза утверждают, что угрозы целостности системе сертификатов нет.
Компания Adobe выпустила внеочередной апдейт: он закрывает 92 уязвимости, из них 66 критических. Затронуты 13 продуктов, включая Photoshop, Premiere Pro и Lightroom Classic.
Исследователь из Израиля продемонстрировал метод масштабного сбора данных о точках доступа Wi-Fi с последующим взломом паролей. Всего он собрал данные с 5000 точек доступа, подобрать пароль удалось в 70% случаев. Рекомендация автора работы — ставить на Wi-Fi пароль подлиннее: как минимум это снижает шансы оказаться жертвой такого коллективного взлома.
Разработчики браузера Firefox заблокировали вредоносные расширения, которые препятствовали загрузке обновлений. Расширения использовали полмиллиона пользователей. Были также внесены обновления в компонент Proxy API, которым пользовались авторы вредоносных аддонов.