竊取資料:AI 代理程式啟動 CloudSQL 資料竊取作業,將資料傳輸至外部 Bucket

本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具偵測到雲端資源中可能存在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱威脅發現項目索引

總覽

檢查稽核記錄,偵測 AI 代理程式是否從 Cloud SQL 竊取資料,將即時執行個體資料匯出至組織外的 Cloud Storage bucket。

支援所有 Cloud SQL 執行個體類型。

如果在專案層級啟用 Security Command Center Premium 方案,只有在父項機構啟用 Standard 舊版方案時,才能使用這項發現。

Event Threat Detection 是這項發現項目的來源。

回應方式

如要回應這項發現項目,請按照下列步驟操作:

步驟 1:查看調查結果詳細資料

  1. 按照「查看發現項目」一文的指示,開啟 Exfiltration: AI Agent Initiated CloudSQL Exfiltration to External Bucket 發現項目。系統會開啟發現項目的詳細資料面板,並顯示「摘要」分頁。
  2. 在「摘要」分頁中,查看下列各節的資訊:

    • 偵測到的內容,尤其是下列欄位:
      • 主要電子郵件地址:用來外洩資料的帳戶。
      • 外洩來源:資料外洩的 Cloud SQL 執行個體詳細資料。
      • 外洩目標:資料匯出至 Cloud Storage 值區的詳細資料。
    • 受影響的資源,尤其是下列欄位:
      • 資源完整名稱:遭竊資料的 Cloud SQL 資源名稱。
      • 專案完整名稱:包含來源 Cloud SQL 資料的 Google Cloud 專案。
    • 相關連結,包括:
      • Cloud Logging URI:記錄項目連結。
      • MITRE ATT&CK 方法:連結至 MITRE ATT&CK 文件。
      • 相關發現項目:任何相關發現項目的連結。
  3. 按一下「JSON」分頁標籤。

  4. 在調查結果的 JSON 中,請注意下列欄位:

    • sourceProperties
      • evidence
      • sourceLogId
        • projectId:包含來源 Cloud SQL 執行個體的 Google Cloud 專案。
      • properties
      • exportScope:匯出多少資料 (例如整個執行個體、一或多個資料庫、一或多個資料表,或查詢指定的子集)

步驟 2:檢查權限和設定

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 如有需要,請選取在發現項目 JSON 的 projectId 欄位中列出的執行個體專案 (如步驟 1 所示)。

  3. 在隨即顯示的頁面中,於「篩選器」方塊中輸入電子郵件地址,該地址會列在調查結果詳細資料「摘要」分頁的「主要電子郵件」列中 (請參閱步驟 1)。查看帳戶獲派的權限。

步驟 3:檢查記錄

  1. 前往 Google Cloud 控制台的「Logs Explorer」(記錄檔探索工具),方法是點按「Cloud Logging URI」(Cloud Logging URI) 中的連結 (來自步驟 1)。 「記錄檔總管」頁面會顯示與相關 Cloud SQL 執行個體有關的所有記錄。

步驟 4:研究攻擊和應變方法

  1. 查看這類發現項目的 MITRE ATT&CK 框架項目: Exfiltration to Cloud Storage
  2. 按一下「相關發現項目」列中的連結,即可查看相關發現項目,如步驟 1 所述。相關發現項目在同一個 Cloud SQL 執行個體上具有相同的發現項目類型。
  3. 如要制定回應計畫,請將調查結果與 MITRE 研究結合。

步驟 5:實作回應

下列應變計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方式。

  • 與遭外洩資料的專案擁有者聯絡。
  • 在調查完成前,請考慮撤銷 access.principalEmail 的權限。
  • 如要防止資料外洩,請在受影響的 Cloud SQL 執行個體中新增限制性 IAM 政策。
  • 如要限制 Cloud SQL Admin API 的存取權和匯出作業,請使用 VPC Service Controls
  • 如要找出並修正權限過多的角色,請使用 IAM 建議工具

發現項目 JSON 範例

以下是發現項目 JSON 的範例,省略了預設值。

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global",
    "resourceName": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
    "state": "ACTIVE",
    "category": "Exfiltration: AI Agent Initiated CloudSQL Exfiltration to External Bucket",
    "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"
      },
      "serviceName": "cloudsql.googleapis.com",
      "methodName": "cloudsql.instances.export",
      "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": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
          "components": [
            "Databases: DATABASE_NAME"
          ]
        }
      ],
      "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": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
    "displayName": "INSTANCE_NAME",
    "type": "google.cloud.sql.Instance",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "sqladmin.googleapis.com",
    "location": "LOCATION",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "parentDisplayName": "PROJECT_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_cloudsql_exfil",
      "subRuleName": "agent_engine_export_to_external_gcs"
    },
    "detectionPriority": "HIGH",
    "affectedResources": [
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      },
      {
        "gcpResourceName": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME"
      },
      {
        "gcpResourceName": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME"
      }
    ],
    "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": {
      "exportToGcs": {
        "cloudsqlInstanceResource": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
        "gcsUri": "gs://TARGET_STORAGE_BUCKET_NAME/TARGET_FILE_NAME",
        "bucketAccess": "EXTERNAL_TO_ORGANIZATION",
        "bucketResource": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME",
        "exportScope": "ONE_OR_MORE_DATABASES"
      }
    },
    "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"
      }
    ]
  }
}

後續步驟