← voltar
CVE-2021-44026criticalsob ataqueCWE-89

CVE-2021-44026

90Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 9.8epss 43%
da publicação à arma725 dias
Publicada no NVD19 de nov.
1ª PoC+725d
CISA KEV+580d
probabilidade de exploração
43%top 1% das CVEs
exploração observada
simCISA + VulnCheck
5 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2023-07-13

Apply updates per vendor instructions.

Resumo

Falha de SQL injection no Roundcube Webmail, causada por reuso das mesmas chaves de sessão ('search' e 'search_params') entre funcionalidades distintas (busca de mensagens, busca de contatos no catálogo de endereços e busca ao compor e-mail). Um usuário autenticado consegue fazer com que dados de um contexto sejam interpretados com estrutura diferente da esperada em outro, chegando à construção de consultas SQL do addressbook sem a validação/tipagem original. O CVSS 9.8 (PR:N) não reflete bem o risco real: a cadeia de código afetada só é alcançada dentro de uma sessão de webmail já autenticada.

Detalhamento técnico

O problema (CWE-89, SQL Injection, combinado com confusão de tipo/CWE-843) está nos arquivos program/steps/addressbook/{search,func,export}.inc e program/steps/mail/{list_contacts,search_contacts}.inc do Roundcube. Essas rotinas, pertencentes a funcionalidades diferentes (busca de mensagens no webmail, busca de contatos no catálogo de endereços, busca de destinatário ao compor e-mail), liam e escreviam nas mesmas chaves genéricas de sessão: $_SESSION['search'] e $_SESSION['search_params'].

Como essas chaves eram compartilhadas entre módulos com formatos de dados diferentes, código que esperava um array de critérios de busca por fonte de addressbook (usado depois para montar cláusulas SQL de WHERE/LIKE contra a tabela de contatos) podia receber, via $_SESSION['search'][$id], um valor com estrutura distinta gravado por outra funcionalidade — em alguns pontos o código fazia apenas um cast (array) sobre o valor da sessão sem verificar antes se já era array (`is_array()`), o que permitia que dados não sanitizados no formato esperado alcançassem a lógica de montagem de query do backend de contatos (driver de banco de dados do addressbook).

As correções oficiais (commits c8947ec para o branch 1.4.x e ee809bd para o 1.3.x) renomeiam essas chaves de sessão para 'contact_search' e 'contact_search_params', isolando-as por funcionalidade, e adicionam checagens explícitas com is_array() antes de tratar o valor da sessão como array de critérios de busca. Isso indica que a causa raiz é confusão de tipo/namespace de sessão entre módulos, não uma concatenação direta e óbvia de string em SQL visível nos diffs disponíveis — o Roundcube não publicou detalhamento adicional do sink SQL exato além dessas correções.

A mesma leva de correções (release 1.4.12/1.3.17) também trouxe o CVE-2021-44025, uma XSS na exibição de aviso de mismatch de MIME type em anexos — falha distinta, reportada no mesmo bug do Debian (#1000156), mas sem relação de causa com a SQLi aqui descrita.

Como é explorada

O vetor prático passa pelas telas de busca do Roundcube: busca de contatos no catálogo de endereços, busca de mensagens/destinatário ao compor e-mail, ou exportação de contatos com resultado de busca salvo em sessão. O atacante precisa conseguir que valores sob seu controle sejam persistidos nas chaves de sessão compartilhadas e depois acionar o fluxo que as consome como parâmetro de busca no addressbook, fazendo a query SQL resultante desviar do comportamento esperado.

Apesar do vetor CVSS declarado (PR:N, UI:N, AV:N) sugerir exploração remota sem nenhuma credencial, essas rotinas de sessão só são alcançadas dentro de uma sessão de webmail já autenticada — ou seja, na prática é necessário que o atacante tenha (ou obtenha) credenciais válidas de uma caixa de e-mail no servidor Roundcube afetado, ou explore isso encadeado com outra falha que dê acesso a uma sessão. Isso reduz bastante o universo de exposição real em relação ao que a nota CVSS isolada sugere.

A CVE está no catálogo KEV da CISA (exploração confirmada) e há PoC pública circulando, o que eleva a prioridade de correção mesmo com a pré-condição de autenticação — ambientes com múltiplos usuários de webmail expostos (típico de provedores de e-mail e organizações que usam Roundcube como frontend) são o cenário de maior risco, porque qualquer conta comprometida (inclusive por phishing/credential stuffing) vira ponto de entrada para o SQLi.

Versões

Afetadas
Roundcube Webmail antes da 1.3.17 (branch 1.3.x) e 1.4.x antes da 1.4.12. Distribuições como Debian também trataram como afetados ramos mais antigos ainda mantidos (ex.: 1.2.x no Debian 9/stretch LTS), que receberam backport da correção.
Corrigidas em
1.3.17 e 1.4.12 (correções upstream). 1.5.0 não é afetado. Backports de distribuição: Debian 1.2.3+dfsg.1-4+deb9u9 (stretch/LTS), 1.3.17+dfsg.1-1~deb10u1 (buster), 1.4.12+dfsg.1-1~deb11u1 (bullseye).

Como se proteger

Atualizar para Roundcube 1.4.12 ou 1.3.17 (conforme o branch em uso) elimina a causa raiz, já que renomeia e valida corretamente as chaves de sessão envolvidas. A versão 1.5.0 não é afetada, segundo nota do mantenedor do pacote Debian no bug #1000156. Distribuições com backport próprio (ex.: Debian) publicaram correções equivalentes para ramos mais antigos, incluindo 1.2.3+dfsg.1-4+deb9u9 no Debian 9/LTS, 1.3.17+dfsg.1-1~deb10u1 no Debian 10 e 1.4.12+dfsg.1-1~deb11u1 no Debian 11 — use a versão do pacote da própria distribuição como referência, não apenas o número de versão upstream.

Não há workaround de configuração documentado oficialmente pelo Roundcube para este CVE além da atualização; nenhuma flag de config.inc.php ou regra de WAF genérica foi publicada como mitigação equivalente. Como a falha depende de sessão autenticada, reduzir a superfície de contas comprometidas (MFA, rotação de credenciais, monitoramento de login anômalo) funciona como controle compensatório, mas não corrige a vulnerabilidade em si — trate como mitigação parcial, não substituto do patch.

Como detectar

Não há assinatura ou IOC oficialmente publicado para este CVE especificamente. Como sinal indireto, vale monitorar erros de SQL nos logs do Roundcube/PHP e do banco de dados (ex.: exceções PDO/mysqli) originados das rotinas de busca de contatos (search.inc, search_contacts.inc, list_contacts.inc, export.inc), e requisições que manipulem de forma incomum os parâmetros _search, _source ou os dados de sessão entre os módulos de mail e addressbook dentro da mesma sessão autenticada. Sem writeup público detalhando payload real de exploração, tratar qualquer erro SQL vindo dessas telas de busca como suspeito, mas sem alta confiança de atribuição a este CVE específico.

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.
Roundcube before 1.3.17 and 1.4.x before 1.4.12 is prone to a potential SQL injection via search or search_params.
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
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.