← voltar
CVE-2020-11651criticalsob ataque

CVE-2020-11651

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 97%
da publicação à arma1 dias
Publicada no NVD30 de abr.
1ª PoC+1d
metasploit30 de abr.
CISA KEV+552d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
31 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

Falha de autenticação na classe ClearFuncs do salt-master (SaltStack Salt) permite que qualquer atacante com acesso de rede às portas do master invoque métodos que deveriam exigir autenticação. Com isso é possível extrair tokens de usuários autenticados e executar comandos arbitrários nos minions geridos por aquele master — comprometimento total da infraestrutura gerenciada, não só de um host isolado. O CVSS 9.8 é justificado: não há pré-requisito de autenticação, complexidade é baixa e o impacto é execução de código em toda a frota de minions.

Detalhamento técnico

O salt-master expõe duas interfaces RPC: uma autenticada (AESFuncs, cifrada com a chave da minion) e uma "clear" (ClearFuncs), usada para operações que precisam ocorrer antes da autenticação completa, como o próprio processo de autenticação. O problema é que o ClearFuncs não validava corretamente quais métodos um cliente remoto podia invocar sem apresentar credenciais — a superfície de métodos acessíveis "em claro" era maior do que deveria, incluindo funções que retornam segredos (tokens de usuários) ou disparam execução de jobs nos minions.

A classificação de CWE varia entre as fontes: o advisory da Cisco rotula CWE-20 (validação de entrada imprópria), mas a natureza do defeito — chamar método sensível sem checar se o chamador está autenticado — é essencialmente um problema de controle de acesso ausente/insuficiente sobre operações RPC expostas na rede.

O atacante não controla parâmetros de payload no sentido de injeção; ele controla qual método RPC do ClearFuncs deseja invocar e com quais argumentos esse método aceita nativamente. Como alguns desses métodos aceitam instruções de publicação de jobs para minions, o resultado prático é execução de comandos arbitrários nos minions conectados àquele master, além de leitura de tokens de sessão que dão acesso equivalente a um usuário legítimo do salt.

A correção oficial (releases 2019.2.4 e 3000.2) introduziu uma lista explícita ('whitelist') de métodos que ClearFuncs e AESFuncs podem expor sem autenticação completa. O próprio changelog da 3000.2 registra um efeito colateral da correção: um typo na whitelist (`_minion_runner` em vez de `minion_runner`) quebrou o módulo `publish.runner`, corrigido apenas na release Sodium subsequente.

Como é explorada

O vetor é rede: o salt-master escuta por padrão nas portas TCP 4505 (publish) e 4506 (request/ClearFuncs). Se essas portas estiverem alcançáveis por um atacante — situação comum em ambientes onde o master foi exposto à internet ou a redes internas amplas sem segmentação — a exploração não exige nenhuma credencial, interação do usuário ou configuração não padrão adicional: basta enviar as chamadas RPC ao ClearFuncs. Isso está refletido no vetor CVSS (AC:L, PR:N, UI:N).

Há exploração ativa confirmada: a falha está no catálogo KEV da CISA, existe módulo Metasploit público e PoCs publicadas (incluindo análises técnicas referenciadas via PacketStorm descrevendo RCE contra Salt Master/Minion). O advisory da Cisco documenta um caso concreto: servidores salt-master mantidos pela própria Cisco para dar suporte ao Cisco VIRL-PE (us-1 a us-4.virl.info, vsm-us-1/2.virl.info) foram efetivamente comprometidos antes de serem corrigidos em maio de 2020, ilustrando que a exploração em campo ocorreu em produção, não só em laboratório.

O resultado final da exploração é: (1) exfiltração de tokens de autenticação de usuários do salt, que podem ser reutilizados para operações autenticadas subsequentes; e/ou (2) execução arbitrária de comandos em qualquer minion conectado ao master vulnerável — na prática, controle total sobre toda a frota gerenciada por aquele master, já que o salt-master é o ponto central de orquestração.

Versões

Afetadas
SaltStack Salt anterior a 2019.2.4 (branch 2019.2.x) e Salt 3000 anterior a 3000.2 (branch 3000.x). Distribuições com pacotes derivados (Debian, Ubuntu, openSUSE) mantiveram numeração própria vulnerável antes dos respectivos backports.
Corrigidas em
Salt 2019.2.4 e Salt 3000.2 (upstream). Backports confirmados: Debian 2014.1.13+ds-3+deb8u1 (Jessie/LTS); Ubuntu 2017.7.4+dfsg1-1ubuntu18.04.2 (18.04 LTS) e 2015.8.8+ds-1ubuntu0.1 (16.04 LTS); openSUSE via avisos de 2020-04 e 2020-07. Nota: a whitelist introduzida em 3000.2 continha um typo (`_minion_runner`) que quebrava `publish.runner`, corrigido apenas na release Sodium subsequente.

Como se proteger

