← voltar
CVE-2017-7494criticalsob ataqueransomwareCWE-94

CVE-2017-7494

100Vexday Risk Score

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

ssvc Actcvss 9.8epss 99%
da publicação à arma0 dias
Publicada no NVD30 de mai.
1ª PoC24 de mai.
metasploit24 de mar.
CISA KEV+2130d
probabilidade de exploração
99%top 1% das CVEs
exploração observada
simCISA + VulnCheck
39 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2023-04-20

Apply updates per vendor instructions.

Resumo

Falha de execução remota de código no Samba que permite a um cliente com permissão de escrita em um compartilhamento fazer o processo smbd carregar e executar uma biblioteca compartilhada (.so) arbitrária, geralmente com privilégios de root. Ficou conhecida como "SambaCry" por seu paralelo com o EternalBlue explorado pelo WannaCry, e afetou praticamente qualquer servidor Samba com um share gravável exposto — incluindo um número grande de NAS domésticos e corporativos que nunca recebem patch.

Detalhamento técnico

O smbd expõe pipes nomeados internos (a interface que implementa chamadas RPC sobre SMB). Um dos parâmetros dessa interface é usado para localizar e carregar, via dlopen(), um módulo compartilhado do próprio Samba. O problema é que o Samba não sanitizava adequadamente o caminho fornecido nesse parâmetro: um cliente podia enviar, através de uma requisição de pipe, um caminho arbitrário no sistema de arquivos do servidor, incluindo um caminho dentro de um compartilhamento SMB no qual ele mesmo tivesse acabado de escrever um arquivo.

O fluxo de ataque é conceitualmente simples: o cliente grava um arquivo de biblioteca compartilhada (.so) em qualquer compartilhamento onde tenha permissão de escrita, e então, através de uma chamada RPC específica, instrui o smbd a tratar aquele arquivo como um módulo interno e carregá-lo. Como o smbd normalmente roda como root (ou com privilégios elevados em várias distribuições e appliances), o código dentro da .so é executado com esses privilégios no momento do dlopen().

Classifica-se como CWE-427 (Uncontrolled Search Path Element) / neutralização insuficiente de entrada usada em caminho de carregamento de módulo. A causa raiz está na ausência de restrição do caminho a diretórios de módulos confiáveis do próprio Samba — o servidor confiava implicitamente no valor fornecido pelo cliente via protocolo.

A falha existe desde a versão 3.5.0, o que significa mais de sete anos de código exposto antes da correção pública em maio de 2017.

Como é explorada

O pré-requisito real é acesso de escrita a algum compartilhamento SMB do servidor vulnerável. A Red Hat descreve o cenário como "cliente autenticado com acesso de escrita ao share", mas a exploração prática que tornou o CVE tão impactante independe de credenciais fortes: em muitas instalações — sobretudo dispositivos NAS e appliances com Samba embarcado — existem shares com acesso de convidado (guest) gravável, o que reduz o pré-requisito a simplesmente alcançar a porta SMB (445/139) na rede, sem senha alguma. Isso explica por que dispositivos de borda e storage doméstico foram os mais afetados na exploração em massa observada em 2017.

O ataque não exige interação do usuário nem bypass de autenticação — é uma cadeia de duas etapas (upload do arquivo + chamada RPC que aponta para ele), sem necessidade de heap grooming, bypass de ASLR ou técnicas de exploração de memória. Isso o torna trivial de automatizar, e de fato módulos Metasploit e PoCs públicas circularam dias após a divulgação.

A vulnerabilidade está no catálogo KEV da CISA como exploração confirmada, e o EPSS próximo de 1.0 reflete que praticamente qualquer scanner de internet ainda testa esse vetor. O resultado final da exploração é execução de código arbitrário no contexto do processo smbd, tipicamente root em sistemas Linux/Unix, o que equivale a comprometimento total do host.

Versões

Afetadas
Samba 3.5.0 até (mas não incluindo) 4.6.4, 4.5.10 e 4.4.14 — ou seja, todas as versões 4.6.x anteriores à 4.6.4, todas as 4.5.x anteriores à 4.5.10 e todas as 4.4.x anteriores à 4.4.14, além de toda a linha 3.5.x a 4.3.x.
Corrigidas em
Samba 4.6.4, 4.5.10 e 4.4.14 (upstream). Backports de distribuição incluem samba3x-3.6.23-14.el5_11 (RHEL 5 ELS), samba4-4.2.10-10.el6_9 (RHEL 6), pacotes samba do RHSA-2017:1270 para RHEL 6/7, e samba-4.4.6-5.el7rhgs / samba-4.4.6-5.el6rhs para Red Hat Gluster Storage 3.2 (RHSA-2017:1273).

Como se proteger

A correção definitiva é atualizar para Samba 4.6.4, 4.5.10 ou 4.4.14 (ou versões de branches mais novos que os incorporam), dependendo do ramo em uso. Distribuições enterprise publicaram backports próprios (RHEL 5/6/7 via samba3x, samba4 e samba, conforme RHSA-2017:1270/1271/1272/1273/1390); usar o pacote da distro corrigido resolve sem precisar compilar upstream.

