← back
CVE-2016-10174criticalunder attackCWE-120

CVE-2016-10174

100Vexday Risk Score

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

ssvc Actcvss 9.8epss 83%
from disclosure to weapon0 days
Published on NVDJan 30
1st PoCDec 21
metasploitDec 20
CISA KEV+1880d
exploitation probability
83%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
4 public exploit(s)
Action required by CISAfederal deadline: 2022-04-15

Apply updates per vendor instructions.

Summary

CVE-2016-10174 é um buffer overflow stack-based no parâmetro hidden_lang_avi do endpoint /apply.cgi?/lang_check.html do roteador NETGEAR WNR2000v5, que faz parte de uma cadeia de três falhas descobertas por Pedro Ribeiro (Agile Information Security) em dezembro de 2016. Isolada, a falha já permite RCE não autenticado; combinada com um bypass de controle de acesso (apply_noauth.cgi) e um gerador de token previsível, vira uma cadeia completa de takeover do dispositivo sem credenciais. Está no catálogo KEV da CISA por exploração confirmada, tem PoC pública e módulo Metasploit — mas o impacto real está concentrado em roteadores domésticos legados, muitos já fora de suporte.

Technical detail

O servidor web embarcado do WNR2000 (uhttpd) não implementa apply.cgi como um script CGI de verdade: é uma string mágica que o binário do uhttpd reconhece e roteia internamente para funções administrativas (trocar configuração de WLAN, reiniciar, restaurar padrão de fábrica etc.). Uma dessas rotas, invocada via /apply.cgi?/lang_check.html (ou sua variante não autenticada /apply_noauth.cgi?/lang_check.html), processa o parâmetro hidden_lang_avi copiando seu valor para um buffer de tamanho fixo na pilha sem validar o tamanho da entrada — um overflow clássico de pilha (CWE-119/CWE-121, conforme classificado pela CISA). Como o firmware roda em MIPS embarcado sem as mitigações modernas de userland (ASLR/NX consistentes) típicas de Linux desktop, sobrescrever o buffer permite controlar o fluxo de execução e, em última instância, executar código arbitrário no contexto do processo do servidor web (tipicamente root em firmware de roteador SOHO).

O atacante controla integralmente o conteúdo e, dentro do limite do buffer, o tamanho da string enviada em hidden_lang_avi. Não há sanitização de tipo, comprimento ou caracteres nesse parâmetro antes da cópia — a falha é de implementação C de baixo nível, não de lógica de autorização (essa é uma vulnerabilidade separada, tratada pelo pesquisador na mesma cadeia).

How it’s exploited

A rota apply.cgi normalmente exige autenticação de administrador via HTTP Basic Auth. O pulo do gato descoberto pelo pesquisador é que o mesmo binário do uhttpd também responde a apply_noauth.cgi, que executa as mesmas funções sem exigir credenciais — incluindo lang_check.html, o endpoint vulnerável ao overflow. Algumas dessas funções administrativas são protegidas por um valor de "timestamp" enviado na URL, funcionando como um anti-CSRF token gerado por uma função de PRNG (baseada em random()/srandom() do libc) semeada de forma previsível; o pesquisador demonstrou que esse token pode ser identificado em menos de 1000 tentativas sem conhecimento prévio do dispositivo.

Na prática, a exploração completa e não autenticada encadeia: (1) requisição não autenticada a apply_noauth.cgi para acessar a rota administrativa sem login; (2) previsão/força bruta do timestamp anti-CSRF explorando a debilidade do PRNG; (3) envio do payload de overflow no parâmetro hidden_lang_avi para obter execução de código. Por padrão o gerenciamento remoto (WAN) está desabilitado no WNR2000v5, então a exploração via internet só é possível se o administrador ativou essa opção — quando isso ocorre, o dispositivo fica exposto e pesquisadores encontraram mais de 10.000 unidades com gerenciamento remoto ligado no Shodan no momento da divulgação. Sem gerenciamento remoto, o ataque é restrito à LAN, o que ainda é relevante em cenários de rede comprometida, IoT malicioso na mesma rede, ou ataques CSRF/drive-by via navegador de uma máquina interna. A presença no catálogo KEV da CISA confirma exploração ativa registrada, embora as fontes disponíveis não detalhem quem ou em que campanha.

Versions

Affected
WNR2000v5, todas as versões de firmware anteriores à correção (confirmado em hardware pelo pesquisador). WNR2000v4 e WNR2000v3 são citados como possivelmente afetados pelo mesmo mecanismo, mas isso foi confirmado apenas por análise estática do firmware, não testado em hardware real, segundo o advisory original.
Fixed in
NETGEAR publicou firmware de produção corrigido para WNR2000v3, WNR2000v4 e WNR2000v5 (links adicionados ao advisory do fornecedor em 26/01/2017); número de versão específico não constava nas fontes consultadas — verificar release notes do modelo no Download Center da NETGEAR.

How to protect

O fornecedor lançou atualizações de firmware de produção para WNR2000v3, WNR2000v4 e WNR2000v5 (advisory PSV-2016-0255, atualizado em 26/01/2017 com os links de firmware definitivos). As fontes consultadas não trazem o número exato da versão de firmware corrigida — o usuário deve baixar a versão mais recente disponível no Download Center da NETGEAR para o modelo específico e confirmar pelas release notes que ela cobre PSV-2016-0255 / CVE-2016-10174. A NETGEAR afirma que, a partir de dezembro de 2017, todos os modelos listados no advisory já tinham correção disponível.

Como controle compensatório quando a atualização não é possível imediatamente: desabilitar o gerenciamento remoto (WAN) elimina o vetor via internet, mas não protege contra exploração dentro da própria LAN — não é mitigação completa, apenas reduz a superfície. Isolar o roteador de dispositivos não confiáveis na rede interna (segmentação, VLAN de gerenciamento) reduz o risco residual. Trocar a senha padrão de administrador não mitiga esta CVE específica, já que a exploração do buffer overflow via apply_noauth.cgi não depende de autenticação — esse é o mito a descartar aqui: a falha contorna justamente o controle de credenciais.

How to detect

Em logs de servidor web/proxy, procurar requisições a /apply.cgi?/lang_check.html ou /apply_noauth.cgi?/lang_check.html com o parâmetro hidden_lang_avi contendo valor anormalmente longo ou com bytes não imprimíveis — indicativo de tentativa de overflow. Um padrão anterior no mesmo fluxo de ataque é volume elevado de requisições repetidas a endpoints que retornam o parâmetro "timestamp=" (como /lang_check.html ou /PWD_password.htm), sugerindo tentativa de prever o token do PRNG por força bruta, e requisições a /BRS_netgear_success.html, usada no reconhecimento para vazar o número de série do dispositivo. Não há assinatura oficial de IDS/IPS citada nas fontes consultadas; a ausência de log administrativo detalhado nesses roteadores SOHO também limita a capacidade forense pós-incidente.

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.
The NETGEAR WNR2000v5 router contains a buffer overflow in the hidden_lang_avi parameter when invoking the URL /apply.cgi?/lang_check.html. This buffer overflow can be exploited by an unauthenticated attacker to achieve remote code execution.
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
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.