Обфускатор JavaScript - деобфускатор JavaScript - вредоносное ПО JavaScript

Почему злоумышленники используют инструменты обфускации JavaScript (и как их обнаружить)

Что делает обфускатор JavaScript?

Обфускатор JavaScript предназначен для преобразования чистого, удобочитаемого кода в нечто трудночитаемое, что затрудняет его понимание или обратную разработку. Эти инструменты переименовывают переменные и функции, удаляют пробелы, выравнивают структуру кода и применяют такие методы, как разбиение строк, шестнадцатеричное кодирование или выравнивание потока управления. Хотя целью часто является защита интеллектуальной собственности или уменьшение размера файла, получаемая сложность также обеспечивает идеальное прикрытие для вредоносного ПО на JavaScript. Именно поэтому многие специалисты по безопасности обращаются к инструментам деобфускации JavaScript для анализа преобразованного кода и выявления скрытого поведения.

Например, что-то столь же простое:

function greet(name) { return `Hello, ${name}`; } Might become: function _0x1a2b(_0x3c4d){return'Hello, '+_0x3c4d;} 

Для разработчиков, реализующих клиентскую логику (например, браузерное SaaS-решение), обфускатор JavaScript является частью цепочки инструментов. Но эта же трансформация делает его идеальным прикрытием для вредоносного ПО на JavaScript.

Как злоумышленники используют обфускацию, чтобы скрыть вредоносное ПО JavaScript

Злоумышленники используют инструменты обфускации JavaScript для маскировки вредоносное ПО, внедренное в библиотеки с открытым исходным кодом, пакеты нпм, или непосредственно в скрипты браузера. Распространенная практика — скрывать полезные данные внутри обфусцированных функций, которые срабатывают во время выполнения при определённых условиях.

Рассмотрим скомпрометированный пакет npm. На первый взгляд, всё выглядит нормально. Но при более внимательном рассмотрении обнаруживается запутанный JavaScript-код, ссылающийся на закодированные строки, удалённые URL-адреса или динамические eval () звонки:

(function(_0xa1b2c){var _0xd3e4=['/(function(_0xa1b2c){var _0xd3e4=['\x2fapi/(function(_0xa1b2c){var _0xd3e4=['\x2fapi\x2fsteal','...']; ...eval(atob(_0xd3e4[0]));})(this); 

Это не сжатие. Это прикрытие. Здесь прячется вредоносное ПО JavaScript, ожидающее возможности похитить токены, внедрить фишинговые формы или повысить разрешения внутри приложений.

Реальные риски в области безопасности приложений и цепочки поставок

Современное программное обеспечение pipelines построены на стороннем коде. Вредоносное ПО JavaScript, внедренное через обфусцированные скрипты, — это не просто уязвимость безопасности, это нарушение цепочки поставок. Попав в общую библиотеку, обфусцированное вредоносное ПО распространяется:

  • В CI-сборки через пакет.json
  • В frontend-пакеты через Webpack/Rollup
  • В производство через CDN или инъекции скриптов

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

Риск не теоретический. Он уже присутствует в вашем коде, если ваши зависимости не сканируются.

Обнаружение обфусцированного кода с помощью инструментов деобфускации JavaScript

Для обнаружения скрытых угроз команды используют инструменты деобфускации JavaScript. Они анализируют обфусцированные шаблоны кода, декодируют строки и выявляют тревожные сигналы, такие как динамические eval (), запутанные циклы и ненужная сложность.

Полезные деобфускаторы не просто переформатируют код; они отмечают:

  • Использование Функция, Eval и setTimeout с закодированными полезными нагрузками
  • Длинные последовательности строк в кодировке Base64 или шестнадцатеричных кодах
  • Сглаживание потока управления или внедрение мертвого кода

Автоматизированные инструменты, такие как статические анализаторы или парсеры AST, помогают обнаружить эти закономерности. Они являются первой линией защиты при проверке зависимостей или проверке обновлений пакетов.

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

Интеграция обнаружения в CI/CD Pipelines

Обнаружение не является задачей, выполняемой после развертывания. Сканирование с целью обфускации должно быть частью CI/CD pipeline. Используйте Действия GitHub, GitLab CI или Jenkins для запуска сканирования при каждом нажатии или слиянии.

типичный pipeline течь:

jobs: security-check: steps: - uses: actions/checkout@v2 - name: Scan for Obfuscation run: node scripts/deobfuscate-scan.js

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

Не ждите сюрпризов во время выполнения. Сделайте отклонение ошибкой на этапе сборки.

Скрытая цена обфускации: борьба с вредоносным ПО JavaScript с помощью деобфускаторов

Инструменты обфускации JavaScript имеют законное применение. Но злоумышленники используют их для сокрытия вредоносного кода JavaScript и злоупотребления доверием к экосистеме с открытым исходным кодом. Реальный риск в AppSec заключается не только в том, что вы пишете, но и в том, что вы импортируете. Встраивая сканирование деобфускатора JavaScript и статический анализ в CI/CD pipelines, команды разработчиков могут обнаруживать угрозы на ранних этапах. Относитесь к обфусцированному коду в зависимостях с подозрением, особенно если это неожиданно.

Такие инструменты, как Ксигени Они созданы, чтобы помочь командам DevSecOps лучше понимать риски обфускации и цепочки поставок в экосистемах JavaScript. Используйте их для улучшения pipeline и обнаружить, что скрывается в вашем коде, прежде чем он попадет в эксплуатацию.

Ксигени Выходит за рамки простого сканирования, анализируя шаблоны обфускации JavaScript, выявляя потенциально вредоносное ПО JavaScript и отслеживая рискованное поведение в пакетах по всей цепочке поставок программного обеспечения. Он легко интегрируется в CI/CD pipelines, что позволяет осуществлять автоматизированное управление качеством и безопасностью кода.

Будьте параноиком. Просматривайте всё. И помните: если что-то кажется бессмысленным, вероятно, стоит пересмотреть.

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

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni