Páginas

sábado, 20 de junho de 2026

CVE-2026-4046 no glibc: o que você precisa saber sobre o crash remoto via iconv()

 



A vulnerabilidade crítica no glibc (CVE-2026-4046) permite derrubar aplicações remotamente via iconv() com conjuntos IBM1390/1399. Aprenda a verificar, corrigir e mitigar no SUSE Linux com comandos práticos, script de automação e soluções alternativas. Proteja seus sistemas agora.


O que é essa vulnerabilidade?

Em março de 2026, foi divulgada uma vulnerabilidade (CVE-2026-4046) na biblioteca GNU C Library (glibc), presente em praticamente todos os sistemas Linux. O problema está na função iconv(), responsável por converter texto entre diferentes codificações de caracteres.

Ao processar entradas especialmente criadas nos conjuntos de caracteres IBM1390 ou IBM1399, a função dispara uma falha de asserção (assert()) e derruba a aplicação. O pior: um atacante remoto não autenticado pode explorar isso pela rede, sem necessidade de privilégios ou interação do usuário. 

Na prática, qualquer serviço que use iconv() para converter textos desses codificações pode ser derrubado com uma única requisição maliciosa.

A gravidade é alta: CVSS 7.5 (escala 3.1) e 8.7 (escala 4.0)


Como verificar se você está vulnerável


Antes de aplicar qualquer correção, descubra se seu sistema SUSE está exposto.

1. Verifique a versão do glibc instalada

bash
rpm -q glibc

Se a versão for anterior a 2.11.3-17.110.55.1 (para SUSE Linux Enterprise Server 11 SP4), você está vulnerável.

2. Veja se os conjuntos IBM1390/1399 estão disponíveis

bash
iconv -l | grep -E "IBM1390|IBM1399"

Se o comando retornar algo como IBM1390 ou IBM1399, seu sistema tem os conjuntos de caracteres problemáticos.

3. Teste rápido (opcional, use com cautela)

bash
echo "teste" | iconv -f IBM1390 -t UTF-8 2>&1

Se o comando travar ou retornar erro de asserção, o sistema está vulnerável.

4. Verifique se há atualizações disponíveis

bash
zypper list-patches | grep -i glibc

Ou, para ver diretamente:
bash
zypper info glibc

Script de automação para aplicar a correção

Salve o script abaixo como fix-cve-2026-4046.sh e execute com sudo:

bash
#!/bin/bash
# fix-cve-2026-4046.sh
# Script para corrigir CVE-2026-4046 no SUSE Linux
# Compatível com SUSE Linux Enterprise Server 11 SP4 e derivados

set -e

echo "[+] Verificando versão atual do glibc..."
CURRENT=$(rpm -q glibc --qf "%{VERSION}-%{RELEASE}")
echo "    Versão atual: $CURRENT"

echo "[+] Verificando patches disponíveis..."
zypper refresh

echo "[+] Aplicando atualização do glibc..."
zypper patch --cve CVE-2026-4046

echo "[+] Verificando se os conjuntos IBM1390/1399 ainda estão presentes..."
if iconv -l 2>/dev/null | grep -qE "IBM1390|IBM1399"; then
    echo "[!] ATENÇÃO: Os conjuntos IBM1390/1399 ainda estão disponíveis."
    echo "[!] Considere removê-los se não forem necessários (veja seção de mitigação)."
else
    echo "[+] Conjuntos IBM1390/1399 não encontrados. Sistema seguro."
fi

echo "[+] Versão do glibc após atualização:"
rpm -q glibc

echo "[+] Concluído!"

Para executar:
bash
chmod +x fix-cve-2026-4046.sh
sudo ./fix-cve-2026-4046.sh

📗  Recomendação de Leitura


Segurança em servidores Linux: Ataque e Defesa  (anúncio) ->  https://link.amazon/B0gMOJEFt


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.


Mitigação alternativa caso não possa atualizar agora


Se você não puder aplicar o patch imediatamente, existem medidas temporárias:

Opção 1: Remover os conjuntos de caracteres problemáticos


Esta é a mitigação mais simples e eficaz, recomendada por diversas distribuições.

bash
# Localize os arquivos dos conjuntos IBM1390 e IBM1399
find /usr/lib*/gconv -name "*IBM1390*" -o -name "*IBM1399*" 2>/dev/null

# Faça um backup antes de remover
sudo mkdir -p /root/gconv_backup
sudo cp /usr/lib*/gconv/IBM1390.so /root/gconv_backup/ 2>/dev/null || true
sudo cp /usr/lib*/gconv/IBM1399.so /root/gconv_backup/ 2>/dev/null || true

# Remova os arquivos
sudo rm -f /usr/lib*/gconv/IBM1390.so /usr/lib*/gconv/IBM1399.so 2>/dev/null

# Atualize o cache do gconv
sudo /usr/sbin/build-locale-archive 2>/dev/null || true


Atenção: remova apenas se sua aplicação não depender desses conjuntos de caracteres. Em 99% dos casos, sistemas modernos não os utilizam.


Opção 2: Bloquear tráfego suspeito com iptables (caso o serviço seja HTTP/HTTPS)

Se você sabe qual serviço está exposto (ex.: Apache, Nginx, aplicação Java), pode bloquear requisições que contenham padrões suspeitos:

bash
# Exemplo: bloquear pacotes com padrões relacionados (ajuste conforme seu serviço)
sudo iptables -I INPUT -p tcp --dport 80 -m string --string "IBM1390" --algo bm -j DROP
sudo iptables -I INPUT -p tcp --dport 80 -m string --string "IBM1399" --algo bm -j DROP

Limitação: isso só funciona para tráfego não criptografado e não cobre todos os cenários.


Opção 3: Restringir com AppArmor

Crie um perfil AppArmor para o serviço vulnerável, restringindo o acesso aos módulos gconv:

text
# Exemplo de regra para o perfil do serviço
deny /usr/lib*/gconv/IBM1390.so r,
deny /usr/lib*/gconv/IBM1399.so r,

Conclusão


O CVE-2026-4046 é uma vulnerabilidade séria no glibc que pode derrubar aplicações remotamente. A correção oficial já está disponível para SUSE Linux Enterprise Server 11 SP4 e outras distribuições. 

O passo mais importante é aplicar o patch o quanto antes. Se não for possível, remova os conjuntos IBM1390 e IBM1399 – é uma mitigação simples e altamente eficaz.

Mantenha seus sistemas atualizados, documente seus procedimentos de segurança e, sempre que possível, automatize a aplicação de patches. A segurança não é um destino, é um processo contínuo.

Nenhum comentário:

Postar um comentário