Esfiltrazione: estrazione dei dati di BigQuery avviata dall'agente AI

Questo documento descrive un tipo di risultato di minaccia in Security Command Center. I risultati delle minacce vengono generati dai rilevatori di minacce quando rilevano una potenziale minaccia nelle tue risorse cloud. Per un elenco completo dei risultati relativi alle minacce disponibili, consulta Indice dei risultati relativi alle minacce.

Panoramica

L'esfiltrazione dei dati avviata da un agente AI da BigQuery viene rilevata esaminando gli audit log per due scenari:

  • Una risorsa viene salvata in un bucket Cloud Storage al di fuori della tua organizzazione.
  • Una risorsa viene salvata in un bucket Cloud Storage accessibile pubblicamente di proprietà della tua organizzazione.

Per le attivazioni a livello di progetto del livello Security Command Center Premium, questo risultato è disponibile solo se il livello Standard legacy è abilitato nell'organizzazione principale.

Event Threat Detection è l'origine di questo risultato.

Come rispondere

Per rispondere a questo risultato, segui questi passaggi:

Passaggio 1: esamina i dettagli del risultato

  1. Apri un risultato Exfiltration: AI Agent Initiated BigQuery Data Extraction come indicato in Revisione dei risultati. Il riquadro dei dettagli del risultato si apre nella scheda Riepilogo.
  2. Nella scheda Riepilogo del riquadro dei dettagli del risultato, esamina i valori elencati nelle seguenti sezioni:

    • Che cosa è stato rilevato:
      • Email principale: l'account utilizzato per estrarre i dati.
      • Origini di esfiltrazione: dettagli sulle tabelle da cui sono stati estratti i dati.
      • Target di esfiltrazione: dettagli sulle tabelle in cui sono stati archiviati i dati esfiltrati.
    • Risorsa interessata:
      • Nome completo risorsa: il nome della risorsa BigQuery i cui dati sono stati esfiltrati.
      • Nome completo del progetto: il progetto Google Cloud che contiene il set di dati BigQuery di origine.
    • Link correlati:
      • URI Cloud Logging: link alle voci di log.
      • Metodo MITRE ATT&CK: link alla documentazione MITRE ATT&CK.
      • Risultati correlati: link a eventuali risultati correlati.
  3. Nel riquadro dei dettagli del risultato, fai clic sulla scheda JSON.

  4. Nel JSON, prendi nota dei seguenti campi.

    • sourceProperties:
      • evidence:
        • sourceLogId:
        • projectId: il progetto Google Cloud che contiene il set di dati BigQuery di origine.
      • properties:
        • extractionAttempt:
        • jobLink: il link al job BigQuery che ha esfiltrato i dati

Passaggio 2: esamina le autorizzazioni e le impostazioni

  1. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM

  2. Se necessario, seleziona il progetto elencato nel campo projectId nel JSON del risultato (dal passaggio 1).

  3. Nella pagina visualizzata, inserisci nel riquadro Filtro l'indirizzo email elencato in Email principale (dal passaggio 1) e controlla quali autorizzazioni sono assegnate all'account.

Passaggio 3: controlla i log

  1. Nella scheda Riepilogo del riquadro dei dettagli del problema, fai clic sul link URI Cloud Logging per aprire Esplora log.
  2. Trova i log delle attività amministrative correlate ai job BigQuery utilizzando i seguenti filtri:
    • protoPayload.methodName="Jobservice.insert"
    • protoPayload.methodName="google.cloud.bigquery.v2.JobService.InsertJob"

Passaggio 4: ricerca di metodi di attacco e risposta

  1. Esamina la voce del framework MITRE ATT&CK per questo tipo di risultato: Esfiltrazione in Cloud Storage.
  2. Esamina i risultati correlati facendo clic sul link nella riga Risultati correlati della scheda Riepilogo dei dettagli del risultato. I risultati correlati sono lo stesso tipo di risultato sulla stessa istanza e rete.
  3. Per sviluppare un piano di risposta, combina i risultati dell'indagine con la ricerca MITRE.

Passaggio 5: implementa la risposta

Il seguente piano di risposta potrebbe essere appropriato per questo risultato, ma potrebbe anche influire sulle operazioni. Valuta attentamente le informazioni raccolte durante l'indagine per determinare il modo migliore per risolvere i risultati.

Esempio di JSON di ricerca

Di seguito è riportato un esempio del JSON del problema, con i valori predefiniti omessi.

{
  "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"
      }
    ]
  }
}

Passaggi successivi