← voltar
CVE-2018-6530criticalsob ataqueransomwareCWE-78

CVE-2018-6530

95Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 97%
da publicação à arma
Publicada no NVD6 de mar.
CISA KEV+1647d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
Ação exigida pela CISAprazo federal: 2022-09-29

The vendor D-Link published an advisory stating the fix under CVE-2018-20114 properly patches KEV entry CVE-2018-6530. If the device is still supported, apply updates per vendor instructions. If the affected device has since entered its end-of-life, it should be disconnected if still in use.

Resumo

Injeção de comando via soap.cgi em quatro linhas de roteadores D-Link (DIR-880L, DIR-868L, DIR-865L, DIR-860L), permitindo execução de comandos arbitrários no sistema operacional do dispositivo sem autenticação. É uma das falhas de IoT mais exploradas em campanhas de botnet — está no catálogo KEV da CISA e tem exploração ativa confirmada, apesar de a descrição oficial do fornecedor não detalhar mecanismo nem impacto.

Detalhamento técnico

A falha (CWE-78) está na função soapcgi_main, dentro do binário /htdocs/cgibin que implementa o endpoint soap.cgi. O código lê a variável de ambiente REQUEST_URI, verifica se a query string começa com "?service=" e, se sim, trata tudo que vem depois desse prefixo como o parâmetro controlType — sem qualquer sanitização de caracteres.

