Pemindahan Tidak Sah: Pemindahan Tidak Sah CloudSQL yang Diprakarsai Agen AI ke Bucket Publik

Dokumen ini menjelaskan jenis temuan ancaman di Security Command Center. Temuan ancaman dihasilkan oleh detektor ancaman saat mendeteksi potensi ancaman di resource cloud Anda. Untuk daftar lengkap temuan ancaman yang tersedia, lihat Indeks temuan ancaman.

Ringkasan

Pemindahan data yang tidak sah dari Cloud SQL yang dimulai oleh agen AI terdeteksi dengan memeriksa log audit untuk data instance aktif yang diekspor ke bucket Cloud Storage yang dimiliki oleh organisasi dan dapat diakses secara publik.

Semua jenis instance Cloud SQL didukung.

Untuk aktivasi level project pada paket Security Command Center Premium, temuan ini hanya tersedia jika paket Standar (versi lama) diaktifkan di organisasi induk.

Event Threat Detection adalah sumber temuan ini.

Cara merespons

Untuk merespons temuan ini, lakukan hal berikut:

Langkah 1: Tinjau detail temuan

  1. Buka temuan Exfiltration: AI Agent Initiated CloudSQL Exfiltration to Public Bucket, seperti yang diarahkan dalam Meninjau temuan. Panel detail untuk temuan akan terbuka dan menampilkan tab Summary.
  2. Di tab Summary, tinjau informasi di bagian berikut:

    • Apa yang terdeteksi, terutama kolom berikut:
      • Principal email : akun yang digunakan untuk mengeksfiltrasi data.
      • Sumber eksfiltrasi: detail tentang instance Cloud SQL yang datanya dieksfiltrasi.
      • Target eksfiltrasi: detail tentang bucket Cloud Storage tempat data diekspor.
    • Affected resource, terutama kolom berikut:
      • Nama resource lengkap: nama resource Cloud SQL yang datanya dieksfiltrasi.
      • Nama lengkap project: Google Cloud project yang berisi data Cloud SQL sumber.
    • Related links, termasuk:
      • Cloud Logging URI: link ke entri Logging.
      • Metode MITRE ATT&CK: tautan ke dokumentasi MITRE ATT&CK.
      • Temuan terkait: link ke temuan terkait.
  3. Klik tab JSON.

  4. Di JSON untuk temuan, perhatikan kolom berikut:

    • sourceProperties:
      • evidence:
      • sourceLogId:
        • projectId: project yang Google Cloud berisi instance Cloud SQL sumber.
      • properties
      • exportScope: jumlah data yang diekspor, seperti seluruh instance, satu atau beberapa database, satu atau beberapa tabel, atau subset yang ditentukan oleh kueri)

Langkah 2: Tinjau izin dan setelan

  1. Di Google Cloud konsol, buka halaman IAM.

    Buka IAM

  2. Jika perlu, pilih project instance yang tercantum di kolom projectId dalam JSON temuan (dari Langkah 1).

  3. Di halaman yang muncul, di kotak Filter, masukkan alamat email yang tercantum di baris Principal email di tab Summary detail temuan (dari Langkah 1). Periksa izin yang ditetapkan ke akun.

Langkah 3: Periksa log

  1. Di Google Cloud konsol, buka Logs Explorer dengan mengklik link di Cloud Logging URI (dari Langkah 1). Halaman Logs Explorer mencakup semua log yang terkait dengan instance Cloud SQL yang relevan.

Langkah 4: Teliti metode serangan dan respons

  1. Tinjau entri framework MITRE ATT&CK untuk jenis temuan ini: Eksfiltrasi ke Cloud Storage.
  2. Tinjau temuan terkait dengan mengklik link di baris Related findings yang dijelaskan di Langkah 1. Temuan terkait memiliki jenis temuan yang sama pada instance Cloud SQL yang sama.
  3. Untuk mengembangkan rencana respons, gabungkan hasil penyelidikan Anda dengan riset MITRE.

Langkah 5: Terapkan respons Anda

Rencana respons berikut mungkin sesuai untuk temuan ini, tetapi juga dapat memengaruhi operasi. Evaluasi dengan cermat informasi yang Anda kumpulkan dalam penyelidikan untuk menentukan cara terbaik dalam menyelesaikan temuan.

  • Hubungi pemilik project dengan data yang dieksfiltrasi.
  • Pertimbangkan untuk mencabut izin untuk access.principalEmail hingga penyelidikan selesai.
  • Untuk menghentikan eksfiltrasi lebih lanjut, tambahkan kebijakan IAM yang ketat ke instance Cloud SQL yang terpengaruh.
  • Untuk membatasi akses ke dan ekspor dari Cloud SQL Admin API, gunakan Kontrol Layanan VPC.
  • Untuk mengidentifikasi dan memperbaiki peran yang terlalu permisif, gunakan IAM Recommender.

Contoh JSON temuan

Berikut adalah contoh JSON temuan, dengan nilai default dihilangkan.

{
  "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 Public 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_public_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": "PUBLICLY_ACCESSIBLE",
        "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"
      }
    ]
  }
}

Langkah berikutnya