התמדה: ניתנה גישה חיצונית לאפליקציות של Gemini Discovery Engine API

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

סקירה כללית

חשבון משתמש מחוץ לארגון קיבל תפקיד IAM שנותן גישה לאפליקציות או למשאבים של Gemini Enterprise AI. כברירת מחדל, הממצאים מסווגים ברמת חומרה בינונית.

הממצא הזה נוצר כשמשתמש, חשבון שירות או סוכן AI מחוץ לארגון מקבלים את אחד מהתפקידים הבאים ב-Gemini Enterprise (Discovery Engine):

  • roles/discoveryengine.admin
  • roles/discoveryengine.agentAdmin
  • roles/discoveryengine.agentOwner
  • roles/discoveryengine.agentUser
  • roles/discoveryengine.agentspaceAdmin
  • roles/discoveryengine.agentspaceUser
  • roles/discoveryengine.editor
  • roles/discoveryengine.user

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

איך להגיב

כדי להגיב לממצא הזה, צריך לבצע את הפעולות הבאות:

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

  1. פותחים את הממצא Persistence: External Access Granted to Gemini Discovery Engine API Apps לפי ההוראות שבקטע בדיקת הממצאים. חלונית הפרטים של הממצא נפתחת בכרטיסייה Summary.

  2. בכרטיסייה סיכום, בודקים את המידע בקטעים הבאים:

    • מה זוהה, במיוחד בשדות הבאים:
      • כתובת האימייל של חשבון המשתמש: כתובת האימייל של המשתמש או של חשבון השירות שהקצה את התפקיד.
      • חשבונות עם גישה לא מוצדקת: פרטי התפקידים ב-Gemini Enterprise והחברים החיצוניים שנוספו (iamBindings).
    • המשאב המושפע
    • קישורים רלוונטיים, במיוחד השדות הבאים:
      • Cloud Logging URI: קישור לרשומות ב-Logging.
      • שיטת MITRE ATT&CK: קישור למסמכי התיעוד של MITRE ATT&CK.

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

  1. בכרטיסייה Summary בחלונית הפרטים של הממצא, לוחצים על הקישור Cloud Logging URI כדי לפתוח את Logs Explorer.
  2. בדף שנטען, מחפשים קישורי מדיניות IAM חדשים או מעודכנים באמצעות המסנן הבא:
    • protoPayload.methodName="SetIamPolicy"

שלב 3: חקירת שיטות התקיפה והתגובה

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

שלב 4: מיישמים את התגובה

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

  1. כדי לוודא שהגישה אושרה, פנו לבעלים של הפרויקט או המשאב שבו הוקצה התפקיד החיצוני.
  2. לבטל את הקישור הלא מורשה לתפקיד ב-IAM בחשבון המשתמש החיצוני.
  3. אם החשבון שהעניק את התפקיד (principalEmail) נפרץ, צריך לבטל את הגישה שלו או למחוק את חשבון השירות שנפרץ ולהחליף את המפתחות שלו.
  4. כדי להגביל את האפשרות להוסיף חשבונות ראשיים חיצוניים למשאבים, אתם יכולים להשתמש באילוץ של מדיניות הארגון "שיתוף מוגבל לדומיין".

במאמר תגובה לממצאי איומים של AI מפורטות המלצות לתגובה.

דוגמה לממצא בפורמט 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": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Persistence: External Access Granted to Gemini Discovery Engine API Apps",
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "TIMESTAMP",
    "createTime": "TIMESTAMP",
    "severity": "MEDIUM",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "findingClass": "THREAT",
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "COUNTRY_CODE"
      },
      "userAgent": "USER_AGENT",
      "serviceName": "cloudresourcemanager.googleapis.com",
      "methodName": "SetIamPolicy",
      "principalSubject": "user:PRINCIPAL_EMAIL"
    },
    "mitreAttack": {
      "primaryTactic": "PERSISTENCE",
      "primaryTechniques": [
        "ADDITIONAL_CLOUD_ROLES",
        "ACCOUNT_MANIPULATION"
      ],
      "additionalTactics": [
        "PRIVILEGE_ESCALATION"
      ]
    },
    "iamBindings": [
      {
        "action": "ADD",
        "role": "roles/discoveryengine.agentspaceUser",
        "member": "user:EXTERNAL_USER_EMAIL"
      }
    ],
    "parentDisplayName": "Event Threat Detection",
    "domains": [
      {
        "category": "AI"
      },
      {
        "category": "IDENTITY_AND_ACCESS"
      }
    ],
    "logEntries": [
      {
        "cloudLoggingEntry": {
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/activity",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": "TIMESTAMP"
        }
      }
    ]
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "displayName": "PROJECT_ID",
    "type": "google.cloud.resourcemanager.Project",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "cloudresourcemanager.googleapis.com",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
      "parentDisplayName": "ORGANIZATION_DISPLAY_NAME",
      "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": "granting_external_access_to_gemini_enterprise_ai_apps"
    },
    "detectionPriority": "MEDIUM",
    "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/activity"
        }
      }
    ],
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1098/003/"
      },
      "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"
      }
    ]
  }
}

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