← back
CVE-2018-6530criticalunder attackransomwareCWE-78

CVE-2018-6530

95Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 97%
from disclosure to weapon
Published on NVDMar 6
CISA KEV+1647d
exploitation probability
97%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
Action required by CISAfederal deadline: 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.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
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.
Fixed in
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.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
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
Affected products
n/a · n/a