FERRAMENTAS LINUX: Como Proteger Seus Hashes no Ubuntu: Entendendo e Corrigindo a Vulnerabilidade de Sal Fraco (CVE-2026-47372)

quinta-feira, 11 de junho de 2026

Como Proteger Seus Hashes no Ubuntu: Entendendo e Corrigindo a Vulnerabilidade de Sal Fraco (CVE-2026-47372)

 



Descubra como identificar e corrigir a vulnerabilidade de geração de salts fracos no Ubuntu (CVE-2026-47372). Guia completo com comandos, script de automação, mitigação alternativa e dicas para fortalecer a segurança de hashes. Aprenda a proteger seus sistemas agora mesmo.


Entendendo o Problema

Em junho de 2026, foi divulgada uma vulnerabilidade (CVE-2026-47372) na biblioteca libcrypt-saltedhash-perl, que afeta várias versões do Ubuntu – incluindo 16.04, 18.04, 20.04, 22.04, 24.04, 25.10 e 26.04 LTS. 

O problema está no uso da função rand do Perl para gerar salts de hashes, uma função não criptograficamente segura e, portanto, previsível.

Isso significa que um invasor pode prever os salts gerados, o que enfraquece drasticamente a proteção de senhas armazenadas, facilita ataques de dicionário e torna viável a criação de rainbow tables sob medida.

A boa notícia é que já existem atualizações disponíveis. Este guia mostra como verificar se você está vulnerável, corrigir o problema e, se necessário, adotar mitigações temporárias.


2. Como Verificar se Você Está Vulnerável

Execute os comandos abaixo no terminal do Ubuntu para determinar se sua versão do pacote requer correção.

2.1 Verificar a versão instalada

bash
# Exibe a versão exata do pacote
dpkg -l | grep libcrypt-saltedhash-perl

2.2 Verificar a política do pacote (mais detalhes)
bash
apt policy libcrypt-saltedhash-perl

2.3 Comparar com a versão corrigida

As versões não vulneráveis (fixadas) são as seguintes:


Se a versão instalada for igual ou superior à listada, seu sistema já está protegido.

2.4 Teste rápido de previsibilidade do salt (opcional)

Para sistemas com Perl instalado, você pode rodar o seguinte comando para verificar se o gerador de salts ainda usa rand:
bash
perl -MCrypt::SaltedHash -E 'say Crypt::SaltedHash->new->generate("test")'

Execute este comando várias vezes seguidas. Se os salts gerados parecerem repetitivos ou seguirem um padrão suspeito, o sistema está vulnerável.

3. Script de Automação para Aplicar a Correção

O script abaixo atualiza automaticamente o pacote vulnerável e valida se a correção foi aplicada corretamente. Ele é compatível com todas as versões do Ubuntu afetadas.

fix_crypt_saltedhash.sh

bash
#!/bin/bash
# Script de correção para CVE-2026-47372
# Compatível com Ubuntu 16.04+, incluindo versões com Ubuntu Pro

set -e  # Interrompe o script em caso de erro

echo "[*] Verificando versão atual do libcrypt-saltedhash-perl..."
current_version=$(dpkg -l | grep libcrypt-saltedhash-perl | awk '{print $3}')
echo "    Versão atual: $current_version"

echo "[*] Atualizando lista de pacotes..."
sudo apt update

echo "[*] Aplicando correção para o pacote vulnerável..."
sudo apt install --only-upgrade libcrypt-saltedhash-perl -y

new_version=$(dpkg -l | grep libcrypt-saltedhash-perl | awk '{print $3}')
echo "[*] Versão após atualização: $new_version"

# Validação da correção
if [[ "$new_version" > "$current_version" ]]; then
    echo "[✓] Pacote atualizado com sucesso. Seu sistema está protegido contra CVE-2026-47372."
else
    echo "[!] ATENÇÃO: O pacote não foi atualizado. Verifique se o Ubuntu Pro está habilitado para versões LTS antigas."
    echo "    Para versões 16.04, 18.04, 20.04, 22.04, 24.04 e 26.04, é necessário o Ubuntu Pro (gratuito para até 5 máquinas)."
fi

echo "[*] Teste rápido de geração de salt..."
perl -MCrypt::SaltedHash -E 'say Crypt::SaltedHash->new->generate("test")'

echo "[*] Correção concluída."


Como usar

