Páginas

sábado, 20 de junho de 2026

Azure Storage AzCopy no openSUSE: Guia Completo de Segurança e Atualização

 



A vulnerabilidade CVE-2025-47907 no pacote azure-storage-azcopy para openSUSE pode comprometer a integridade dos seus dados. Aprenda a verificar, atualizar e mitigar este problema com comandos práticos, script de automação e estratégias de proteção para sistemas Linux. 


O que mudou no azure-storage-azcopy?

Em junho de 2026, a SUSE lançou o aviso de segurança SUSE-SU-2026:2466-1, atualizando o azure-storage-azcopy para a versão 10.32.4. Esta atualização corrige cinco vulnerabilidades, sendo a mais crítica a CVE-2025-47907, que afeta o pacote database/sql da linguagem Go.


O que é a CVE-2025-47907?

Esta vulnerabilidade ocorre quando uma query é cancelada (por exemplo, via cancelamento de contexto) durante a execução do método Scan em um objeto Rows. 

O resultado é uma condição de corrida (race condition) que pode sobrescrever os resultados esperados com dados de outra query paralela.

Impacto prático: Se você utiliza o AzCopy para transferir dados entre sistemas e armazenamento Azure, os dados podem ser corrompidos silenciosamente — você pode receber resultados de outra operação sem perceber o erro.


As outras vulnerabilidades corrigidas incluem:

  • CVE-2026-33186: Bypass de autorização no gRPC
  • CVE-2026-33814: Loop infinito no HTTP/2
  • CVE-2026-34986: DoS via JWE malicioso
  • CVE-2026-39821: Bypass de validação em domínios Punycode

Como verificar se você está vulnerável

Verifique a versão instalada do AzCopy
bash
azcopy --version

A versão segura é 10.32.4 ou superior

Verifique o pacote instalado no openSUSE

bash
rpm -q azure-storage-azcopy

Ou, para mais detalhes:

bash
zypper info azure-storage-azcopy

Verifique se há atualizações disponíveis

bash
zypper list-updates | grep azure-storage-azcopy

Verifique a versão do Go (se aplicável)

Como a vulnerabilidade está no database/sql da stdlib Go, verifique sua versão:


As versões corrigidas são Go 1.23.12 ou 1.24.6 e superiores


As versões corrigidas são Go 1.23.12 ou 1.24.6 e superiores.

bash
#!/bin/bash
# check-azcopy-vuln.sh - Verifica se o sistema está vulnerável à CVE-2025-47907

echo "=== Verificação de Vulnerabilidade CVE-2025-47907 ==="
echo ""

# Verifica versão do AzCopy
if command -v azcopy &> /dev/null; then
    AZCOPY_VER=$(azcopy --version 2>/dev/null | head -1 | grep -oP 'azcopy version \K[0-9.]+' || echo "desconhecida")
    echo "[AZCOPY] Versão instalada: $AZCOPY_VER"
    
    # Comparação semântica simples (versão segura >= 10.32.4)
    if [[ "$AZCOPY_VER" != "desconhecida" ]]; then
        MAJOR=$(echo $AZCOPY_VER | cut -d. -f1)
        MINOR=$(echo $AZCOPY_VER | cut -d. -f2)
        PATCH=$(echo $AZCOPY_VER | cut -d. -f3)
        if [[ $MAJOR -gt 10 ]] || [[ $MAJOR -eq 10 && $MINOR -gt 32 ]] || [[ $MAJOR -eq 10 && $MINOR -eq 32 && $PATCH -ge 4 ]]; then
            echo "[AZCOPY] ✅ Versão segura (>= 10.32.4)"
        else
            echo "[AZCOPY] ❌ Versão vulnerável (< 10.32.4)"
        fi
    fi
else
    echo "[AZCOPY] ⚠️  AzCopy não está instalado"
fi

echo ""

# Verifica pacote RPM
if rpm -q azure-storage-azcopy &> /dev/null; then
    PKG_VER=$(rpm -q azure-storage-azcopy --qf "%{VERSION}-%{RELEASE}")
    echo "[RPM] Pacote instalado: azure-storage-azcopy-$PKG_VER"
else
    echo "[RPM] ⚠️  Pacote azure-storage-azcopy não está instalado via RPM"
fi

echo ""

