
Пассивный сканер только для чтения, который проверяет хост REDCap на подверженность и компрометацию в связи с **CVE-2026-90817** — уязвимостью удалённого выполнения кода через неаутентифицированную конечную точку опроса, которую эксплуатирует кампания криптомайнинга XMRig, задокументированная Palo Alto Unit 42
redcap_cve_2026_90817_scan.py — это пассивный сканер, работающий только на чтение, который проверяет хост REDCap на подверженность и компрометацию в результате CVE-2026-90817 — уязвимости удалённого выполнения кода через неаутентифицированную конечную точку опросов, эксплуатируемой в кампании криптомайнинга XMRig, задокументированной Palo Alto Unit 42
(2026-10-07-XMRig-campaign-through-CVE-2026-90817).
Он отвечает на два вопроса о хосте, на котором запускается:
Этот инструмент предназначен только для обнаружения. Он:
Он предназначен для администратора, запускающего его против своего собственного сервера REDCap.
pip. Один файл; скопируйте
его на хост и запустите./var/log/apache2 (Debian) или /var/log/httpd
(RHEL/CentOS/Rocky/Alma), а nginx — в /var/log/nginx. В RHEL 8 системный
python3 — это 3.6, поэтому там вызывайте python3.9 (или новее); RHEL/Rocky/Alma 9
поставляются с 3.9+. Запускайте от имени root для полного сканирования (crontab отдельных пользователей, authorized_keys других пользователей и /proc/<pid>/exe, а также некоторые журналы иначе
недоступны для чтения). Без root он всё равно запускается и явно помечает результат как
частичное сканирование.# Simplest: defaults to /var/www/html/redcap, auto-detects the mitigation date
sudo python3 -I redcap_cve_2026_90817_scan.py
# Point at a non-default install, pin the mitigation date, list every attack entry
sudo python3 -I redcap_cve_2026_90817_scan.py \
--redcap-root /var/https/redcap \
--mitigation-date 2026-09-21 \
--max-log-matches all
# Machine-readable output for monitoring / ticketing
sudo python3 -I redcap_cve_2026_90817_scan.py --json
В Windows запускайте из командной строки с повышенными правами и укажите --redcap-root на каталог установки (платформа и каталоги журналов по умолчанию определяются автоматически):
# IIS or Apache/XAMPP; logs under C:\inetpub\logs\LogFiles or the Apache logs dir
python -I redcap_cve_2026_90817_scan.py --redcap-root C:\redcap --json
-I запускает Python в изолированном режиме (игнорирует $PYTHONPATH и CWD) — хорошая гигиена
при сканировании потенциально скомпрометированного хоста.
| Флаг | По умолчанию | Назначение |
|---|---|---|
--redcap-root PATH | /var/www/html/redcap | Корневой каталог установки REDCap. |
--log-dir DIR (можно повторять) | зависит от платформы (Apache/nginx в Linux; IIS LogFiles + Apache в Windows) | Каталоги логов веб-сервера для сканирования (обрабатывает ротированные .gz и логи IIS W3C). |
--home-dir DIR (можно повторять) | /root + каждый /home/* (Linux); каждый C:\Users\* (Windows) | Дополнительные домашние каталоги для поиска SSH-ключей / файлов shell/profile. |
--platform auto|linux|windows | auto | Платформа хоста, которую следует предполагать. Автоопределяется по ОС; принудительно задайте её для выбора провайдера (проверки хоста, специфичные для ОС, всё равно выполняются только на соответствующей живой ОС). |
--mitigation-date YYYY-MM-DD | автоопределяется | Дата, когда уязвимость была закрыта путём обновления. См. Время атаки. |
--since YYYY-MM-DD | — | Проверять только записи веб-логов начиная с этой даты (включительно). Файлы логов, изменённые ранее, не открываются. Применяется к обоим проходам по логам; проверки состояния хоста не затрагиваются. См. Время атаки. |
--until YYYY-MM-DD | — | Проверять только записи веб-логов по эту дату (включительно). |
--full-hash-scan | выкл. | Рекурсивно хешировать файлы в temp/cache и каталогах staging (медленнее). |
--max-log-matches N | all | 100 | Сколько записей логов атаки выводить на категорию, сохраняемых дословно. |
--attacker-ip IP (можно повторять) | — | Дополнительный известный IP атакующего (например, из сканирования другого хоста). Обрабатывается как задокументированный IOC IP. См. Второй проход. |
--json | выкл. | Выводить JSON вместо текстового отчёта. |
--quiet | выкл. | Подавлять строки OK/INFO в текстовом выводе. |
| Код | Значение |
|---|---|
0 | Чисто и пропатчено, и сканирование выполнено полностью. |
1 | Одна или несколько находок (уязвимая версия и/или IOC/атака) — требуется расследование. |
2 | Сканирование не удалось выполнить полностью (ошибки, или без привилегий и в остальном чисто — чистый результат не может быть полностью подтверждён). |
Каждый задокументированный IOC сопоставляется с пассивной локальной проверкой:
redcap_vX.Y.Z и сравнивает с пропатченными релизами
(16.0.49 LTS / 17.3.10 LTS / 17.4.4 Standard; нижняя граница уязвимости 13.3.0).temp/cache — каждый файл там (и в каталогах
staging) хешируется и сравнивается с SHA-256 дроппера Unit 42. Примечание: инструмент не
помечает файлы по расширению .bladec. Ядро REDCap использует шаблонизатор BladeOne, который
записывает скомпилированные шаблоны .bladec с хеш-именами в temp/cache как
обычный вывод, поэтому расширение не является индикатором компрометации; действительно
вредоносный сброшенный файл обнаруживается по хешу содержимого, независимо от расширения..syslog-*, архивы xmrig* и каталоги конкурентов
(/dev/shm/duet, /var/tmp/.bin), на которые кампания ставит права 000./var/tmp, /dev/shm, /tmp, и маскирующиеся процессы syslog-ng-*.127.0.0.1:50001 и активные
соединения с IP-адресами источника атакующего — задокументированным,
наблюдаемыми, любыми из --attacker-ip и каждым IP, обнаруженным проверкой веб-логов.authorized_keys — ключи, совпадающие с отпечатком бэкдора атакующего.
(Инструмент намеренно не перечисляет посторонние ключи для «проверки» — на обычном хосте
они принадлежат реальным учётным записям и не поддаются независимой проверке.)~/.profile — внедрённый код автозапуска и анти-форензика через HISTFILE.