Ssylka

Новый сценарий JavaScript-инъекций: за пределами React и XSS

Доминирование JavaScript в вебе создало новые поля сражений в области кибербезопасности. Классическое понимание межсайтового скриптинга (XSS) устарело, поскольку злоумышленники разработали более изощренные методы атак. Современные фреймворки, включая React, Vue и Angular, не являются неуязвимыми для новых угроз, таких как инъекции в промпты искусственного интеллекта (AI Prompt Injection), компрометация цепочек поставок, загрязнение прототипа (Prototype Pollution) и DOM-based XSS, которые обходят традиционные серверные проверки в одностраничных приложениях.
Новый сценарий JavaScript-инъекций: за пределами React и XSS
Изображение носит иллюстративный характер

Масштаб и сложность современных угроз были продемонстрированы в июне 2024 года в ходе атаки на цепочку поставок . Этот инцидент, названный «крупнейшей JavaScript-инъекцией года», затронул более 100 000 веб-сайтов. После того как доверенная библиотека была приобретена китайской компанией, новые владельцы использовали её для внедрения вредоносного кода на все использующие её ресурсы. Среди жертв оказались такие компании, как Hulu, Mercedes-Benz и WarnerBros.

Статистика подтверждает ускоряющийся рост уязвимостей. К середине 2024 года было зарегистрировано 22 254 уязвимости (CVE), что на 30% больше, чем в 2023 году, и на 56% больше, чем в 2022 году. Учитывая, что 98% всех сайтов используют JavaScript на стороне клиента, а для 67,9% разработчиков он является основным языком программирования, поверхность атаки продолжает экспоненциально расширяться.

Даже современные фреймворки с встроенной защитой, такие как React, содержат функции, которые при неправильном использовании создают уязвимости. Яркий пример — функция dangerouslySetInnerHTML. Она намеренно обходит встроенные механизмы очистки React для прямой вставки HTML в DOM. Эксплуатация этой уязвимости может привести к краже аутентификационных cookie и токенов сессий, выполнению действий от имени пользователя, перенаправлению на вредоносные сайты и перехвату конфиденциальных данных, таких как пароли и номера кредитных карт.

Для предотвращения подобных атак рекомендуется использовать специализированные библиотеки для очистки данных, например DOMPurify. Этот инструмент анализирует HTML-содержимое, удаляет весь потенциально вредоносный код, включая исполняемые скрипты, и сохраняет только безопасные теги форматирования, такие как <b>, <i> и <p>. Такой подход обеспечивает безопасное отображение пользовательского контента.

Финансовый сектор является основной целью для адаптивных вредоносных программ. В марте 2023 года отчёт IBM зафиксировал кампанию, нацеленную на более чем 40 банков в Северной и Южной Америке, Европе и Японии. В результате было скомпрометировано свыше 50 000 пользовательских сессий. Вредоносное ПО использовало сложные JavaScript-инъекции, способные распознавать структуру страниц банковских сайтов и динамически внедрять скрипты для кражи учётных данных и одноразовых паролей.

Эти программы демонстрировали продвинутые возможности: адаптивное поведение с постоянной связью с командными серверами (C2) для корректировки тактики, сложную обфускацию для сокрытия вредоносного кода и методы уклонения, которые удаляли следы своего присутствия и избегали выполнения при обнаружении защитного ПО.

Ключевым принципом защиты является «Хранить в сыром виде, кодировать на выводе». Данные должны храниться в базе данных в исходной, некодированной форме. Кодирование применяется только в момент отображения и должно соответствовать контексту: HTML-сущности для контента HTML, экранирование JavaScript для скриптов, URL-кодирование для ссылок и CSS-экранирование для таблиц стилей. Это предотвращает ошибки двойного кодирования и обеспечивает целостность данных.

Безопасность — это не контрольный список, а непрерывный процесс построения многоуровневой защиты. Основные правила этого подхода: никогда не доверять клиентскому коду, всегда проводить валидацию на стороне сервера и кодировать данные в зависимости от контекста их использования.

Новые технологии также вводят свои риски. WebAssembly (Wasm), несмотря на производительность и изолированную среду выполнения (sandbox), не является панацеей. Код, скомпилированный из небезопасных по управлению памятью языков, таких как C/C++, может переносить в Wasm уязвимости, например, переполнение буфера. Бинарный формат Wasm сложнее для аудита, чем читаемый JavaScript, и создаёт новые поверхности для атак, включая сайд-ченнел атаки.

Интеграция искусственного интеллекта и больших языковых моделей (LLM) в веб-приложения породила новый класс уязвимостей — атаки с использованием инъекций в промпты. В этом сценарии злоумышленник создаёт специальный запрос (промпт), который заставляет модель ИИ генерировать и выполнять вредоносный JavaScript в браузере пользователя, открывая ещё один вектор для атак.

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


Новое на сайте

16932Способна ли филантропия блогеров решить мировой водный кризис? 16931Взлом через промпт: как AI-редактор Cursor превращали в оружие 16930Мог ли древний кризис заставить людей хоронить мертвых в печах с собаками? 16929Какие наушники Bose выбрать на распродаже: для полной изоляции или контроля над... 16928Может ли искусство напрямую очищать экосистемы от вредителей? 16927Вирусное наследие в геноме человека оказалось ключевым регулятором генов 16926Рекордные оазисы жизни обнаружены в бездне океанских траншей 16925Крах прогнозов UnitedHealth на фоне растущих издержек и трагедий 16924Формула ясного ума: доказанный способ замедлить когнитивное старение 16923Действительно ли ощущения тепла и прохлады идут в мозг разными путями? 16922Гражданские права как инструмент холодной войны 16921Премиальное белье Duluth Trading Co. со скидкой более 50% 16920Сделает ли запрет на пищевые красители школьные обеды по-настояшему здоровыми? 16919Код от Claude: ИИ-сгенерированный вирус похищал криптовалюту через npm 16918Как спутник NISAR будет предсказывать катастрофы с сантиметровой точностью?