Sobre a detecção de ameaças do GKE


Esta página descreve como verificar se há ameaças ativas nos clusters qualificados do GKE usando a detecção de ameaças do GKE no painel de postura de segurança do GKE. O painel de postura de segurança do GKE permite ativar vários recursos de verificação e auditoria em clusters qualificados do GKE e exibe recomendações acionáveis para ajudar você a resolver problemas de segurança. Esta página explica como a detecção de ameaças do GKE funciona, quais regras predefinidas ela usa, as limitações e como ativá-la.

Esta página é destinada a especialistas em segurança que querem implementar soluções próprias de detecção de vulnerabilidades. Para saber mais sobre papéis comuns e exemplos de tarefas referenciados no conteúdo do Google Cloud , consulte Papéis e tarefas de usuário comuns do GKE Enterprise.

Antes de ler esta página, confira a visão geral do painel de situação de segurança. A detecção de ameaças do GKE é um recurso do painel de postura de segurança.

Como funciona

A detecção de ameaças do GKE é um recurso avançado do painel de postura de segurança do GKE que está disponível para os usuários do GKE Enterprise. Quando seus clusters do GKE são registrados em uma frota, a detecção de ameaças do GKE avalia seus registros de auditoria do GKE no Cloud Logging em relação a um conjunto de regras predefinidas para ameaças a clusters e cargas de trabalho. Se uma ameaça for encontrada, você verá uma descoberta no painel de postura de segurança do GKE com uma descrição da ameaça, o possível impacto e as ações recomendadas para mitigá-la.

Todos os clusters do GKE registrados em toda a frota são verificados continuamente em busca de ameaças ativas. Classificamos as ameaças detectadas usando as táticas MITRE ATT&CK®.

A detecção de ameaças do GKE é feita pelo serviço de detecção de ameaças a eventos do Security Command Center. No painel de postura de segurança do GKE, apenas o subconjunto de regras que se aplicam ao GKE é avaliado.

Recursos de postura de segurança do GKE incluídos

A detecção de ameaças do GKE está incluída no nível avançado de verificação de postura de segurança do Kubernetes. Ao ativar a detecção de ameaças do GKE em um cluster, você também ativa os seguintes recursos de verificação:

Uso como parte de uma estratégia de segurança ampla

A detecção de ameaças do GKE é um dos vários produtos de observabilidade de segurança que precisam ser usados no seu ambiente. Recomendamos que você use outros recursos do painel de postura de segurança do GKE, como a verificação de vulnerabilidades, para garantir que esteja monitorando seus clusters em busca de diversos problemas de segurança. Para mais informações, consulte Sobre o painel de postura de segurança na documentação do GKE.

Também recomendamos que você implemente o máximo possível de medidas de segurança em Aumente a segurança do cluster nos seus clusters e cargas de trabalho.

Preços

O GKE Threat Detection é oferecido sem custo financeiro adicional pelo GKE Enterprise.

Regras predefinidas de detecção de ameaças do GKE

Na tabela a seguir, descrevemos as regras de avaliação em que o GKE Threat Detection avalia seus registros de auditoria do GKE:

Nome de exibição Nome da API Tipos de origem do registro Descrição
Evasão de defesa: implantação forçada da carga de trabalho criada (pré-lançamento) BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_CREATE Registros de auditoria do Cloud:
Registros de atividade do administrador
Detecta a implantação de cargas de trabalho implantadas usando a flag de acesso imediato para modificar os controles da autorização binária.
Evasão de defesa: implantação forçada da carga de trabalho atualizada (pré-lançamento). BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_UPDATE Registros de auditoria do Cloud:
Registros de atividade do administrador
Detecta quando as cargas de trabalho são atualizadas usando a flag de implantação forçada para modificar os controles da autorização binária.
Descoberta: pode receber verificações de objetos sensíveis do Kubernetes. GKE_CONTROL_PLANE_CAN_GET_SENSITIVE_OBJECT Registros de auditoria do Cloud:
Registros de acesso a dados do GKE

Uma pessoa mal-intencionada tentou determinar quais objetos sensíveis no GKE eles podem consultar usando o comando kubectl auth can-i get. Especificamente, a regra detecta se a pessoa verificou o acesso à API nos seguintes objetos:

