Robo de datos: El agente de IA inició la extracción de datos de BigQuery

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

El robo de datos iniciado por un agente de IA desde BigQuery se detecta a través del análisis de los registros de auditoría en dos situaciones:

  • Un recurso se guarda en un bucket de Cloud Storage fuera de tu organización.
  • Un recurso se guarda en un bucket de Cloud Storage de acceso público que pertenece a tu organización.

Para las activaciones a nivel del proyecto del nivel Premium de Security Command Center, este hallazgo solo está disponible si el nivel Standard heredado está habilitado en la organización principal.

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 Extraction, como se indica en Revisa los hallazgos. Se abrirá el panel de detalles del hallazgo en la pestaña Resumen.
  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 del recurso de BigQuery cuyos datos se robaron.
      • Nombre completo del proyecto: Es el proyecto de Google Cloud que contiene el conjunto de datos de BigQuery de origen.
    • Vínculos relacionados:
      • URI de Cloud Logging: vínculo a las entradas de registro.
      • 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. En el panel de detalles del hallazgo, haz clic en la pestaña JSON.

  4. En el archivo JSON, observa los campos que se indican a continuación.

    • sourceProperties:
      • evidence:
        • sourceLogId:
        • projectId: Es el proyecto de Google Cloud que contiene el conjunto de datos de BigQuery de origen.
      • properties:
        • extractionAttempt:
        • jobLink: el vínculo al trabajo de BigQuery que robó datos

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 (del paso 1).

  3. En la página que aparece, en el cuadro Filtro, ingresa la dirección de correo electrónico que aparece en Correo electrónico principal (del paso 1) y verifica qué permisos se asignan 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 la fila Hallazgos relacionados en 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.

Ejemplo de JSON de 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": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID",
    "state": "ACTIVE",
    "category": "Exfiltration: AI Agent Initiated BigQuery Data Extraction",
    "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": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME",
          "components": [
            "TARGET_FILE_NAME"
          ]
        }
      ]
    },
    "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": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID",
    "displayName": "PROJECT_ID:DATASET_ID.TABLE_ID",
    "type": "google.cloud.bigquery.Table",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "bigquery.googleapis.com",
    "location": "BIGQUERY_JOB_LOCATION",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID",
      "parentDisplayName": "PROJECT_ID:DATASET_ID",
      "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_cloud_storage"
    },
    "detectionPriority": "LOW",
    "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": {
      "extractionAttempt": {
        "job": {
          "projectId": "PROJECT_ID",
          "jobId": "BIGQUERY_JOB_ID",
          "location": "BIGQUERY_JOB_LOCATION"
        },
        "jobLink": "https://console.cloud.google.com/bigquery?j=bq:BIGQUERY_JOB_LOCATION:BIGQUERY_JOB_ID&project=PROJECT_ID&page=queryresults",
        "sourceTable": {
          "projectId": "PROJECT_ID",
          "datasetId": "DATASET_ID",
          "tableId": "TABLE_ID",
          "resourceUri": "projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        },
        "destinations": [
          {
            "originalUri": "gs://TARGET_STORAGE_BUCKET_NAME/TARGET_FILE_NAME",
            "collectionType": "GCS_BUCKET",
            "collectionName": "TARGET_STORAGE_BUCKET_NAME",
            "objectName": "TARGET_FILE_NAME"
          }
        ]
      }
    },
    "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?