Так, это было слишком легко. Давайте чуть-чуть посложнее — новые скриншоты. Отвечайте в опросе ниже.
❤7👀5👍3
🏆10🤔7❤6
🥱26🔥8😁5❤3
🎣 По README встречают, по малвари провожают: как раскусить фейковый репозиторий за 10 секунд
Злоумышленники вовсю паразитируют на теме блокировок и массовом поиске способов их обхода. Особенно достается популярному локальному tg-ws-proxy и аналогам. В некоторых поисковиках, например Яндексе, оригинальные ссылки временно удаляются и на самом верху выдачи образуется вакуум. Его моментально заполняют свежие вредоносные клоны, которые не успели попасть в бан-листы.
💡 Отдельная ловушка — сторонние зеркала GitHub. Пользователи доверяют им по инерции, но под капотом скачиваемого архива вполне может оказаться вредоносное ПО, которое в свою очередь умеет подчистую пылесосить не только сессии ваших браузеров, но и собирать важные файлы по конкретным расширениям.
Внешне подделка выглядит органично: мошенники подчистую копируют оформление README.md, сохраняют оригинальную верстку и даже реквизиты для донатов настоящему автору. Расчет идет исключительно на невнимательность и машинальные действия.
Чек-лист: 4 главных маркера фейка, которые выдадут его целиком и полностью
1️⃣ Возраст аккаунта: профиль «разработчика» обычно зарегистрирован пару недель назад.
2️⃣ История коммитов: вместо нормальной истории изменений весь код заливается за один раз через веб-интерфейс с унылой заглушкой Add files via upload.
3️⃣ Мертвая социальная активность: у клонов на счетчиках звезд и форков горят нули, а вкладка Issues (проблемы/обсуждения) часто отключена.
4️⃣ Инструкции: в README прямым текстом просят отключить антивирус или добавить папку в исключения Windows Defender, списывая на «ложное срабатывание из-за функционала». Никогда так не делайте, если не провели аудит кода лично.
Подробный разбор этой схемы и полный чек-лист безопасности читайте в нашей новой статье🫡
Злоумышленники вовсю паразитируют на теме блокировок и массовом поиске способов их обхода. Особенно достается популярному локальному tg-ws-proxy и аналогам. В некоторых поисковиках, например Яндексе, оригинальные ссылки временно удаляются и на самом верху выдачи образуется вакуум. Его моментально заполняют свежие вредоносные клоны, которые не успели попасть в бан-листы.
Внешне подделка выглядит органично: мошенники подчистую копируют оформление README.md, сохраняют оригинальную верстку и даже реквизиты для донатов настоящему автору. Расчет идет исключительно на невнимательность и машинальные действия.
Чек-лист: 4 главных маркера фейка, которые выдадут его целиком и полностью
Подробный разбор этой схемы и полный чек-лист безопасности читайте в нашей новой статье
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤13👍12
wp2shell — разбираем от и до.
Это цепочка уязвимостей, которая состоит из таких элементов:
📍 CVE-2026-63030 — уязвимость путаницы маршрутизации конечной точки пакетного REST API. CWE-436.
📍 CVE-2026-60137 — уязвимость внедрения SQL-кода (SQL-инъекция). CWE-89.
wp2shell позволяет неавторизованному злоумышленнику выполнить произвольный код (RCE) в СMS Wordpress. Затронутые версии: 6.8.0–6.8.5; 6.9.0–6.9.4; 7.0.0– 7.0.1.
🫡 Об уязвимости:
Уязвимость находится в функции serve_batch_request_v1, которая обрабатывает пакетные запросы к /wp-json/batch/v1.
Функция создает два массива для обработки входящих подзапросов: $requests[] (сами запросы) и $matches[] (найденные для них обработчики).
Если путь одного из подзапросов некорректный (например, http://), функция wp_parse_url() возвращает false. В этом случае в массив $validation[] записывается ошибка (WP_Error), но запись в массив $matches[] не происходит (через continue).
Ниже показали часть уязвимого кода, полный код находится wp-includes/rest-api/class-wp-rest-server.php
Из-за continue массивы $requests и $matches рассинхронизируются по индексам. Это позволяет одному подзапросу получить обработчик, предназначенный для другого.
Сдвиг индексов → Некорректный путь вызывает continue → Массивы $requests и $matches рассинхронизируются → Запросы получают чужие обработчики → Вложенный batch → Запрос /wp/v2/posts выполняется как batch → Внутри снова происходит сдвиг индексов → Запрос к /categories?author_exclude=SLEEP(2) получает обработчик /posts (скриншот) -> SQLi.
Уязвимость SQLi
author_exclude регистрируется как параметр типа array в get_collection_params().
В get_items() он мапится в author_not_in без проверки типа.
Из-за путаницы маршрутов параметр передается как строка.
WP_Query не санитизирует строковые значения. Строка попадает в SQL.
🫡 Возможные конечные точки:
Запрос:
– POST /wordpress/batch/v1 + тело запроса
– POST /?rest_route=/batch/v1 + тело запроса
– GET /?_method=POST&rest_route=/batch/v1&validation=normal + тело запроса
SQLi - "path": "/wp/v2/<API> author_exclude=<SQLi>
Пример одного из возможных запросов — на скриншоте.
🫡 Как защищаться:
1. Обновиться до версии 7.0.2.
2. Использовать WAF/IDS с настроенными правилами от SQLi.
3. Проверить систему на предмет подозрительных php-файлов.
4. Провести аудит запросов, где в качестве конечной точки или значения параметра выступал /batch/v1.
5. Временно ограничить доступ к /batch/v1 из внешней сети.
🫡 Ловите лабораторную — docker-compose.yml с уязвимым wordpress прикреплен к посту.
Запуск
Это цепочка уязвимостей, которая состоит из таких элементов:
wp2shell позволяет неавторизованному злоумышленнику выполнить произвольный код (RCE) в СMS Wordpress. Затронутые версии: 6.8.0–6.8.5; 6.9.0–6.9.4; 7.0.0– 7.0.1.
Уязвимость находится в функции serve_batch_request_v1, которая обрабатывает пакетные запросы к /wp-json/batch/v1.
Функция создает два массива для обработки входящих подзапросов: $requests[] (сами запросы) и $matches[] (найденные для них обработчики).
Если путь одного из подзапросов некорректный (например, http://), функция wp_parse_url() возвращает false. В этом случае в массив $validation[] записывается ошибка (WP_Error), но запись в массив $matches[] не происходит (через continue).
Ниже показали часть уязвимого кода, полный код находится wp-includes/rest-api/class-wp-rest-server.php
foreach ( $batch_request['requests'] as $args ) {
$parsed_url = wp_parse_url( $args['path'] );
if ( false === $parsed_url ) {
$requests[] = new WP_Error( 'parse_path_failed', __( 'Could not parse the path.' ), array( 'status' => 400 ) ); // запись ошибки для http://
continue;
}
$single_request = new WP_REST_Request( $args['method'] ?? 'POST', $parsed_url['path'] );
....
$matches = array();
$validation = array();
$has_error = false;
foreach ( $requests as $single_request ) {
if ( is_wp_error( $single_request ) ) {
$has_error = true;
$validation[] = $single_request;
continue; // пропуск записи в $matches[]
}Из-за continue массивы $requests и $matches рассинхронизируются по индексам. Это позволяет одному подзапросу получить обработчик, предназначенный для другого.
Сдвиг индексов → Некорректный путь вызывает continue → Массивы $requests и $matches рассинхронизируются → Запросы получают чужие обработчики → Вложенный batch → Запрос /wp/v2/posts выполняется как batch → Внутри снова происходит сдвиг индексов → Запрос к /categories?author_exclude=SLEEP(2) получает обработчик /posts (скриншот) -> SQLi.
Уязвимость SQLi
author_exclude регистрируется как параметр типа array в get_collection_params().
В get_items() он мапится в author_not_in без проверки типа.
Из-за путаницы маршрутов параметр передается как строка.
WP_Query не санитизирует строковые значения. Строка попадает в SQL.
if (is_array($query_vars['author__not_in'])) {
$query_vars['author__not_in'] = array_map('absint', ...); // sanitize
}
$author__not_in = implode(',', (array) $query_vars['author__not_in']);
$where .= " AND post_author NOT IN ($author__not_in) "Запрос:
– POST /wordpress/batch/v1 + тело запроса
– POST /?rest_route=/batch/v1 + тело запроса
– GET /?_method=POST&rest_route=/batch/v1&validation=normal + тело запроса
SQLi - "path": "/wp/v2/<API> author_exclude=<SQLi>
Пример одного из возможных запросов — на скриншоте.
1. Обновиться до версии 7.0.2.
2. Использовать WAF/IDS с настроенными правилами от SQLi.
3. Проверить систему на предмет подозрительных php-файлов.
4. Провести аудит запросов, где в качестве конечной точки или значения параметра выступал /batch/v1.
5. Временно ограничить доступ к /batch/v1 из внешней сети.
Запуск
docker-compose up.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤7🔥1
Вредоносный файл не обязательно выглядит как странный архив с названием virus_final.exe или фишинговое письмо, пришедшее вам на почту. Бывает, что это обычная библиотека, SDK, плагин или консольная утилита, которую разработчик устанавливает привычной командой npm install или pip install.
Например, что подозрительного в таком package.json?
"scripts": {
"fmt": "prettier --write **/*.js",
"fmt:check": "prettier --check **/*.js",
"postinstall": "node ./install.js",
"preinstall": "node setup_bun.js"
},
"artifactDownloadUrl": "https://github.com/PostHog/posthog/releases/download/posthog-cli-v0.5.14",
"bin": {
"posthog-cli": "run-posthog-cli.js"
}
Неискушенный читатель подумает, что это обычный cli-проект, но именно такой preinstall в одном из пакетов начнёт масштабную supply-chain-кампанию — Shai-Hulud 2.0. Злоумышленники скомпрометировали аккаунты мейнтейнеров и опубликовали троянизированные версии популярных npm-пакетов. Вредоносный код запускался автоматически еще до завершения установки, собирал секреты разработчиков, токены GitHub, npm и облачных сервисов, а затем использовал их для дальнейшего распространения атаки. В результате были затронуты сотни пакетов и тысячи репозиториев.
Мы проанализировали сотни тысяч пакетов из npm и PyPI. Десятки тысяч образцов оказались вредоносными или подозрительными. Самая распространенная техника — запуск кода прямо во время установки зависимости.
В новой статье собрали большой каталог реальных примеров из npm и PyPI, разобрали повторяющиеся техники и показали, на какие комбинации признаков стоит писать правила детекта.
Читайте полный обзор open-source-вредоносов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥7👏5
Главный тренд последних лет в кибербезопасности — критическое падение порога входа. Доступность специализированных моделей (DarkLLM) привела к появлению vibeware — софта, создаваемого буквально по одному текстовому промпту. Злоумышленникам больше не нужно писать один идеальный бэкдор: проще штамповать тысячи дешевых мутаций под конкретную ОС или платформу.
Разобрали на пальцах и примерах из практики:
Полный разбор в новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤2👾1
Средства AI-автоматизации всё активнее используются для работы с корпоративными данными, API, файловыми системами и другими элементами инфраструктуры. Вместе с расширением их возможностей увеличивается и потенциальная поверхность атаки.
В новой статье рассматриваем характерные уязвимости современных средств AI-автоматизации и основные связанные с ними риски.
На примерах n8n, OpenClaw, Claude Code, Langflow и Flowise разбираем типовые уязвимости и сценарии атак, а также приводим рекомендации, которые помогут снизить риски при эксплуатации таких решений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3💯3