← back
CVE-2020-11651criticalunder attack

CVE-2020-11651

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 97%
from disclosure to weapon1 days
Published on NVDApr 30
1st PoC+1d
metasploitApr 30
CISA KEV+552d
exploitation probability
97%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
31 public exploit(s)
Action required by CISAfederal deadline: 2022-05-03

Apply updates per vendor instructions.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
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.
Fixed in
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.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
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
Affected products
n/a · n/a
public PoCs found31
exploitdbwww.exploit-db.com/exploits/48421unverifiedgithubgithub.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/20496291ec6eunverifiedvulncheckvulncheck.com/xdb/9705a4dc0d5dunverifiedcve_referencepacketstormsecurity.com/files/157678/SaltStack-Salt-Master-Minion-Unauthenticated-Remote-Code-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/aaa9b5889efaunverifiedvulncheckvulncheck.com/xdb/51575fb7e19dunverifiedvulncheckvulncheck.com/xdb/731f17c6b531unverifiedvulncheckvulncheck.com/xdb/25e4169b7213unverifiedvulncheckvulncheck.com/xdb/ed4dc5fcce7funverifiedvulncheckvulncheck.com/xdb/f1a425abf2c5unverifiedvulncheckvulncheck.com/xdb/f2d4106b8900unverifiedvulncheckvulncheck.com/xdb/6941178da516unverifiedvulncheckvulncheck.com/xdb/126bde061e76unverifiedvulncheckvulncheck.com/xdb/8e2c5b54e098unverifiedvulncheckvulncheck.com/xdb/ad2b3134eaadunverifiedvulncheckvulncheck.com/xdb/605b3d9a1c77unverifiedcve_referencepacketstormsecurity.com/files/157560/Saltstack-3000.1-Remote-Code-Execution.htmlunverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.