גישה ראשונית: פעולות שנדחו בגלל הרשאה מוגזמת של סוכן AI

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

סקירה כללית

סוכן AI הפעיל שוב ושוב שגיאות permission denied בכמה שיטות ושירותים.

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

איך מגיבים

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

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

  1. פותחים את Initial Access: AI Agent Identity Excessive Permission Denied Actionsהממצא כמו שמתואר בקטע בדיקת הממצאים.
  2. בפרטי הממצא, בכרטיסייה Summary, מציינים את הערכים של השדות הבאים.

    בקטע מה זוהה:

    • כתובת האימייל של חשבון המשתמש: חשבון המשתמש שהפעיל כמה שגיאות של דחיית הרשאה
    • שם השירות: שם ה-API של שירות Google Cloud שבו התרחשה השגיאה האחרונה של דחיית הרשאה
    • שם השיטה: השיטה שהופעלה כשהתרחשה השגיאה האחרונה מסוג permission denied
  3. בכרטיסייה מאפייני המקור בפרטי הממצא, מציינים את הערכים של השדות הבאים ב-JSON:

    • ‫properties.failedActions: השגיאות permission denied שהתרחשו. לכל רשומה מופיעים פרטים כמו שם השירות, שם השיטה, מספר הניסיונות שנכשלו והשעה שבה השגיאה התרחשה לאחרונה. מוצגים עד 10 ערכים.

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

  1. במסוף Google Cloud , לוחצים על הקישור ב-Cloud Logging URI כדי לעבור אל Logs Explorer.
  2. בסרגל הכלים של המסוף Google Cloud , בוחרים את הפרויקט.
  3. בדף שנטען, משתמשים במסנן הבא כדי למצוא יומנים קשורים:

    • protoPayload.authenticationInfo.principalEmail="PRINCIPAL_EMAIL"
    • protoPayload.status.code=7

    מחליפים את PRINCIPAL_EMAIL בערך שרשמתם בשדה Principal email בפרטי הממצא.

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

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

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

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

  • צריך לפנות לבעלים של החשבון שמופיע בשדה Principal email. צריך לאשר אם הבעלים החוקי ביצע את הפעולה.
  • מוחקים משאבים בפרויקט שנוצרו על ידי החשבון הזה, כמו מופעים לא מוכרים של Compute Engine, תמונות מצב, חשבונות שירות ומשתמשי 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": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Initial Access: AI Agent Identity Excessive Permission Denied Actions",
    "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",
    "contacts": {
      "security": {
        "contacts": [
          {
            "email": "USER_EMAIL"
          }
        ]
      },
      "technical": {
        "contacts": [
          {
            "email": "USER_EMAIL"
          }
        ]
      }
    },
    "access": {
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "COUNTRY_CODE"
      },
      "userAgent": "USER_AGENT",
      "serviceName": "SERVICE_NAME",
      "methodName": "METHOD_NAME",
      "principalSubject": "principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID"
    },
    "mitreAttack": {
      "primaryTactic": "INITIAL_ACCESS",
      "primaryTechniques": [
        "VALID_ACCOUNTS",
        "CLOUD_ACCOUNTS"
      ]
    },
    "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/folders/FOLDER_ID",
      "parentDisplayName": "FOLDER_NAME",
      "folders": [
        {
          "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_ID",
          "resourceFolderDisplayName": "FOLDER_NAME"
        }
      ],
      "organization": "organizations/ORGANIZATION_ID"
    },
    "resourcePath": {
      "nodes": [
        {
          "nodeType": "GCP_PROJECT",
          "id": "projects/PROJECT_NUMBER",
          "displayName": "PROJECT_ID"
        },
        {
          "nodeType": "GCP_FOLDER",
          "id": "folders/FOLDER_ID",
          "displayName": "FOLDER_NAME"
        },
        {
          "nodeType": "GCP_ORGANIZATION",
          "id": "organizations/ORGANIZATION_ID"
        }
      ]
    },
    "resourcePathString": "organizations/ORGANIZATION_ID/folders/FOLDER_ID/projects/PROJECT_NUMBER"
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "ruleName": "agent_engine_excessive_failed_attempt"
    },
    "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"
        }
      }
    ],
    "properties": {
      "failedActions": [
        {
          "methodName": "METHOD_NAME",
          "serviceName": "SERVICE_NAME",
          "attemptTimes": "TIMES",
          "lastOccurredTime": "TIMESTAMP"
        },
        {
          "methodName": "METHOD_NAME",
          "serviceName": "SERVICE_NAME",
          "attemptTimes": "TIMES",
          "lastOccurredTime": "TIMESTAMP"
        }
      ]
    },
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1078/004/"
      },
      "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"
      }
    ]
  }
}

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