1. Salve o conteúdo acima em um arquivo (ex.: fix_crypt_saltedhash.sh).

2. Torne o script executável:

  1. bash
    chmod +x fix_crypt_saltedhash.sh

3. Execute com privilégios de superusuário:

  1. bash
    sudo ./fix_crypt_saltedhash.sh

Observação importante: Para versões do Ubuntu que já saíram do suporte padrão (16.04, 18.04, 20.04, 22.04 e 24.04 – além de 26.04 LTS, que requer assinatura do Ubuntu Pro para receber a correção), a atualização está disponível apenas para assinantes do Ubuntu Pro, que é gratuito para até 5 máquinas.


📗  Recomendação de Leitura


Segurança em servidores Linux: Ataque e Defesa  (anúncio) -> https://amzn.to/4e12PgB

Se você prefere estudar em português e quer aprender a "pensar como um hacker" para se antecipar a invasões, essa é a pedida! O livro ensina a usar as ferramentas prediletas dos invasores (como Nmap e Netcat) a seu favor, blindando seus sistemas.

Eu ganho uma comissão quando você faz uma compra.


4. Mitigação Alternativa Caso Não Possa Atualizar Agora

Se por algum motivo você não puder aplicar a atualização imediatamente (ex.: fila de mudanças, ausência do Ubuntu Pro, dependências conflitantes), as seguintes medidas podem reduzir o risco até que a correção seja aplicada.

4.1 Restringir Acesso via iptables

Como a vulnerabilidade afeta principalmente sistemas que expõem serviços de autenticação (SSH, web com login, APIs), uma medida paliativa é bloquear o acesso externo a esses serviços, permitindo apenas IPs confiáveis.

Exemplo: permitir SSH apenas para a rede local (192.168.1.0/24) e bloquear qualquer outro acesso:

bash
# Limpar regras existentes na INPUT
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Permitir SSH apenas da rede local
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

# (Opcional) Bloquear tentativas de autenticação em web apps
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP

Nota: Essa medida não corrige o problema, apenas reduz a superfície de exposição. A correção definitiva continua sendo a atualização do pacote.

4.2 Utilizar AppArmor para Restringir o Interpretador Perl

Crie um perfil AppArmor restritivo para o Perl, limitando quais scripts podem acessar o módulo vulnerável.

Exemplo de perfil /etc/apparmor.d/usr.bin.perl (parcial):

text
/usr/bin/perl {
  # Permissões básicas
  /usr/bin/perl mr,
  /usr/lib/** rm,
  /etc/ld.so.cache r,
  /dev/urandom r,
  /dev/random r,

  # Bloqueia scripts não autorizados de usar Crypt::SaltedHash
  deny /path/to/scripts/** w,
}

Em seguida, ative o perfil:

bash
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.perl

Importante: Essa é uma solução complexa e deve ser aplicada apenas por administradores experientes. Não substitui a atualização.

4.3 Substituir a Geração de Salt por uma Fonte Segura

Se você mantém scripts Perl que usam Crypt::SaltedHash, pode modificar o código para usar Bytes::Random::Secure (ou Math::Random::Secure) para gerar salts criptograficamente seguros.

Exemplo de substituição:

perl
# Antes (vulnerável)
my $hashed = Crypt::SaltedHash->new->generate($password);

# Depois (seguro, usando Bytes::Random::Secure)
use Bytes::Random::Secure;
my $rng = Bytes::Random::Secure->new;
my $salt = $rng->bytes(8);   # 8 bytes = 64 bits de entropia

Essa mudança exige a instalação do módulo alternativo:

bash
sudo apt install libbytes-random-secure-perl

Conclusão

A vulnerabilidade CVE-2026-47372 nos lembra de um princípio básico de segurança: nunca confie em geradores de números aleatórios não criptográficos para proteção de senhas. Felizmente, a correção é simples e está disponível para todas as versões do Ubuntu (algumas exigem Ubuntu Pro, que é gratuito para até 5 máquinas).

  • Resumo das ações recomendadas:

  • Verifique sua versão do libcrypt-saltedhash-perl.

  • Atualize usando o script fornecido ou via apt upgrade.

  • Monitore logs e atividades suspeitas.

Adote boas práticas de segurança, inclusive com leituras complementares como o livro recomendado.

Proteger hashes é proteger o coração da autenticação do seu sistema. Não deixe para depois.


Nenhum comentário:

Postar um comentário