Partilhar via


Protocolo de Segurança de Metadados (MSP)

O Protocolo de Segurança de Metadados (MSP) é um recurso nos serviços Máquinas Virtuais do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais do Azure. Ele aprimora a segurança do Serviço de Metadados de Instância do Azure e dos serviços WireServer . Esses serviços estão disponíveis em máquinas virtuais (VMs) de infraestrutura como serviço (IaaS) do Azure ou conjuntos de dimensionamento de máquinas virtuais em 169.254.169.254 e 168.63.129.16, respectivamente.

As organizações usam o Instance Metadata Service e o WireServer para fornecer metadados e inicializar credenciais de VM. Como resultado, os agentes de ameaças frequentemente têm como alvo esses serviços. Vetores comuns incluem ataques de delegado confuso contra cargas de trabalho em modo convidado e fugas de sandbox. Estes vetores são de particular preocupação para cargas de trabalho hospedadas em nome de terceiros, onde o código não confiável é carregado na máquina virtual.

Com os serviços de metadata, a borda de confiança é a própria VM. Qualquer software dentro do convidado está autorizado a solicitar segredos do Instance Metadata Service e do WireServer. Os proprietários de VMs são responsáveis por testar cuidadosamente qualquer software que executem dentro da VM e garantir que os atores externos não possam exfiltrar dados. Na prática, a complexidade do problema leva a erros de escala, que, por sua vez, levam a explorações.

Embora existam inúmeras estratégias de defesa profunda, fornecer segredos sobre uma API HTTP não autenticada acarreta riscos inerentes. Em todo o setor, essa classe de vulnerabilidades afetou centenas de empresas, afetou milhões de indivíduos e causou perdas financeiras na casa das centenas de milhões de dólares.

O MSP elimina as vulnerabilidades mais comuns da seguinte forma:

  • Abordar a causa raiz desses ataques.
  • Introdução de conceitos de autenticação e autorização fortes para serviços de metadados na nuvem.

Compatibilidade

O MSP é suportado em VMs IaaS do Azure e conjuntos de dimensionamento de máquinas virtuais que executam estes sistemas operacionais:

  • Windows 10 ou posterior (x64)
  • Windows Server 2019 (x64)
  • Windows Server 2022 (x64)
  • Windows Server 2025 (x64)
  • Mariner 2.0 (x64, ARM64)
  • Azure Linux (Mariner 3.0) (x64, ARM64)
  • Ubuntu 20.04+ (x64, ARM64)

Os seguintes itens não são suportados no momento:

  • Red Hat Enterprise Linux 9+
  • Rocky Linux 9+
  • SUSE Linux Enterprise Server 15 SP4+
  • Discos efémeros
  • Compatibilidade com o Backup do Azure
  • ARM64

Segurança reforçada

O Guest Proxy Agent (GPA) protege contra esses tipos de ataques:

  • Limitar o acesso aos metadados a um subconjunto da VM (aplicando o princípio do acesso com privilégios mínimos).

  • Mudar de um modelo de abertura padrão para um modelo fechado por padrão .

    Por exemplo, com a virtualização aninhada, uma VM L2 mal configurada que tem acesso ao vNIC da VM L1 pode comunicar-se com um serviço de metadados como se fosse a L1. Com o GPA, um L2 mal configurado não poderia mais obter acesso, porque seria incapaz de autenticar com o serviço.

No momento do provisionamento, o serviço de metadados estabelece um delegado de confiança dentro do convidado (o GPA). Um segredo de longa duração é negociado para a autenticação com o delegado de confiança. O delegado deve endossar todas as solicitações para o serviço de metadados usando um código de autenticação de mensagem baseado em hash (HMAC). O HMAC estabelece uma relação de confiança ponta-a-ponta com autenticação robusta.

O GPA usa eBPF para intercetar solicitações HTTP para o serviço de metadados. O eBPF permite ao GPA verificar a identidade do software dentro do convidado que fez o pedido. O GPA utiliza o eBPF para interceptar pedidos sem necessitar de um módulo adicional do kernel. O GPA usa essas informações para comparar a identidade do cliente com uma lista de permissões definida como parte do modelo de VM no Azure Resource Manager (ARM). O GPA, então, aprova solicitações ao adicionar um cabeçalho de assinatura. Assim, você pode habilitar o recurso MSP em cargas de trabalho existentes sem interromper as alterações.

Por padrão, os níveis de autorização existentes são impostos:

  • O Serviço de Metadados de Instância está aberto a todos os usuários.
  • O WireServer é apenas root/admin.

Atualmente, esta restrição é realizada com regras de firewall no hóspede. Este ainda é um mecanismo aberto por padrão. Se essa regra puder ser desabilitada ou ignorada por qualquer motivo, o serviço de metadados ainda aceitará a solicitação. O mecanismo de autorização habilitado aqui é fechado por padrão. Contornar a intercepção maliciosamente ou por erro não concede acesso ao serviço de metadados.

Você pode configurar uma configuração de autorização avançada (ou seja, autorizar processos específicos em convidados e usuários a acessar apenas pontos de extremidade específicos) definindo uma lista de permissões personalizada com semântica RBAC (controle de acesso baseado em função).

Advertência

Observe que, no Windows, os usuários podem habilitar o GuestProxyAgent (GPA) a partir de um modelo ARM. No entanto, no Linux é um processo de duas etapas. A VM/VMSS é provisionada primeiro e só então o GPA pode ser configurado.