Páginas

domingo, 21 de junho de 2026

yggdrasil-worker-package-manager: Como identificar e corrigir a vulnerabilidade CVE-2026-32282 no Rocky Linux 10

 



A vulnerabilidade CVE-2026-32282 no yggdrasil-worker-package-manager permite que Root.Chmod siga symlinks fora da raiz em Rocky Linux 10. Aprenda a verificar, corrigir com scripts automatizados e aplicar mitigação alternativa mesmo sem atualização imediata. Guia prático para administradores de sistemas.


O que é essa vulnerabilidade e por que você precisa se preocupar


O yggdrasil-worker-package-manager é um componente que faz parte do ecossistema Yggdrasil — um daemon que se conecta a um broker MQTT e roteia dados para processos "workers" especializados. 

Este worker específico é responsável por instalar e remover pacotes, gerenciar repositórios e detectar o sistema operacional para escolher o gerenciador de pacotes adequado.

A vulnerabilidade CVE-2026-32282 (gravidade moderada, CVSS 6.4) afeta a função Root.Chmod da linguagem Go, que pode seguir symlinks para fora do diretório raiz. 

Em termos práticos: um processo com privilégios elevados pode, acidentalmente ou maliciosamente, alterar permissões de arquivos fora do chroot, comprometendo a integridade do sistema.

Quem está em risco: sistemas Rocky Linux 10 com o pacote yggdrasil-worker-package-manager em versões anteriores à 0.2.3-7.el10_2.


Como verificar se você está vulnerável

1. Verifique a versão do pacote instalado

bash
rpm -q yggdrasil-worker-package-manager

Se a versão retornada for anterior a 0.2.3-7.el10_2, seu sistema está vulnerável.

2. Verifique se o serviço está em execução

bash
systemctl status yggdrasil

3. Consulte o advisory oficial

bash
dnf updateinfo info RLSA-2026:25999

4. Verificação rápida com script

bash
#!/bin/bash
# check-yggdrasil-vuln.sh
PKG="yggdrasil-worker-package-manager"
FIXED="0.2.3-7.el10_2"
INSTALLED=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" $PKG 2>/dev/null)

if [ -z "$INSTALLED" ]; then
    echo "Pacote $PKG não está instalado."
    exit 0
fi

if [ "$INSTALLED" != "$FIXED" ] && [ "$INSTALLED" \< "$FIXED" ]; then
    echo "VULNERÁVEL: versão $INSTALLED (fix disponível em $FIXED)"
    exit 1
else
    echo "SEGURO: versão $INSTALLED"
    exit 0
fi

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


Este script atualiza o pacote e reinicia o serviço de forma segura:

bash
#!/bin/bash
# fix-yggdrasil-cve-2026-32282.sh
# Rocky Linux 10 - Correção para CVE-2026-32282

set -e

PKG="yggdrasil-worker-package-manager"
FIXED="0.2.3-7.el10_2"
LOG="/var/log/yggdrasil-update.log"
BACKUP_DIR="/root/yggdrasil-backup-$(date +%Y%m%d)"

echo "[$(date)] Iniciando correção CVE-2026-32282" | tee -a $LOG

# Verifica se é Rocky Linux 10
if ! grep -q "Rocky Linux release 10" /etc/rocky-release 2>/dev/null; then
    echo "ERRO: Este script é para Rocky Linux 10" | tee -a $LOG
    exit 1
fi

# Faz backup da configuração atual
mkdir -p $BACKUP_DIR
cp -r /etc/yggdrasil* $BACKUP_DIR/ 2>/dev/null || true
echo "Backup salvo em $BACKUP_DIR" | tee -a $LOG

# Verifica versão atual
CURRENT=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" $PKG 2>/dev/null)
echo "Versão atual: $CURRENT" | tee -a $LOG

if [ "$CURRENT" = "$FIXED" ]; then
    echo "Sistema já está corrigido." | tee -a $LOG
    exit 0
fi

# Atualiza o pacote
echo "Aplicando atualização..." | tee -a $LOG
dnf update -y $PKG 2>&1 | tee -a $LOG

# Verifica se a atualização foi bem-sucedida
NEW_VERSION=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" $PKG 2>/dev/null)
if [ "$NEW_VERSION" = "$FIXED" ] || [ "$NEW_VERSION" \> "$FIXED" ]; then
    echo "✓ Atualização aplicada com sucesso: $NEW_VERSION" | tee -a $LOG
else
    echo "✗ Falha na atualização. Versão atual: $NEW_VERSION" | tee -a $LOG
    exit 1
fi

# Reinicia o serviço
systemctl restart yggdrasil 2>/dev/null || echo "Serviço yggdrasil não encontrado ou não reiniciado" | tee -a $LOG
systemctl status yggdrasil --no-pager 2>/dev/null | head -5 | tee -a $LOG

echo "[$(date)] Correção concluída" | tee -a $LOG

Como executar:

bash
chmod +x fix-yggdrasil-cve-2026-32282.sh
sudo ./fix-yggdrasil-cve-2026-32282.sh

📗  Recomendação de Leitura


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

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 a atualização imediatamente, estas medidas reduzem o risco:


1. Restringir permissões do serviço

bash
# Impedir que o yggdrasil seja executado como root
sudo systemctl edit yggdrasil

Adicione ao arquivo:

text
[Service]
User=yggdrasil
Group=yggdrasil
PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=full

2. Bloquear acesso com iptables (se o serviço escutar rede)

bash
# Verificar portas em uso
sudo ss -tulpn | grep yggdrasil

# Bloquear acesso externo (exemplo para porta 1883 - MQTT)
sudo iptables -A INPUT -p tcp --dport 1883 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1883 -j DROP

3. Monitorar logs e alertas

bash
# Monitorar tentativas de acesso suspeito
sudo journalctl -u yggdrasil -f

4. Desabilitar temporariamente (se o serviço não for crítico)

bash
sudo systemctl stop yggdrasil
sudo systemctl disable yggdrasil


Conclusão


A vulnerabilidade CVE-2026-32282 no yggdrasil-worker-package-manager é um lembrete de que mesmo componentes com gravidade "moderada" merecem atenção. 

O problema — Root.Chmod seguir symlinks fora da raiz — pode parecer sutil, mas em sistemas críticos pode abrir brechas para escalonamento de privilégios.

Resumo das ações:


Mantenha seus sistemas atualizados e, sempre que possível, automatize verificações de segurança. 

Um script de monitoramento pode salvar seu ambiente antes que um atacante explore a falha.



Nenhum comentário:

Postar um comentário