Escalonamento de privilégios: mudanças em objetos sensíveis com RBAC do Kubernetes. GKE_CONTROL_PLANE_EDIT_SENSITIVE_RBAC_OBJECT Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Para escalonar o privilégio, um usuário possivelmente mal-intencionado tentou modificar um objeto de controle de acesso baseado em papel (RBAC) ClusterRole, RoleBinding ou ClusterRoleBinding do papel sensível cluster-admin usando uma solicitação PUT ou PATCH.
Escalonamento de privilégios: crie uma CSR do Kubernetes para o certificado mestre. GKE_CONTROL_PLANE_CSR_FOR_MASTER_CERT Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Um usuário possivelmente malicioso criou uma solicitação de assinatura de certificado (CSR) mestre do Kubernetes, o que concede a ele acesso cluster-admin.
Escalonamento de privilégios: criação de vinculações sensíveis do Kubernetes. GKE_CONTROL_PLANE_CREATE_SENSITIVE_BINDING Registros de auditoria do Cloud:
Registros de auditoria da atividade do administrador do IAM
Para escalonar o privilégio, um usuário possivelmente mal-intencionado tentou criar um novo objeto RoleBinding ou ClusterRoleBinding para o papel cluster-admin.
Escalonamento de privilégios: receba a CSR do Kubernetes com credenciais de inicialização comprometidas. GKE_CONTROL_PLANE_GET_CSR_WITH_COMPROMISED_BOOTSTRAP_CREDENTIALS Registros de auditoria do Cloud:
Registros de acesso a dados do GKE
Uma pessoa mal-intencionada consultou uma solicitação de assinatura de certificado (CSR), com o comando kubectl, usando credenciais de inicialização comprometida.
Escalonamento de privilégios: lançamento de contêiner com privilégios do Kubernetes. GKE_CONTROL_PLANE_LAUNCH_PRIVILEGED_CONTAINER Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE

Uma pessoa possivelmente mal-intencionada criou um pod com contêineres privilegiados ou contêineres com recursos de escalonamento de privilégios.

Um contêiner privilegiado tem o campo privileged definido como true. Um contêiner com recursos de escalonamento de privilégios tem o campo allowPrivilegeEscalation definido como true. Para mais informações, consulte a referência da API SecurityContext v1 core na documentação do Kubernetes.

Acesso credencial: segredos acessados no namespace do Kubernetes SECRETS_ACCESSED_IN_KUBERNETES_NAMESPACE Registros de auditoria do Cloud:
Registros de acesso a dados do GKE
Detecta quando secrets ou tokens de conta de serviço são acessados por uma conta de serviço no namespace atual do Kubernetes.
Acesso inicial: recurso anônimo do GKE criado na Internet (pré-lançamento) GKE_RESOURCE_CREATED_ANONYMOUSLY_FROM_INTERNET Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Detecta eventos de criação de recursos de usuários da Internet efetivamente anônimos.
Acesso inicial: recurso do GKE modificado anonimamente pela Internet (pré-lançamento) GKE_RESOURCE_MODIFIED_ANONYMOUSLY_FROM_INTERNET Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Detecta eventos de manipulação de recursos de usuários da Internet efetivamente anônimos.
Escalonamento de privilégios: usuários efetivamente anônimos receberam acesso ao cluster do GKE (pré-lançamento) GKE_ANONYMOUS_USERS_GRANTED_ACCESS Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE

Alguém criou uma vinculação do RBAC que faz referência a um dos seguintes usuários ou grupos:

  • system:anonymous
  • system:unauthenticated
  • system:authenticated

Esses usuários e grupos são efetivamente anônimos e devem ser evitados ao criar vinculações de papéis ou de funções de cluster para qualquer papel do RBAC. Verifique se a vinculação é necessária. Se não for necessário, remova a vinculação.