Quando a atualização não é viável de imediato, o paliativo reconhecido pelo próprio projeto Samba é adicionar `nt pipe support = no` à seção [global] do smb.conf e reiniciar o smbd — isso desativa o suporte a alguns pipes nomeados usados por clientes Windows para funções administrativas remotas, então quebra funcionalidades como alteração remota de senha via ferramentas administrativas Windows. É mitigação real, não cosmética, mas tem custo funcional que precisa ser avaliado. Outra camada eficaz e de baixo custo é garantir que nenhum compartilhamento aceite escrita anônima/guest e restringir acesso à porta 445/139 por firewall a hosts que realmente precisam de SMB.

O que não funciona como mitigação: apenas restringir permissões de leitura no share não resolve, porque o vetor depende de escrita, não de leitura — o controle tem que estar na permissão de escrita e no acesso de rede. Desabilitar SMBv1 também não mitiga essa falha, já que o problema está na camada de RPC sobre pipes nomeados, não na versão do protocolo SMB.

Como detectar

Em logs do smbd, procurar por conexões que gravam arquivos com extensão .so (ou nomes disfarçados) em compartilhamentos, seguidas por requisições de pipe nomeado incomuns apontando para o caminho desse arquivo — essa sequência escrita-seguida-de-chamada-RPC-para-o-mesmo-caminho é o padrão característico do ataque. Ferramentas de detecção de rede podem sinalizar tráfego SMB com nomes de pipe fora do conjunto padrão do Windows/Samba.

Não há assinatura de payload única confiável, porque a exploração é uma chamada de protocolo legítima usada de forma abusiva — qualquer detecção depende de correlacionar a escrita do arquivo com a chamada RPC subsequente, não de inspecionar conteúdo malicioso óbvio. Hosts sem atualização e com histórico de exposição da porta 445 à internet devem ser tratados como potencialmente comprometidos, dado o volume de exploração automatizada registrada desde 2017.

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.
Samba since version 3.5.0 and before 4.6.4, 4.5.10 and 4.4.14 is vulnerable to remote code execution vulnerability, allowing a malicious client to upload a shared library to a writable share, and then cause the server to load and execute it.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
Samba · samba
PoCs públicas encontradas39 VexDay Proof
exploitdbVexDay Proofwww.exploit-db.com/exploits/42060exploitdbVexDay Proofwww.exploit-db.com/exploits/42084githubgithub.com/opsxcq/exploit-CVE-2017-7494381githubgithub.com/joxeankoret/CVE-2017-7494259githubgithub.com/betab0t/cve-2017-7494181githubgithub.com/Waffles-2/SambaCry63githubgithub.com/brianwrf/SambaHunter57githubgithub.com/d3fudd/CVE-2017-7494_SambaCry7githubgithub.com/0xm4ud/noSAMBAnoCRY-CVE-2017-74946githubgithub.com/I-Rinka/BIT-EternalBlue-for-macOS_Linux4githubgithub.com/Zer0d0y/Samba-CVE-2017-74941githubgithub.com/00mjk/exploit-CVE-2017-74941githubgithub.com/FelipeR-UFBA/cve-2017-7494-fixed0githubgithub.com/sudlit/CVE-2017-74940githubgithub.com/Zanex360/cdt-samba-deploy0githubgithub.com/Zanex360/cdt-vulnsamba-deploy0githubgithub.com/Sadz1d/IS0githubgithub.com/adjaliya/-CVE-2017-7494-Samba-Exploit-POC0githubgithub.com/homjxi0e/CVE-2017-74940githubgithub.com/john-80/cve-2017-74940githubgithub.com/Hansindu-M/CVE-2017-7494_IT191153440githubgithub.com/cved-sources/cve-2017-74940githubgithub.com/incredible1yu/CVE-2017-74940vulncheckvulncheck.com/xdb/6b2fdeea9b0enão verificadovulncheckvulncheck.com/xdb/57e3c5583e71não verificadovulncheckvulncheck.com/xdb/5febf3930e17não verificadovulncheckvulncheck.com/xdb/710d63d67bednão verificadovulncheckvulncheck.com/xdb/5192c6b266c3não verificadovulncheckvulncheck.com/xdb/d60f0bdd37canão verificadovulncheckvulncheck.com/xdb/e6971e9715d0não verificadovulncheckvulncheck.com/xdb/03f724914e5dnão verificadovulncheckvulncheck.com/xdb/0e1687dfba66não verificadovulncheckvulncheck.com/xdb/874bfa3f41ccnão verificadovulncheckvulncheck.com/xdb/6095b3679d4fnão verificadovulncheckvulncheck.com/xdb/dd7a3ba13630não verificadocve_referencewww.exploit-db.com/exploits/42060/não verificadocve_referencewww.exploit-db.com/exploits/42084/não verificadovulncheckvulncheck.com/xdb/e8c24424c9d0não verificadovulncheckvulncheck.com/xdb/b4a79e992993nã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.