Acceso inicial: Se usó una clave de cuenta de servicio filtrada

En este documento, se describe un tipo de hallazgo de amenazas de Security Command Center. Los detectores de amenazas generan hallazgos de amenazas cuando identifican una posible amenaza en tus recursos de Cloud. Para obtener una lista completa de los hallazgos de amenazas disponibles, consulta el Índice de hallazgos de amenazas.

Descripción general

Se usó una clave de cuenta de servicio filtrada para autenticar una acción. En este contexto, una clave de cuenta de servicio filtrada es aquella que se publicó en Internet pública. Por ejemplo, las claves de cuentas de servicio suelen publicarse por error en repositorios públicos de GitHub.

Event Threat Detection es la fuente de este hallazgo.

Cómo se debe responder

Para responder a este hallazgo, sigue los pasos que se indican a continuación:

Paso 1: Revisa los detalles del hallazgo

  1. Abre un hallazgo de Initial Access: Leaked Service Account Key Used como se indica en Revisa los hallazgos.
  2. En los detalles del hallazgo, en la pestaña Resumen, anota los valores de los siguientes campos.

    En Qué se detectó, se muestra lo siguiente:

    • Correo electrónico principal: Es la cuenta de servicio que se usó en esta acción.
    • Nombre del servicio: Es el nombre de la API del servicio de Google Cloud al que accedió la cuenta de servicio.
    • Nombre del método: Es el nombre del método de la acción.
    • Nombre de la clave de la cuenta de servicio: Es la clave de cuenta de servicio filtrada que se usó para autenticar esta acción.
    • Descripción: Es la descripción de lo que se detectó, incluida la ubicación en Internet pública donde se puede encontrar la clave de la cuenta de servicio.

    En Recurso afectado , se muestra la siguiente información:

    • Nombre visible del recurso: Es el recurso involucrado en la acción.

Paso 2: Revisa los registros

  1. En la Google Cloud consola, accede al Explorador de registros y haz clic en el vínculo del campo URI de Cloud Logging.
  2. En la Google Cloud barra de herramientas de la consola de, elige el proyecto o la organización.
  3. En la página que se carga, busca los registros relacionados con el siguiente filtro:

    • protoPayload.authenticationInfo.principalEmail="PRINCIPAL_EMAIL"
    • protoPayload.authenticationInfo.serviceAccountKeyName="SERVICE_ACCOUNT_KEY_NAME"

    Reemplaza PRINCIPAL_EMAIL por el valor que anotaste en el campo Correo electrónico principal en los detalles del hallazgo. Reemplaza SERVICE_ACCOUNT_KEY_NAME por el valor que anotaste en el campo Nombre de la clave de la cuenta de servicio en los detalles del hallazgo.

Paso 3: Implementa la respuesta

El siguiente plan de respuesta podría ser adecuado para este hallazgo, pero también podría afectar las operaciones. Evalúa con cuidado la información que recopilas durante la investigación para determinar la mejor manera de resolver los hallazgos.

  • Revoca la clave de cuenta de servicio de inmediato en la página Cuentas de servicio.
  • Quita la página web o el repositorio de GitHub en el que se publicó la clave de cuenta de servicio.
  • Considera borrar la cuenta de servicio vulnerada.
  • Rota y borra todas las claves de acceso de la cuenta de servicio del proyecto que podría estar vulnerado. Después de la eliminación, las aplicaciones que usan la cuenta de servicio para la autenticación perderán el acceso. Antes de borrar, tu equipo de seguridad debe identificar todas las aplicaciones afectadas y trabajar con los propietarios de estas para garantizar la continuidad empresarial.
  • Trabaja con tu equipo de seguridad para identificar recursos desconocidos, incluidos instancias de Compute Engine, instantáneas, cuentas de servicio y usuarios de IAM. Borra los recursos que se crearon con cuentas no autorizadas.
  • Responde a las notificaciones de la Atención al cliente de Cloud.

JSON de ejemplo del hallazgo

A continuación, se muestra un ejemplo del JSON del hallazgo.

{
 "findings": {
   "access": {
     "principalEmail": "SERVICE_ACCOUNT",
     "callerIp": "IP_ADDRESS",
     "callerIpGeo": {
        "regionCode": "US"
      },
     "serviceName": "SERVICE_NAME",
     "methodName": "METHOD_NAME",
     "serviceAccountKeyName": "LEAKED_SERVICE_ACCOUNT_KEY"
   },
   "assetDisplayName": "ASSET_DISPLAY_NAME",
   "assetId": "organizations/ORGANIZATION_NUMBER/assets/ASSET_ID",
   "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
   "category": "Initial Access: Leaked Service Account Key Used",
   "contacts": {
     "security": {
       "contacts": [
         {
           "email": "EMAIL_ADDRESS"
         }
       ]
     },
     "technical": {
       "contacts": [
         {
           "email": "EMAIL_ADDRESS"
         }
       ]
     }
   },
   "createTime": "2023-07-18T10:35:47.381Z",
   "database": {},
   "eventTime": "2023-07-18T10:35:47.270Z",
   "exfiltration": {},
   "findingClass": "THREAT",
   "findingProviderId": "organizations/ORGANIZATION_NUMBER/firstPartyFindingProviders/etd",
   "indicator": {},
   "kernelRootkit": {},
   "kubernetes": {},
   "mitreAttack": {
    "primaryTactic": "INITIAL_ACCESS",
    "primaryTechniques": [
      "VALID_ACCOUNTS",
      "CLOUD_ACCOUNTS"
      ]
   },
   "mute": "UNDEFINED",
   "name": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
   "parent": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID",
   "parentDisplayName": "Event Threat Detection",
   "resourceName": "AFFECTED_RESOURCE",
   "severity": "HIGH",
   "sourceDisplayName": "Event Threat Detection",
   "state": "ACTIVE",
   "vulnerability": {},
   "workflowState": "NEW"
 },
 "resource": {
   "name": "RESOURCE_NAME",
   "display_name": "RESOURCE_DISPLAY_NAME",
   "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
   "project_display_name": "PROJECT_ID",
 },
 "sourceProperties": {
   "sourceId": {
     "projectNumber": "PROJECT_NUMBER",
     "customerOrganizationNumber": "ORGANIZATION_NUMBER"
   },
   "detectionCategory": {
     "ruleName": "leaked_sa_key_used"
   },
   "detectionPriority": "HIGH",
   "affectedResources": [
     {
       "gcpResourceName": "GOOGLE_RESOURCE"
     }
   ],
   "evidence": [
     {
       "sourceLogId": {
         "projectId": "PROJECT_ID",
         "resourceContainer": "projects/PROJECT_ID",
         "timestamp": {
           "seconds": "1673519681",
           "nanos": 728289000
         },
         "insertId": "INSERT_ID"
       }
     }
   ],
   "properties": {},
   "findingId": "FINDING_ID",
   "contextUris": {
     "mitreUri": {
       "displayName": "MITRE Link",
       "url": "https://attack.mitre.org/techniques/T1078/004/"
     }
   }
 },
 "description": "A leaked service account key is used, the key is leaked at LEAKED_SOURCE_URL"
}

¿Qué sigue?