Execução: execução ou anexamento suspeito a um pod do sistema (pré-lançamento) GKE_SUSPICIOUS_EXEC_ATTACH Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém usou os comandos exec ou attach para receber um shell ou executar um comando em um contêiner em execução no namespace kube-system. Esses métodos às vezes são usados para fins legítimos de depuração. No entanto, o namespace kube-system é destinado a objetos do sistema criados pelo Kubernetes, e a execução de comandos ou a criação de shells inesperadas precisa ser analisada.
Escalonamento de privilégios: carga de trabalho criada com uma montagem de caminho de host sensível (pré-lançamento) GKE_SENSITIVE_HOSTPATH Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou uma carga de trabalho que contém uma montagem de volume hostPath para um caminho confidencial no sistema de arquivos do nó host. O acesso a esses caminhos no sistema de arquivos do host pode ser usado para acessar informações privilegiadas ou sensíveis no nó e para escapar do contêiner. Se possível, não permita volumes hostPath no cluster.
Escalonamento de privilégios: carga de trabalho com shareProcessNamespace ativado (pré-lançamento). GKE_SHAREPROCESSNAMESPACE_POD Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém implantou uma carga de trabalho com a opção shareProcessNamespace definida como true, permitindo que todos os contêineres compartilhem o mesmo namespace de processo do Linux. Isso pode permitir que um contêiner não confiável ou comprometido aumente privilégios acessando e controlando variáveis de ambiente, memória e outros dados sensíveis de processos executados em outros contêineres.
Escalonamento de privilégios: ClusterRole com verbos privilegiados (pré-lançamento) GKE_CLUSTERROLE_PRIVILEGED_VERBS Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou uma ClusterRole do RBAC que contém os verbos bind, escalate ou impersonate. Um sujeito vinculado a uma função com esses verbos pode se passar por outros usuários com privilégios mais altos, se vincular a outros Roles ou ClusterRoles que contêm permissões adicionais ou modificar as próprias permissões de ClusterRole. Isso pode fazer com que esses indivíduos ganhem privilégios de administrador do cluster.
Escalonamento de privilégios: ClusterRoleBinding para função privilegiada (pré-lançamento) GKE_CRB_CLUSTERROLE_AGGREGATION_CONTROLLER Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou uma ClusterRoleBinding do RBAC que faz referência à system:controller:clusterrole-aggregation-controller ClusterRole padrão. Esse ClusterRole padrão tem o verbo escalate, que permite aos sujeitos modificar os privilégios das próprias funções, o que permite o escalonamento de privilégios.
Evasão de defesa: solicitação de assinatura de certificado (CSR) excluída manualmente (pré-lançamento) GKE_MANUALLY_DELETED_CSR Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém excluiu manualmente uma solicitação de assinatura de certificado (CSR, na sigla em inglês). Os CSRs são removidos automaticamente por um controlador de coleta de lixo, mas agentes mal-intencionados podem excluí-los manualmente para evitar a detecção. Se a CSR excluída era de um certificado aprovado e emitido, o usuário potencialmente malicioso agora tem um método de autenticação adicional para acessar o cluster. As permissões associadas ao certificado variam dependendo do assunto incluído, mas podem ser altamente privilegiadas. O Kubernetes não permite a revogação de certificados.
Acesso às credenciais: falha na tentativa de aprovar a solicitação de assinatura de certificado (CSR) do Kubernetes (Pré-lançamento) GKE_APPROVE_CSR_FORBIDDEN Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém tentou aprovar manualmente uma solicitação de assinatura de certificado (CSR), mas a ação falhou. A criação de um certificado para autenticação de cluster é um método comum de acesso persistente a um cluster comprometido. As permissões associadas ao certificado variam dependendo do assunto incluído, mas podem ser altamente privilegiadas.
Acesso às credenciais: solicitação de assinatura de certificado (CSR) do Kubernetes aprovada manualmente (Visualização) GKE_CSR_APPROVED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém aprovou manualmente uma solicitação de assinatura de certificado (CSR, na sigla em inglês). A criação de um certificado para autenticação de cluster é um método comum de acesso persistente a um cluster comprometido. As permissões associadas ao certificado variam dependendo do assunto incluído, mas podem ser altamente privilegiadas.
Execução: pod do Kubernetes criado com possíveis argumentos de shell reverso (pré-lançamento). GKE_REVERSE_SHELL_POD Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou um pod com comandos ou argumentos geralmente associados a um shell reverso. Os invasores usam shells reversos para expandir ou manter o acesso inicial a um cluster e executar comandos arbitrários.
Evasão de defesa: possível mascaramento de pods do Kubernetes (pré-lançamento) GKE_POD_MASQUERADING Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém implantou um pod com uma convenção de nomenclatura semelhante às cargas de trabalho padrão que o GKE cria para a operação normal do cluster. Essa técnica é chamada de mascaramento.
Escalonamento de privilégios: nomes de contêiner do Kubernetes suspeitos: exploração e escape (Visualização) GKE_SUSPICIOUS_EXPLOIT_POD Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém implantou um pod com uma convenção de nomenclatura semelhante a ferramentas comuns usadas para escapar de contêineres ou para executar outros ataques no cluster.
Impacto: nomes de contêineres do Kubernetes suspeitos: mineração de moedas (Visualização) GKE_SUSPICIOUS_CRYPTOMINING_POD Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém implantou um pod com uma convenção de nomenclatura semelhante a dos mineradores de moedas de criptomoedas comuns. Isso pode ser uma tentativa de um invasor que obteve acesso inicial ao cluster para usar os recursos dele na mineração de criptomoedas.
Execução: carga de trabalho acionada em namespace sensível (pré-lançamento) GKE_SENSITIVE_NAMESPACE_WORKLOAD_TRIGGERED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém implantou uma carga de trabalho (por exemplo, um pod ou uma implantação) nos namespaces kube-system ou kube-public. Esses namespaces são essenciais para as operações do cluster do GKE, e cargas de trabalho não autorizadas podem comprometer a estabilidade ou a segurança do cluster.
Execução: lançamento do contêiner com recursos excessivos do GKE (pré-lançamento) GKE_EXCESSIVELY_CAPABLE_CONTAINER_CREATED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou um contêiner com um ou mais dos seguintes recursos em um cluster com um contexto de segurança elevado:
  • CAP_SYS_MODULE
  • CAP_SYS_RAWIO
  • CAP_SYS_PTRACE
  • CAP_SYS_BOOT
  • CAP_DAC_READ_SEARCH
  • CAP_NET_ADMIN
  • CAP_BPF