Esse valor é então usado dentro de um sprintf() para montar um caminho de arquivo ("/var/run/%s_%d.sh"), que é escrito em disco com um comando de auto-remoção e, na sequência, passado diretamente para system(). Como controlType é concatenado sem escaping na string executada por system() — que por sua vez invoca um shell —, qualquer caractere de metacaractere de shell (`;`, `|`, `` ` ``, `$()`, `&&`) presente no parâmetro service é interpretado pelo shell e executado como comando adicional.

O atacante controla integralmente o valor do parâmetro service na query string da requisição a soap.cgi. Segundo a análise de Kaixiang Zhang (pesquisador que reportou a falha), o corpo XML da requisição SOAP e o cabeçalho SOAPAction não precisam ser válidos — o parser aceita qualquer conteúdo, inclusive inválido, desde que o parâmetro service esteja presente na URL. Isso reduz o pré-requisito de exploração a uma única requisição HTTP bem formada na camada de transporte.

O CVSS oficial (AV:N) trata a falha como explorável remotamente pela rede, mas o próprio pesquisador classifica a vulnerabilidade como "LAN - revA/B" em sua tabela de resumo, e o PoC publicado é direcionado a um IP privado (192.168.100.1). Isso sugere que a exposição real depende de o serviço de gerenciamento/SOAP estar acessível — via LAN por padrão, ou via WAN se o dispositivo tiver administração remota habilitada, cenário comum em roteadores mal configurados ou expostos por UPnP/port-forwarding automático.

Como é explorada

O vetor é uma requisição HTTP (GET ou POST) para /soap.cgi contendo `?service=` seguido do payload de injeção na própria query string, sem necessidade de autenticação, sessão ou cookie válido. O PoC publicado demonstra encadear múltiplos comandos via `;` para liberar todas as políticas de iptables (INPUT/FORWARD/OUTPUT/PREROUTING/POSTROUTING para ACCEPT) e depois iniciar um `telnetd` em porta alta (9999 no exemplo), entregando um shell root não autenticado acessível diretamente por telnet após a exploração.

A complexidade de exploração é baixa: não há necessidade de bypass de autenticação, CSRF token, ou conhecimento de estado interno do dispositivo — apenas o processo do serviço web precisa estar acessível na interface de rede alcançável pelo atacante. Como o binário cgibin normalmente roda com privilégios elevados (frequentemente root) em firmware embarcado, o impacto final é controle total do dispositivo: leitura/gravação de configuração, pivotagem para a rede interna, e persistência via reinício de serviços ou modificação de firmware.

O ingresso no catálogo KEV da CISA em 2022 confirma exploração ativa in-the-wild, padrão consistente com o histórico de CVEs de soap.cgi da D-Link sendo incorporadas a botnets de IoT (variantes Mirai e derivados) que escaneiam a internet em massa por dispositivos com essa interface exposta.

Versões

Afetadas
DIR-880L: DIR-880L_REVA_FIRMWARE_PATCH_1.08B04 e versões anteriores. DIR-868L: DIR868LA1_FW112b04 e versões anteriores. DIR-865L: DIR-865L_REVA_FIRMWARE_PATCH_1.08.B01 e versões anteriores. DIR-860L: DIR860LA1_FW110b04 e versões anteriores.
Corrigidas em
D-Link publicou notas de patch por modelo: DIR-880L REVA (notas de patch nomeadas 1.08B06), DIR-865L REVA (notas de patch nomeadas 1.10B01), DIR-868L REVA (notas de patch nomeadas 1.20B01), e DIR-860L REVA (arquivo de notas referenciado como 1.11B01). A CISA indica que o fornecedor considera a correção definitiva vinculada ao aviso/CVE-2018-20114 — confirme a build exata no advisory SAP10105 da D-Link antes de considerar o dispositivo corrigido.

Como se proteger

O fornecedor publicou notas de patch de firmware específicas por modelo (DIR-880L REVA, DIR-865L REVA, DIR-868L REVA, DIR-860L REVA), referenciadas nos avisos oficiais em FTP da D-Link. A CISA, no entanto, aponta uma nuance importante: o próprio fornecedor declara que a correção definitiva para esta entrada do KEV (CVE-2018-6530) foi entregue sob o identificador CVE-2018-20114, ou seja, o patch relevante pode estar documentado sob esse outro CVE, não apenas nos boletins vinculados diretamente a CVE-2018-6530. Vale checar o SAP10105 (advisory da D-Link) para confirmar qual build de firmware corrige o problema no seu modelo/revisão exata.

Se a atualização de firmware não for viável — cenário comum, já que DIR-860L, DIR-865L, DIR-868L e DIR-880L estão em fim de vida ou próximos disso —, a orientação da própria CISA é desconectar o dispositivo da rede caso ele já tenha atingido EOL. Como paliativo técnico caso o dispositivo precise permanecer em uso: desabilitar acesso remoto/administração via WAN, restringir acesso à interface de gerenciamento (porta HTTP/HTTPS do soap.cgi) apenas a hosts confiáveis na LAN, e bloquear a porta de gerenciamento no perímetro caso UPnP ou port-forwarding esteja habilitado.

Não funciona como mitigação: apenas trocar a senha de administração ou desabilitar UPnP não resolve, pois o PoC demonstrado não depende de sessão autenticada nem de UPnP — a falha está no parser HTTP do binário cgibin em si. Qualquer controle que não impeça o acesso de rede ao endpoint /soap.cgi não neutraliza o vetor.

Como detectar

Em logs de servidor web/proxy, procurar requisições para /soap.cgi com o parâmetro `service=` contendo metacaracteres de shell (`;`, `|`, `` ` ``, `$(`, `&&`) ou strings como `iptables`, `telnetd`, `busybox` no valor do parâmetro — padrão do PoC público e de variantes usadas por botnets de IoT. Também é sinal de alerta qualquer POST para soap.cgi com corpo XML malformado ou cabeçalho SOAPAction inválido/genérico, já que a exploração não exige XML ou SOAPAction válidos.

Não há um indicador de comprometimento pós-exploração universal documentado além do que o próprio PoC evidencia (processos telnetd em portas não padrão, regras de firewall zeradas). Como o binário cgibin normalmente não gera log de aplicação detalhado em firmware embarcado, a detecção depende primariamente de captura de tráfego de rede ou IDS/WAF na frente do dispositivo — sinal fraco ou inexistente para quem só depende de logs do próprio roteador.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
OS command injection vulnerability in soap.cgi (soapcgi_main in cgibin) in D-Link DIR-880L DIR-880L_REVA_FIRMWARE_PATCH_1.08B04 and previous versions, DIR-868L DIR868LA1_FW112b04 and previous versions, DIR-65L DIR-865L_REVA_FIRMWARE_PATCH_1.08.B01 and previous versions, and DIR-860L DIR860LA1_FW110b04 and previous versions allows remote attackers to execute arbitrary OS commands via the service parameter.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a