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
azcopy --version
Verifique o pacote instalado no openSUSE
rpm -q azure-storage-azcopy
Ou, para mais detalhes:
zypper info azure-storage-azcopy
Verifique se há atualizações disponíveis
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.
#!/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 ==="
#!/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
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.
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:
# 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:
# 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:
# /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:
# Exemplo com socat (encaminhamento com validação básica)
socat TCP-LISTEN:8080,fork TCP:azure-storage-account.blob.core.windows.net:443Conclusão
- Verifique a versão do AzCopy com azcopy --version
- 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