CVE-2021-42258
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions.
Summary
Injeção SQL não autenticada no formulário de login do BQE BillQuick Web Suite (versões 2018 a 2021, antes da 22.0.9.1), explorável via o parâmetro txtID (campo de usuário). A falha foi usada ativamente em outubro de 2021 para obter acesso inicial e instalar ransomware em pelo menos uma empresa de engenharia nos EUA, o que a colocou no catálogo KEV da CISA logo após a divulgação.
Technical detail
A causa é CWE-89 (SQL Injection) clássica: o código server-side monta a query MSSQL por concatenação de string usando o valor enviado no campo txtID do formulário de login, sem parametrização. Isso permite injeção SQL cega (blind) diretamente na página de autenticação, sem qualquer sessão ou token válido — o atacante controla integralmente o conteúdo desse campo antes de qualquer verificação de credencial.
O fator que transforma a injeção em execução remota de código é o ambiente de banco, não a query em si: as versões afetadas do BillQuick Web Suite autenticam no MSSQL usando a conta 'sa' (System Administrator). Com privilégios de sa disponíveis via a injeção, o atacante pode acionar o procedimento estendido xp_cmdshell, que executa comandos arbitrários no sistema operacional Windows subjacente com o contexto do serviço MSSQLSERVER$.
A página de erro da aplicação, segundo a análise da Huntress, retorna um traceback completo quando a query falha (por exemplo, ao enviar apenas um caractere de aspa simples no campo de usuário), o que facilita tanto a detecção da falha por um pesquisador quanto a exploração automatizada, já que expõe informação sobre a estrutura da query e do backend.
How it’s exploited
O vetor é uma requisição HTTP POST para o endpoint de login (logon) da aplicação web, sem necessidade de autenticação prévia, configuração especial ou acesso à rede interna — apenas alcançar a interface web do BillQuick Web Suite exposta. A Huntress reproduziu o ataque usando sqlmap apontado para o parâmetro txtID do request de login, confirmando extração não autenticada de dados sensíveis (incluindo a tabela SecurityTable, com senhas codificadas e permissões de funcionários) e, em ambientes onde xp_cmdshell estava habilitado e a conexão ao MSSQL usava a conta sa, execução de comandos no sistema operacional.
A exploração observada in-the-wild seguiu esse padrão: requisições POST repetidas de um IP externo ao endpoint de logon, culminando em atividade maliciosa sob a conta de serviço MSSQLSERVER$ detectada por antivírus, seguida da instalação de ransomware na rede da vítima. A complexidade técnica é baixa — a própria Huntress descreve que basta enviar uma aspa simples no campo de usuário para disparar o comportamento anômalo, e ferramentas de teste de injeção genéricas (sqlmap) bastam para automatizar a extração e a escalada até RCE.
O impacto final documentado vai de exfiltração de dados de faturamento e credenciais até execução arbitrária de código no servidor Windows on-premises que hospeda a aplicação — base suficiente para movimento lateral e implantação de ransomware, como ocorreu no incidente relatado.
Versions
How to protect
O fornecedor (BQE) corrigiu a falha na versão 22.0.9.1 do BillQuick Web Suite 2021; a atualização foi validada pela Huntress em contato direto com a equipe da BQE. Ambientes rodando WebSuite 2018 a 2021 em versões anteriores a 22.0.9.1 devem atualizar para essa versão ou posterior — é a ação registrada no KEV da CISA ('Apply updates per vendor instructions'), com prazo de mitigação definido pela CISA para 2021-11-17.
Se a atualização imediata não for possível, um controle compensatório real e documentado é desabilitar o procedimento estendido xp_cmdshell no servidor MSSQL e não utilizar a conta 'sa' para a conexão de aplicação — isso não corrige a injeção SQL, mas quebra o caminho de RCE que a torna crítica, restando apenas o vazamento de dados via injeção cega. Restringir o acesso de rede ao endpoint de login (VPN, allowlist de IPs) reduz a superfície, mas não é mitigação contra um atacante que já tenha esse acesso.
Não existe mitigação eficaz baseada apenas em ocultar mensagens de erro ou traceback: isso reduz a facilidade de descoberta, mas a injeção cega (blind SQLi) já demonstrada com sqlmap não depende de mensagens de erro visíveis para funcionar.
How to detect
Em logs de acesso web, procurar requisições POST repetidas ao endpoint de login (logon) contendo caracteres de injeção SQL (aspas simples, comentários SQL, payloads típicos de sqlmap) no campo txtID — a Huntress observou exatamente esse padrão, com um IP externo enviando POSTs repetidos ao endpoint de logon antes do comprometimento. Em nível de sistema operacional/EDR, alertas de antivírus indicando atividade maliciosa executada sob a conta de serviço MSSQLSERVER$ (por exemplo, spawn de cmd.exe ou powershell.exe a partir do processo do SQL Server) são um forte indicador de exploração via xp_cmdshell, já que essa é a cadeia de execução documentada no incidente original.