Robo de datos: El agente de IA inició el robo de datos de BigQuery a una tabla externa

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

Un recurso se guardó fuera de tu organización o proyecto iniciado por un agente de IA.

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 Exfiltration: AI Agent Initiated BigQuery Data Exfiltration to External Table como se indica en Revisa los hallazgos.
  2. En la pestaña Resumen del panel de detalles del hallazgo, revisa los valores que se indican en las siguientes secciones:

    • Qué se detectó:
      • Correo electrónico principal: Es la cuenta que se usó para robar los datos.
      • Fuentes de robo de datos: Son detalles sobre las tablas de las que se robaron datos.
      • Objetivos de robo de datos: Son detalles sobre las tablas en las que se almacenaron los datos robados.
    • Recurso afectado:
      • Nombre completo del recurso: Es el nombre completo del recurso del proyecto, la carpeta o la organización desde los que se filtraron los datos.
    • Vínculos relacionados:
      • URI de Cloud Logging: Es el vínculo a las entradas de Logging.
      • Método MITRE ATT&CK: Es el vínculo a la documentación de MITRE ATT&CK.
      • Hallazgos relacionados: Son los vínculos a los hallazgos relacionados.
  3. Haz clic en la pestaña Propiedades fuente y revisa los campos que se muestran, en especial los siguientes de esta lista:

    • evidence:
      • sourceLogId:
        • projectId: Es el proyecto de Google Cloud que contiene el conjunto de datos de BigQuery de origen.
    • properties
      • dataExfiltrationAttempt
        • jobLink: Es el vínculo al trabajo de BigQuery que robó datos.
        • query: la consulta en SQL que se ejecuta en el conjunto de datos de BigQuery.
  4. De manera opcional, haz clic en la pestaña JSON para ver la ficha completa de las propiedades JSON del hallazgo.

Paso 2: Revisa los permisos y la configuración

  1. En la consola de Google Cloud , dirígete a la página IAM.

    Ir a IAM

  2. Si es necesario, elige el proyecto que aparece en el campo projectId del JSON del hallazgo.

  3. En la página que aparece, en el cuadro Filtro, escribe la dirección de correo electrónico que aparece en correo electrónico principal y comprueba qué permisos se asignaron a la cuenta.

Paso 3: Comprueba los registros

  1. En la pestaña Resumen del panel de detalles del hallazgo, haz clic en el vínculo URI de Cloud Logging para abrir el Explorador de registros.
  2. Busca los registros de actividad del administrador relacionados con los trabajos de BigQuery con los siguientes filtros:

    • protoPayload.methodName="Jobservice.insert"
    • protoPayload.methodName="google.cloud.bigquery.v2.JobService.InsertJob"

Paso 4: Investiga los métodos de ataque y respuesta

  1. Revisa la entrada del framework de MITRE ATT&CK para este tipo de hallazgo: Robo de datos en Cloud Storage.
  2. Haz clic en el vínculo de Hallazgos relacionados en la fila Hallazgos relacionados de la pestaña Resumen de los detalles del hallazgo para revisar los hallazgos relacionados. Los hallazgos relacionados son del mismo tipo y tienen la misma instancia y red.
  3. Para elaborar un plan de respuesta, combina los resultados de la investigación con la investigación de MITRE.

Paso 5: 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.

JSON de ejemplo del hallazgo

A continuación, se muestra un ejemplo del JSON del hallazgo, con los valores predeterminados omitidos.

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global",
    "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Exfiltration: AI Agent Initiated BigQuery Data Exfiltration to External Table",
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "TIMESTAMP",
    "createTime": "TIMESTAMP",
    "severity": "HIGH",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "findingClass": "THREAT",
    "access": {
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "COUNTRY_CODE"
      },
      "userAgent": "USER_AGENT",
      "serviceName": "bigquery.googleapis.com",
      "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
      "principalSubject": "principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID"
    },
    "mitreAttack": {
      "primaryTactic": "EXFILTRATION",
      "primaryTechniques": [
        "EXFILTRATION_OVER_WEB_SERVICE",
        "EXFILTRATION_TO_CLOUD_STORAGE"
      ]
    },
    "exfiltration": {
      "sources": [
        {
          "name": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      ],
      "targets": [
        {
          "name": "//bigquery.googleapis.com/projects/TARGET_PROJECT_ID/datasets/TARGET_DATASET_ID/tables/TARGET_TABLE_ID"
        }
      ]
    },
    "parentDisplayName": "Event Threat Detection",
    "domains": [
      {
        "category": "AI"
      },
      {
        "category": "IDENTITY_AND_ACCESS"
      }
    ],
    "logEntries": [
      {
        "cloudLoggingEntry": {
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/data_access",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": "TIMESTAMP"
        }
      }
    ]
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "displayName": "PROJECT_ID",
    "type": "google.cloud.resourcemanager.Project",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "cloudresourcemanager.googleapis.com",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
      "parentDisplayName": "ORGANIZATION_DISPLAY_NAME",
      "organization": "organizations/ORGANIZATION_ID"
    },
    "resourcePath": {
      "nodes": [
        {
          "nodeType": "GCP_PROJECT",
          "id": "projects/PROJECT_NUMBER",
          "displayName": "PROJECT_ID"
        },
        {
          "nodeType": "GCP_ORGANIZATION",
          "id": "organizations/ORGANIZATION_ID"
        }
      ]
    },
    "resourcePathString": "organizations/ORGANIZATION_ID/projects/PROJECT_NUMBER"
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "ruleName": "agent_engine_big_query_exfil",
      "subRuleName": "agent_engine_exfil_to_external_table"
    },
    "detectionPriority": "HIGH",
    "affectedResources": [
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "TIMESTAMP_SECONDS",
            "nanos": TIMESTAMP_NANOS
          },
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/data_access"
        }
      }
    ],
    "properties": {
      "dataExfiltrationAttempt": {
        "jobState": "SUCCEEDED",
        "jobLink": "https://console.cloud.google.com/bigquery?j=bq:BIGQUERY_JOB_LOCATION:BIGQUERY_JOB_ID&project=PROJECT_ID&page=queryresults",
        "job": {
          "projectId": "PROJECT_ID",
          "jobId": "BIGQUERY_JOB_ID",
          "location": "BIGQUERY_JOB_LOCATION"
        },
        "query": "QUERY",
        "sourceTables": [
          {
            "resourceUri": "https://console.cloud.google.com/bigquery?p=PROJECT_ID&d=DATASET_ID&t=TABLE_ID&page=table",
            "projectId": "PROJECT_ID",
            "datasetId": "DATASET_ID",
            "tableId": "TABLE_ID"
          }
        ],
        "destinationTables": [
          {
            "resourceUri": "https://console.cloud.google.com/bigquery?p=TARGET_PROJECT_ID&d=TARGET_DATASET_ID&t=TARGET_TABLE_ID&page=table",
            "projectId": "TARGET_PROJECT_ID",
            "datasetId": "TARGET_DATASET_ID",
            "tableId": "TARGET_TABLE_ID"
          }
        ]
      }
    },
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1567/002/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%22TIMESTAMP%22%0AinsertId%3D%22INSERT_ID%22?project=PROJECT_ID"
        }
      ]
    },
    "domains": [
      {
        "category": "AI"
      },
      {
        "category": "IDENTITY_AND_ACCESS"
      }
    ]
  }
}

¿Qué sigue?