
Um scanner passivo e somente leitura que verifica um host REDCap quanto à exposição e ao comprometimento pela **CVE-2026-90817** — a falha de execução remota de código no endpoint de pesquisa sem autenticação explorada pela campanha de criptomineração XMRig documentada pela Palo Alto Unit 42
redcap_cve_2026_90817_scan.py é um scanner somente leitura e passivo que verifica um
host REDCap quanto à exposição e ao comprometimento por CVE-2026-90817 — a
falha de execução remota de código não autenticada no endpoint de questionários explorada pela campanha de
criptomineração XMRig documentada pelo Palo Alto Unit 42
(2026-10-07-XMRig-campaign-through-CVE-2026-90817).
Ele responde a duas perguntas sobre o host em que é executado:
Esta ferramenta é apenas de detecção. Ela:
Ela é destinada a um administrador que a executa contra o seu próprio servidor REDCap.
pip. Um único arquivo; copie-o
para o host e execute./var/log/apache2 (Debian) ou /var/log/httpd
(RHEL/CentOS/Rocky/Alma), e do nginx em /var/log/nginx. No RHEL 8 o
python3 do sistema é 3.6, então invoque python3.9 (ou mais recente) nele; RHEL/Rocky/Alma 9
já vêm com 3.9+. Execute como root para uma verificação completa (crontabs por usuário, authorized_keys de outros usuários
e /proc/<pid>/exe, e alguns logs ficam, caso contrário,
ilegíveis). Sem root, ele ainda é executado e marca claramente o resultado como uma
verificação parcial.# 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
No Windows, execute a partir de um prompt elevado e aponte --redcap-root para a
instalação (a plataforma e os diretórios de log padrão são detectados automaticamente):
# 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 executa o Python em modo isolado (ignora $PYTHONPATH e o CWD) — boa prática
ao analisar um host possivelmente comprometido.
| Flag | Padrão | Finalidade |
|---|---|---|
--redcap-root PATH | /var/www/html/redcap | Raiz de instalação do REDCap. |
--log-dir DIR (repetível) | específico da plataforma (Apache/nginx no Linux; IIS LogFiles + Apache no Windows) | Diretórios de logs do servidor web a analisar (lida com .gz rotacionados e logs W3C do IIS). |
--home-dir DIR (repetível) | /root + cada /home/* (Linux); cada C:\Users\* (Windows) | Diretórios home adicionais a analisar em busca de chaves SSH / arquivos de shell/profile. |
--platform auto|linux|windows | auto | Plataforma do host a assumir. Detecta automaticamente a partir do SO; force-a para selecionar um provedor (as sondagens de host específicas do SO ainda são executadas apenas no SO ativo correspondente). |
--mitigation-date YYYY-MM-DD | detectado automaticamente | Data em que a vulnerabilidade foi corrigida por meio de atualização. Consulte Attack timing. |
--since YYYY-MM-DD | — | Examinar apenas entradas de log web nesta data ou após ela (inclusive). Arquivos de log modificados anteriormente não são abertos. Aplica-se a ambas as passagens de log; as verificações de estado do host não são afetadas. Consulte Attack timing. |
--until YYYY-MM-DD | — | Examinar apenas entradas de log web nesta data ou antes dela (inclusive). |
--full-hash-scan | desativado | Calcular hash recursivamente dos arquivos em temp/cache e diretórios de staging (mais lento). |
--max-log-matches N | all | 100 | Quantas entradas de log de ataque listar por categoria, mantidas verbatim. |
--attacker-ip IP (repetível) | — | IP adicional de atacante conhecido (por exemplo, da análise de outro host). Tratado como o IP IOC documentado. Consulte Second pass. |
--json | desativado | Emitir JSON em vez do relatório em texto. |
--quiet | desativado | Suprimir linhas OK/INFO na saída em texto. |
| Código | Significado |
|---|---|
0 | Limpo e corrigido, e a análise foi concluída integralmente. |
1 | Uma ou mais descobertas (versão vulnerável e/ou IOC/ataque) — investigar. |
2 | A análise não pôde ser concluída integralmente (erros, ou sem privilégios e de outra forma limpo — um resultado limpo não pôde ser totalmente assegurado). |
Cada IOC documentado mapeia para uma verificação local passiva:
redcap_vX.Y.Z e compara com as versões corrigidas
(16.0.49 LTS / 17.3.10 LTS / 17.4.4 Standard; piso afetado 13.3.0).temp/cache — cada arquivo ali (e nos
diretórios de staging) tem seu hash calculado e comparado com o SHA-256 do dropper da Unit 42. Nota: a ferramenta não
sinaliza arquivos pela extensão .bladec. O núcleo do REDCap usa o motor de templates BladeOne, que grava templates compilados .bladec com nomes baseados em hash em temp/cache como
saída normal, portanto a extensão não é um indicador de comprometimento; um arquivo malicioso genuinamente
inserido é detectado pelo hash de seu conteúdo, independentemente da extensão..syslog-*, arquivos xmrig*, e os diretórios de concorrentes
(/dev/shm/duet, /var/tmp/.bin) que a campanha bloqueia com permissões 000./var/tmp, /dev/shm, /tmp, e processos mascarados syslog-ng-*.127.0.0.1:50001, e conexões
ativas para o(s) IP(s) de origem do atacante — o documentado, os
observados, qualquer --attacker-ip, e cada IP descoberto pela verificação de log web.authorized_keys do SSH — chaves que correspondem à impressão digital do backdoor do atacante.
(Deliberadamente não lista chaves não relacionadas para "revisão" — em um host normal
essas pertencem a contas reais e não são verificáveis de forma independente.)~/.profile — código de inicialização injetado e anti-forense via HISTFILE.