זליגת נתונים: סוכן AI יזם זליגת נתונים מ-CloudSQL לדלי חיצוני

במסמך הזה מתואר סוג של ממצא איום ב-Security Command Center. ממצאי האיומים נוצרים על ידי מזהי איומים כשהם מזהים איום פוטנציאלי במשאבי הענן שלכם. רשימה מלאה של ממצאי האיומים הזמינים מופיעה באינדקס של ממצאי האיומים.

סקירה כללית

זליגת נתונים מ-Cloud SQL שבוצעה על ידי סוכן AI מזוהה על ידי בדיקת יומני ביקורת של נתוני מופע בזמן אמת שיוצאו לקטגוריה של Cloud Storage מחוץ לארגון.

יש תמיכה בכל סוגי המכונות של Cloud SQL.

אם הפעלתם את מסלול הפרימיום של Security Command Center ברמת הפרויקט, הממצא הזה זמין רק אם מסלול Standard-legacy מופעל בארגון האב.

המקור של הממצא הזה הוא Event Threat Detection.

איך מגיבים

כדי להגיב לממצא הזה:

שלב 1: בדיקת פרטי הממצא

  1. פותחים ממצא של Exfiltration: AI Agent Initiated CloudSQL Exfiltration to External Bucket לפי ההוראות שבקטע בדיקת ממצאים. חלונית הפרטים של הממצא נפתחת בכרטיסייה סיכום.
  2. בכרטיסייה סיכום, בודקים את המידע בקטעים הבאים:

    • מה זוהה, במיוחד השדות הבאים:
      • כתובת האימייל העיקרית : החשבון ששימש להעברת הנתונים.
      • מקורות של העברת נתונים לא מורשית: פרטים על מכונת Cloud SQL שהנתונים שלה הועברו לא מורשית.
      • יעדי אקספילטרציה: פרטים על הקטגוריה של Cloud Storage שאליה יוצאו הנתונים.
    • מקור המידע שהושפע, במיוחד השדות הבאים:
      • השם המלא של המשאב: שם המשאב של Cloud SQL שממנו בוצעה גניבת הנתונים.
      • השם המלא של הפרויקט: Google Cloud הפרויקט שמכיל את נתוני המקור של Cloud SQL.
    • קישורים רלוונטיים, כולל:
      • Cloud Logging URI: קישור לרשומות ב-Logging.
      • שיטת MITRE ATT&CK: קישור למסמכי התיעוד של MITRE ATT&CK.
      • ממצאים קשורים: קישורים לממצאים קשורים.
  3. לוחצים על הכרטיסייה JSON.

  4. בשדה ה-JSON של הממצא, שימו לב לשדות הבאים:

    • sourceProperties:
      • evidence:
      • sourceLogId:
        • projectId: הפרויקט ב- Google Cloud שמכיל את מופע Cloud SQL של המקור.
      • properties
      • exportScope: כמה נתונים יוצאו, למשל, המופע כולו, מסד נתונים אחד או יותר, טבלה אחת או יותר או קבוצת משנה שצוינה על ידי שאילתה)

שלב 2: בדיקת ההרשאות וההגדרות

  1. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  2. אם צריך, בוחרים את הפרויקט של המופע שמופיע בשדה projectId בקובץ ה-JSON של הממצא (משלב 1).

  3. בדף שמופיע, בתיבה Filter, מזינים את כתובת האימייל שמופיעה בשורה Principal email בכרטיסייה Summary בפרטי הממצאים (משלב 1). בודקים אילו הרשאות משויכות לחשבון.

שלב 3: בדיקת היומנים

  1. במסוף Google Cloud , לוחצים על הקישור ב-Cloud Logging URIשלב 1) כדי לעבור אל Logs Explorer. בדף Logs Explorer מופיעים כל היומנים שקשורים למופע הרלוונטי של Cloud SQL.

שלב 4: מחקר על שיטות תקיפה ותגובה

  1. כדאי לעיין בערך של מסגרת MITRE ATT&CK לגבי סוג הממצא הזה: Exfiltration to Cloud Storage.
  2. כדי לעיין בממצאים קשורים, לוחצים על הקישור בשורה ממצאים קשורים שמתוארת בשלב 1. לממצאים קשורים יש את אותו סוג ממצא באותה מכונת Cloud SQL.
  3. כדי לפתח תוכנית תגובה, משלבים את תוצאות החקירה עם מחקר של MITRE.

שלב 5: הטמעת התגובה

תוכנית התגובה הבאה עשויה להתאים לממצא הזה, אבל היא עלולה גם להשפיע על הפעולות. חשוב לבדוק בקפידה את המידע שאספתם במהלך הבדיקה כדי להבין מהי הדרך הטובה ביותר לפתור את הבעיות.

  • צריך לפנות לבעלים של הפרויקט עם הנתונים שחולצו.
  • מומלץ לבטל את ההרשאות של access.principalEmail עד לסיום החקירה.
  • כדי למנוע העברה נוספת של נתונים, מוסיפים מדיניות IAM מגבילה למופעי Cloud SQL המושפעים.
  • כדי להגביל את הגישה ל-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"
      }
    ]
  }
}

המאמרים הבאים