# Verifica versão do Go (se instalado)
if command -v go &> /dev/null; then
    GO_VER=$(go version | grep -oP 'go\K[0-9.]+')
    echo "[GO] Versão instalada: $GO_VER"
    
    # Go 1.23.12+ ou 1.24.6+ são seguros
    if [[ "$GO_VER" =~ ^1\.23\.[0-9]+$ ]]; then
        PATCH_VER=${GO_VER##*.}
        if [[ $PATCH_VER -ge 12 ]]; then
            echo "[GO] ✅ Versão segura (1.23.12+)"
        else
            echo "[GO] ❌ Versão vulnerável (1.23.x < 1.23.12)"
        fi
    elif [[ "$GO_VER" =~ ^1\.24\.[0-9]+$ ]]; then
        PATCH_VER=${GO_VER##*.}
        if [[ $PATCH_VER -ge 6 ]]; then
            echo "[GO] ✅ Versão segura (1.24.6+)"
        else
            echo "[GO] ❌ Versão vulnerável (1.24.x < 1.24.6)"
        fi
    else
        echo "[GO] ⚠️  Versão não reconhecida ou anterior à 1.23"
    fi
else
    echo "[GO] ⚠️  Go não está instalado"
fi

echo ""
echo "=== Fim da verificação ==="

Script de automação para aplicar a correção
bash
#!/bin/bash
# fix-azcopy-vuln.sh - Aplica a correção da CVE-2025-47907 no openSUSE

set -e

echo "=== Correção de Segurança - azure-storage-azcopy ==="
echo ""

# 1. Atualiza os repositórios
echo "[1/4] Atualizando repositórios..."
sudo zypper refresh

# 2. Verifica se a atualização está disponível
echo "[2/4] Verificando atualização disponível..."
if zypper list-updates | grep -q azure-storage-azcopy; then
    echo "✅ Atualização disponível"
else
    echo "⚠️  Nenhuma atualização encontrada. Verifique se os repositórios estão corretos."
    exit 1
fi

# 3. Aplica a atualização
echo "[3/4] Aplicando atualização..."
sudo zypper update -y azure-storage-azcopy

# 4. Verifica a instalação
echo "[4/4] Verificando versão instalada..."
INSTALLED_VER=$(rpm -q azure-storage-azcopy --qf "%{VERSION}")
echo "✅ Versão instalada: $INSTALLED_VER"

# Verifica se a versão é segura
if [[ "$INSTALLED_VER" == "10.32.4" ]] || [[ "$INSTALLED_VER" > "10.32.4" ]]; then
    echo "✅ Sistema atualizado e seguro contra CVE-2025-47907"
else
    echo "⚠️  A versão instalada ($INSTALLED_VER) pode ainda ser vulnerável"
fi

echo ""
echo "=== Correção concluída ==="

Como usar o script

bash
chmod +x fix-azcopy-vuln.sh
./fix-azcopy-vuln.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 a atualização imediatamente, aqui estão estratégias de mitigação:

Evite cancelamento de queries durante o Scan

A causa raiz da CVE-2025-47907 é o cancelamento de contexto durante a execução do Scan. Como mitigação temporária:


  • Não cancele queries enquanto estiver processando resultados com Rows.Scan

  • Gerencie contextos com cuidado, evitando concorrência entre queries

  • Implemente mecanismos de sincronização para queries paralelas


 Restrição de rede com iptables (se aplicável)

Se o AzCopy estiver exposto a redes não confiáveis, restrinja o acesso:

bash
# Permite apenas conexões locais para o AzCopy
sudo iptables -A OUTPUT -p tcp --dport 443 -m owner --uid-owner $(whoami) -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 443 -j DROP

Nota: Isso só é útil se você estiver preocupado com ataques remotos. A CVE-2025-47907 é uma vulnerabilidade de corrupção de dados, não um vetor de ataque remoto direto.

Monitore logs e integridade dos dados

Implemente verificações de integridade pós-transferência:

bash
# Exemplo: verificar hash dos arquivos transferidos
sha256sum /caminho/origem/arquivo.txt
sha256sum /caminho/destino/arquivo.txt

  Isolamento com AppArmor

Crie um perfil AppArmor para restringir o AzCopy:

text
# /etc/apparmor.d/usr.bin.azcopy
/usr/bin/azcopy {
    # Permissões mínimas necessárias
    /usr/bin/azcopy mr,
    /etc/azcopy/** r,
    /home/*/.azcopy/** rw,
    network inet stream,
    network inet6 stream,
    # ... outras permissões específicas
}

Use um proxy de aplicação

Se o AzCopy for usado em produção, considere um proxy que valide as respostas:

bash
# Exemplo com socat (encaminhamento com validação básica)
socat TCP-LISTEN:8080,fork TCP:azure-storage-account.blob.core.windows.net:443

Conclusão

A vulnerabilidade CVE-2025-47907 no azure-storage-azcopy é um lembrete importante sobre os riscos de condições de corrida em aplicações que lidam com dados críticos. 

A atualização para a versão 10.32.4 do pacote é a solução definitiva, mas enquanto isso não for possível, o gerenciamento cuidadoso de contextos e a implementação de verificações de integridade podem reduzir significativamente o risco.

Checklist de ação:

  • Atualize para azure-storage-azcopy-10.32.4 ou superior
  • Se usar Go diretamente, atualize para 1.23.12+ ou 1.24.6+
  • Revise seu código para evitar cancelamento de queries durante Rows.Scan
  • Implemente verificações de integridade pós-transferência




Nenhum comentário:

Postar um comentário