Esses recursos podem ser usados para escapar de contêineres. Tenha cuidado ao provisionar esses recursos.
Persistência: configuração de webhook do GKE detectada (pré-lançamento) GKE_WEBHOOK_CONFIG_CREATED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Uma configuração de webhook foi detectada no cluster do GKE. Os webhooks podem interceptar e modificar solicitações da API Kubernetes, permitindo que invasores persistam no cluster ou manipulem recursos.
Evasão defensiva: pod estático criado (pré-lançamento) GKE_STATIC_POD_CREATED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou um pod estático no cluster do GKE. Os pods estáticos são executados diretamente no nó e ignoram o servidor da API Kubernetes, o que dificulta o monitoramento e o controle deles. Os invasores podem usar pods estáticos para evitar a detecção ou manter a persistência.
Acesso inicial: chamada de API feita com sucesso de um IP de proxy TOR (versão prévia). GKE_TOR_PROXY_IP_REQUEST Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Uma chamada de API foi feita para seu cluster do GKE de um endereço IP associado à rede Tor. O Tor oferece anonimato, que geralmente é usado por invasores para ocultar a identidade.
Acesso inicial: serviço NodePort do GKE criado (pré-lançamento) GKE_NODEPORT_SERVICE_CREATED Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém criou um serviço NodePort. Os serviços NodePort expõem pods diretamente no endereço IP e na porta estática de um nó, o que os torna acessíveis de fora do cluster. Isso pode representar um risco de segurança significativo, porque permite que um invasor explore vulnerabilidades no serviço exposto para ter acesso ao cluster ou a dados sensíveis.
Impacto: modificação do kube-dns do GKE detectada (pré-lançamento) GKE_KUBE_DNS_MODIFICATION Registros de auditoria do Cloud:
Registros de atividade do administrador do GKE
Alguém modificou a configuração do kube-dns no cluster do GKE. O kube-dns do GKE é um componente essencial da rede do cluster, e uma configuração incorreta pode levar a uma violação de segurança.
Para regras descontinuadas e encerradas, consulte Descontinuações.

Como ativar a detecção de ameaças do GKE

Para ativar a detecção de ameaças do GKE, registre um cluster qualificado no nível avançado da verificação de postura de segurança do Kubernetes. Isso também ativa todos os recursos incluídos no nível básico de verificação de postura de segurança do Kubernetes, como auditoria de configuração de carga de trabalho e exibição do boletim de segurança.

Para saber mais, consulte Encontrar ameaças em clusters usando o GKE Threat Detection.

Limitações

As seguintes limitações se aplicam ao GKE Threat Detection:

  • Disponível apenas no GKE Enterprise
  • Disponível apenas para projetos em organizações
  • Não oferece suporte às opções do Security Command Center, como a configuração de residência de dados
  • Mostra apenas resultados de clusters registrados em uma frota
  • O GKE retém as descobertas de ameaças que não têm mais recursos afetados associados por até 180 dias
  • Mostra apenas resultados de clusters atuais. Se você excluir um cluster, o GKE Threat Detection não mostrará mais a descoberta no painel de postura de segurança do GKE.

A seguir