Use um script Python para acionar em lote varreduras de vulnerabilidades de emergência do Cloud Security Center em todas as contas membro do Resource Directory (RD). O script chama a API ModifyEmgVulSubmit e descobre automaticamente as contas por meio do RD, eliminando a necessidade de listas manuais.
Contexto
Sua organização gerencia 150 contas membro no RD. Uma vulnerabilidade de escalonamento de privilégios local (CVE-2021-4034) foi identificada no polkit pkexec, e sua equipe de segurança precisa avaliar imediatamente o impacto em todas as contas.
Abordagens manuais apresentam diversos problemas:
Resposta manual lenta: Fazer login em 150 contas individualmente leva horas. A janela de contenção pode se fechar antes da conclusão.
Lacunas na cobertura: Listas de contas mantidas manualmente tendem a omitir novos membros adicionados ao RD.
Riscos de automação: Scripts concorrentes sem limitação de API atingem os limites de taxa e causam falhas em lote.
Visibilidade fragmentada: Os resultados das varreduras ficam dispersos em contas individuais, sem uma visão unificada do status de vulnerabilidades em toda a organização.
Visão geral da solução
Um script Python executado na máquina local obtém todas as contas membro do RD e envia tarefas de varredura de vulnerabilidades de emergência pela API do Cloud Security Center. Após a conclusão das varreduras, visualize os resultados no painel do Agentic SOC.
O script autentica-se com o AccessKey de um usuário RAM e chama DescribeEmgVulItem para validar os nomes das vulnerabilidades. Em seguida, utiliza a API ListAccounts do RD para descobrir todas as contas membro e chama ModifyEmgVulSubmit para cada conta, enviando uma tarefa de varredura. Os resultados fluem para o SLS por meio do Agentic SOC, permitindo monitoramento centralizado.
Procedimento
Etapa 1: Configure o ambiente e as permissões
-
Verifique os seguintes pré-requisitos:
Uma conta Alibaba Cloud verificada como empresa com privilégios de administrador.
Cloud Security Center (edição Advanced ou superior) ativado em todas as contas membro do RD, com ingestão de logs do Agentic SOC configurada (Configuração de acesso).
Python 3.6 ou posterior instalado localmente.
-
Crie um usuário RAM (por exemplo,
VulnScanner) e conceda a ele as seguintes permissões:AliyunYundunSASFullAccess(Obrigatório): Concede acesso às APIs de varredura do Cloud Security Center. Este tópico utiliza uma política de sistema para validação rápida. Em produção, crie uma política personalizada que conceda apenas as permissões ModifyEmgVulSubmit e DescribeEmgVulItem.AliyunResourceDirectoryReadOnlyAccess(Recomendado): Permite a descoberta automática de todas as contas membro do RD. Sem essa permissão, liste os IDs das contas manualmente no arquivo de configuração.
-
Ative o acesso à OpenAPI e salve o AccessKey. Você precisará dele na Etapa 3: Execute a varredura.
ImportanteNunca utilize o AccessKey da sua conta Alibaba Cloud (conta raiz) para executar o script. Use sempre o AccessKey do usuário RAM dedicado criado acima e faça a rotação regularmente para minimizar o risco de vazamento de credenciais.
Etapa 2: Baixe o script e configure os parâmetros de varredura
-
Baixe os três arquivos a seguir para o seu diretório de trabalho:
scan_manager.py: Script principal. Itera pelas contas e chama a API de varredura para cada uma.config.ini: Arquivo de configuração. Especifica o endpoint do serviço, as vulnerabilidades alvo e os parâmetros de varredura.requirements.txt: Bibliotecas Python necessárias.
-
Abra o arquivo
config.inie defina os seguintes parâmetros:endpoint: Endpoint do serviço do Cloud Security Center correspondente à região onde seus ativos estão localizados. O script visa uma região por execução. Execute-o separadamente para cada região caso os ativos abranjam múltiplas regiões.scan_targets: Nomes das vulnerabilidades de emergência a serem verificadas, separados por vírgula. Copie os nomes diretamente da página Urgent Vulnerability no console. Na inicialização, o script chama DescribeEmgVulItem para converter os nomes de exibição nos nomes internos da API.max_qps: Taxa máxima de requisições à API em QPS. Padrão: 6, suficiente para a maioria dos cenários. Para taxas mais altas com grande volume de contas, solicite um aumento de cota no Quota Center.member_uids: IDs das contas membro a serem verificadas, separados por vírgula. Deixe este campo vazio se o usuário RAM tiver permissões de leitura no RD. O script descobrirá todas as contas automaticamente.
Etapa 3: Execute a varredura
-
Exporte o AccessKey do usuário RAM (criado na Etapa 1) como variáveis de ambiente.
export ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESSKEY_ID" export ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESSKEY_SECRET" -
Instale as dependências.
pip3 install -r requirements.txt -
Execute o script de varredura.
python3 scan_manager.pyO script exibe o progresso em tempo real. Exemplo de saída:
Querying the list of emergency vulnerabilities... ✅ 'polkit pkexec Local Privilege Escalation Vulnerability (CVE-2021-4034)' → emg_cve-2021-4034:EMG:AVD-2021-4034 ✅ Successfully matched 1 vulnerability ℹ️ 'member_uids' is empty, attempting to auto-discover member accounts from Resource Directory... ✅ Successfully discovered 150 member accounts from Resource Directory. Starting to process 1 vulnerability × 150 accounts = 150 scan tasks QPS is throttled at 6. Estimated time to completion: 25.0 seconds ✅ [1/150] Success: Vulnerability='polkit pkexec Local Privilege Escalation Vulnerability (CVE-2021-4034)', Account ID=198XXXXXXXXXXX13 (Current avg QPS: 5.8) ✅ [2/150] Success: Vulnerability='polkit pkexec Local Privilege Escalation Vulnerability (CVE-2021-4034)', Account ID=142XXXXXXXXXXX84 (Current avg QPS: 5.9) ✅ [3/150] Success: Vulnerability='polkit pkexec Local Privilege Escalation Vulnerability (CVE-2021-4034)', Account ID=188XXXXXXXXXXX97 (Current avg QPS: 5.7) ... ✅ [150/150] Success: Vulnerability='polkit pkexec Local Privilege Escalation Vulnerability (CVE-2021-4034)', Account ID=156XXXXXXXXXXX62 (Current avg QPS: 5.9) ================================================== Processing complete! Total time: 25.8 seconds Success: 150, Failures: 0, Total: 150 Actual avg QPS: 5.8 (Target QPS: 6) ==================================================
Etapa 4: Visualize os resultados da varredura
Faça login no console do Cloud Security Center como o usuário RAM. No painel de navegação à esquerda, escolha Agentic SOC > Log. Na lista de Logstores, selecione Standardized Log > Vulnerability Activity. Defina um intervalo de tempo que cubra a janela da varredura e clique em Search & Analyze.
Vulnerabilidades de emergência suportam apenas varredura, não remediação automatizada. Essas vulnerabilidades são detectadas em softwares instalados nos seus servidores. Siga as orientações de correção nos detalhes da vulnerabilidade para atualizar ou reconfigurar manualmente o software afetado.
Melhores práticas para ambientes de produção
Estabelecer varreduras rotineiras
Em vez de executar o script apenas após uma divulgação, agende execuções regulares para capturar novas vulnerabilidades automaticamente:
Configure uma tarefa crontab ou use o Agendador de Tarefas do Windows para executar o script diariamente.
Implante o script como uma função do Function Compute (FC) com um gatilho baseado em tempo para evitar a manutenção de um servidor dedicado.
Reforçar o gerenciamento de AccessKey
Rotação regular: Faça a rotação do AccessKey do usuário RAM a cada 90 dias para limitar a exposição em caso de comprometimento da chave.
Uso de funções RAM de instância: Se o script for executado em uma instância ECS, atribua uma função RAM de instância em vez de exportar um AccessKey para variáveis de ambiente.
Restrição de IPs de source: Adicione uma condição de IP à política RAM para aceitar chamadas de API apenas a partir da sua rede de operações.
Perguntas frequentes
As varreduras foram enviadas com sucesso, mas nenhum registro aparece no log de vulnerabilidades do Agentic SOC
Coleta de logs não ativada: No Agentic SOC, verifique se a opção de coleta de Vulnerability Activity está habilitada na página Log.
Varredura ainda em andamento: A chamada ModifyEmgVulSubmit apenas envia a tarefa de varredura. A execução real ocorre de forma assíncrona e pode levar de alguns minutos a dezenas de minutos, dependendo da quantidade de ativos.
Nenhuma vulnerabilidade detectada: O Log de Vulnerabilidades registra apenas vulnerabilidades encontradas. Se os ativos de uma conta membro não forem afetados, nenhuma entrada será gerada. Para confirmar, faça login na conta membro e verifique Risk Governance > Vulnerabilities > Urgent Vulnerability.
Logs de múltiplas contas não agregados: Os logs das contas membro devem ser agregados à conta de gerenciamento por meio do Agentic SOC. Verifique se o Cloud Security Center está ativado em todas as contas membro e se a integração centralizada de múltiplas contas foi concluída.
A resolução de nomes de vulnerabilidades falha com "No matching emergency vulnerability found"
Verifique se os nomes em scan_targets no arquivo config.ini correspondem exatamente aos exibidos na página Urgent Vulnerability do console do Cloud Security Center, incluindo parênteses e espaços. Copie os nomes diretamente do console para evitar erros.
Se o nome estiver correto, mas a resolução ainda falhar, a vulnerabilidade pode ter ultrapassado seu período de resposta de emergência e não estar mais disponível via DescribeEmgVulItem.