A correção definitiva é atualizar para Salt 2019.2.4 (branch 2019.2.x) ou 3000.2 (branch 3000.x), que implementam a whitelist explícita de métodos RPC acessíveis sem autenticação completa. Distribuições fizeram backport: Debian LTS (Jessie) corrigiu em 2014.1.13+ds-3+deb8u1; Ubuntu corrigiu via USN-4459-1 nas versões 2017.7.4+dfsg1-1ubuntu18.04.2 (18.04) e 2015.8.8+ds-1ubuntu0.1 (16.04); openSUSE publicou avisos equivalentes. Produtos que embarcam Salt, como Cisco CML/VIRL-PE, receberam patches próprios do fornecedor.

Se a atualização imediata não for viável, o controle compensatório real é restringir o acesso de rede às portas 4505/4506 do salt-master a apenas hosts que precisam se comunicar com ele (firewall/segmentação), já que a exploração depende de alcançar essas portas sem autenticação. A própria Cisco recomenda, como workaround, desabilitar o serviço salt-master quando ele não for necessário para a operação do produto. Nenhuma dessas medidas substitui o patch: elas apenas reduzem a superfície exposta enquanto a atualização não ocorre.

Vale notar que a correção desta CVE está atrelada à mesma release que corrige a CVE-2020-11652 (directory traversal na mesma classe ClearFuncs) — atualizar para 2019.2.4/3000.2 resolve ambas simultaneamente. Um mito a descartar: apenas restringir acesso via ACL de aplicação Salt (eauth) não é mitigação suficiente, porque a falha está no nível do ClearFuncs antes da camada de autenticação ser aplicada — o controle precisa ser de rede ou de patch.

Como detectar

O sinal mais direto é monitorar conexões de rede às portas TCP 4505 e 4506 do salt-master vindas de origens não esperadas (fora da rede de minions/administração legítima) — a exploração depende de acesso direto a essas portas sem autenticação prévia. Logs do próprio salt-master podem registrar chamadas RPC anômalas ao ClearFuncs (por exemplo, invocações de métodos de gerenciamento de token ou disparo de jobs vindas de IPs que não são minions cadastrados), mas a granularidade desses logs varia por versão e configuração, e não há um indicador único e confiável documentado nas fontes revisadas — presença de PoC pública e módulo Metasploit tornam plausível que scanners de rede genéricos testem essas portas, então tráfego de reconhecimento nessas portas por si só já é um sinal de atenção.

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.
An issue was discovered in SaltStack Salt before 2019.2.4 and 3000 before 3000.2. The salt-master process ClearFuncs class does not properly validate method calls. This allows a remote user to access some methods without authentication. These methods can be used to retrieve user tokens from the salt master and/or run arbitrary commands on salt minions.
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
PoCs públicas encontradas31
exploitdbwww.exploit-db.com/exploits/48421não verificadogithubgithub.com/jasperla/CVE-2020-11651-poc122githubgithub.com/rossengeorgiev/salt-security-backports108githubgithub.com/dozernz/cve-2020-11651106githubgithub.com/0xc0d/CVE-2020-1165140githubgithub.com/ssrsec/CVE-2020-11651-CVE-2020-11652-EXP24githubgithub.com/chef-cft/salt-vulnerabilities6githubgithub.com/kevthehermit/CVE-2020-116516githubgithub.com/bravery9/SaltStack-Exp5githubgithub.com/lovelyjuice/cve-2020-11651-exp-plus5githubgithub.com/Drew-Alleman/CVE-2020-116511githubgithub.com/appcheck-ng/salt-rce-scanner-CVE-2020-11651-CVE-2020-116521githubgithub.com/hardsoftsecurity/CVE-2020-11651-PoC0githubgithub.com/RakhithJK/CVE-2020-116510githubgithub.com/s1lentf00thold/CVE-2020-11651-Poc0vulncheckvulncheck.com/xdb/20496291ec6enão verificadovulncheckvulncheck.com/xdb/8e2c5b54e098não verificadocve_referencepacketstormsecurity.com/files/157678/SaltStack-Salt-Master-Minion-Unauthenticated-Remote-Code-Execution.htmlnão verificadovulncheckvulncheck.com/xdb/aaa9b5889efanão verificadovulncheckvulncheck.com/xdb/51575fb7e19dnão verificadovulncheckvulncheck.com/xdb/731f17c6b531não verificadovulncheckvulncheck.com/xdb/25e4169b7213não verificadovulncheckvulncheck.com/xdb/ed4dc5fcce7fnão verificadovulncheckvulncheck.com/xdb/f1a425abf2c5não verificadovulncheckvulncheck.com/xdb/f2d4106b8900não verificadovulncheckvulncheck.com/xdb/6941178da516não verificadovulncheckvulncheck.com/xdb/126bde061e76não verificadocve_referencepacketstormsecurity.com/files/157560/Saltstack-3000.1-Remote-Code-Execution.htmlnão verificadovulncheckvulncheck.com/xdb/ad2b3134eaadnão verificadovulncheckvulncheck.com/xdb/605b3d9a1c77não verificadovulncheckvulncheck.com/xdb/9705a4dc0d5dnão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.