← volver
CVE-2020-11651criticalbajo ataque

CVE-2020-11651

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 9.8epss 97%
de la publicación al arma1 días
Publicada en NVD30 abr
1ª PoC+1d
metasploit30 abr
CISA KEV+552d
probabilidad de explotación
97%top 1% de las CVE
explotación observada
CISA + VulnCheck
31 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumen

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.

Detalle 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.

Cómo se explota

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.

Versiones

Afectadas
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.
Corregidas en
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.

Cómo protegerse

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.

Cómo 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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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
Productos afectados
n/a · n/a
PoCs públicas encontradas31
exploitdbwww.exploit-db.com/exploits/48421no 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/20496291ec6eno verificadovulncheckvulncheck.com/xdb/8e2c5b54e098no verificadocve_referencepacketstormsecurity.com/files/157678/SaltStack-Salt-Master-Minion-Unauthenticated-Remote-Code-Execution.htmlno verificadovulncheckvulncheck.com/xdb/aaa9b5889efano verificadovulncheckvulncheck.com/xdb/51575fb7e19dno verificadovulncheckvulncheck.com/xdb/731f17c6b531no verificadovulncheckvulncheck.com/xdb/25e4169b7213no verificadovulncheckvulncheck.com/xdb/ed4dc5fcce7fno verificadovulncheckvulncheck.com/xdb/f1a425abf2c5no verificadovulncheckvulncheck.com/xdb/f2d4106b8900no verificadovulncheckvulncheck.com/xdb/6941178da516no verificadovulncheckvulncheck.com/xdb/126bde061e76no verificadocve_referencepacketstormsecurity.com/files/157560/Saltstack-3000.1-Remote-Code-Execution.htmlno verificadovulncheckvulncheck.com/xdb/ad2b3134eaadno verificadovulncheckvulncheck.com/xdb/605b3d9a1c77no verificadovulncheckvulncheck.com/xdb/9705a4dc0d5dno verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.