Exfiltration: Cloud SQL Überprivilegierte Berechtigung

In diesem Dokument wird ein bestimmter Typ von Bedrohungsergebnissen in Security Command Center beschrieben. Bedrohungsergebnisse werden von Bedrohungsdetektoren generiert, wenn sie eine potenzielle Bedrohung in Ihren Cloud-Ressourcen erkennen. Eine vollständige Liste der verfügbaren Bedrohungsergebnisse finden Sie im Index der Bedrohungsergebnisse.

Übersicht

Einem oder mehreren Datenbanknutzern wurden alle Berechtigungen für eine PostgreSQL-Datenbank (oder alle Funktionen oder Prozeduren in einer Datenbank) gewährt.

Die Quelle dieses Ergebnisses ist Event Threat Detection.

Maßnahmen

So reagieren Sie auf dieses Ergebnis:

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie das Exfiltration: Cloud SQL Over-Privileged Grant-Ergebnis, wie unter Ergebnisse prüfen beschrieben.
  2. Sehen Sie sich im Bereich „Ergebnisdetails“ auf dem Tab Zusammenfassung die Informationen in den folgenden Abschnitten an:

    • Was erkannt wurde, insbesondere die folgenden Felder:
      • Anzeigename der Datenbank: Der Name der Datenbank in der betroffenen Cloud SQL for PostgreSQL-Instanz.
      • Datenbanknutzername: Der PostgreSQL-Nutzer, der übermäßige Berechtigungen gewährt hat.
      • Datenbankabfrage: Die ausgeführte PostgreSQL-Abfrage, mit der die Berechtigungen erteilt wurden.
      • Empfänger von Datenbankberechtigungen: die Empfänger der zu weit gefassten Berechtigungen.
    • Betroffene Ressource, insbesondere die folgenden Felder:
      • Vollständiger Name der Ressource: Der Ressourcenname der betroffenen Cloud SQL for PostgreSQL-Instanz.
      • Vollständiger Name des übergeordneten Elements: Der Ressourcenname der Cloud SQL for PostgreSQL-Instanz.
      • Vollständiger Projektname: das Google Cloud Projekt, das die Cloud SQL PostgreSQL-Instanz enthält.
    • Weitere Informationen, insbesondere die folgenden Felder:
      • Cloud Logging-URI: Link zu Logging-Einträgen.
      • MITRE-ATT&CK-Methode: Link zur MITRE-ATT&CK-Dokumentation.
      • Ähnliche Ergebnisse: Links zu ähnlichen Ergebnissen.
  3. Klicken Sie auf den Tab JSON, um das vollständige JSON für das Ergebnis aufzurufen.

Schritt 2: Datenbankberechtigungen prüfen

  1. Verbindung zur PostgreSQL-Datenbank herstellen
  2. Zugriffsberechtigungen auflisten und anzeigen für Folgendes:
    • Datenbanken. Verwenden Sie den Metacommand \l oder \list und prüfen Sie, welche Berechtigungen für die Datenbank zugewiesen sind, die unter Anzeigename der Datenbank (aus Schritt 1) aufgeführt ist.
    • Funktionen oder Prozeduren. Verwenden Sie den Metacommand \df und prüfen Sie, welche Berechtigungen für Funktionen oder Prozeduren in der Datenbank zugewiesen sind, die in Database display name (aus Schritt 1) aufgeführt ist.

Schritt 3: Protokolle prüfen

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf. Klicken Sie dazu auf den Link im Cloud Logging-URI (aus Schritt 1). Die Seite Log-Explorer enthält alle Logs, die sich auf die relevante Cloud SQL-Instanz beziehen.
  2. Prüfen Sie im Log-Explorer die PostgreSQL-pgaudit-Logs, in denen ausgeführte Abfragen an die Datenbank aufgezeichnet werden. Verwenden Sie dazu die folgenden Filter:
    • protoPayload.request.database="var class="edit">database"

Schritt 4: Angriffs- und Reaktionsmethoden untersuchen

  1. Sehen Sie sich den MITRE-ATT&CK-Framework-Eintrag für diesen Ergebnistyp an: Exfiltration Over Web Service.
  2. Um festzustellen, ob zusätzliche Schritte zur Abhilfe erforderlich sind, kombinieren Sie Ihre Untersuchungsergebnisse mit dem MITRE-Forschung.

Schritt 5: Antwort implementieren

Der folgende Reaktionplan ist möglicherweise für dieses Ergebnis geeignet, kann sich jedoch auch auf Abläufe auswirken. Prüfen Sie die Informationen, die Sie im Rahmen Ihrer Untersuchung erfasst haben, sorgfältig, um die beste Lösung für die Behebung der Ergebnisse zu finden.

  • Wenden Sie sich an den Inhaber der Instanz mit übermäßigen Berechtigungen.
  • Ziehen Sie in Betracht, alle Berechtigungen für die in Database grantees aufgeführten Empfänger zu widerrufen, bis die Untersuchung abgeschlossen ist.
  • Um den Zugriff auf die Datenbank (aus Anzeigename der Datenbank in Schritt 1) zu beschränken, widerrufen Sie unnötige Berechtigungen von den Berechtigten (aus Berechtigte für die Datenbank in Schritt 1).

Beispiel für JSON-Ergebnis

Das folgende Beispiel zeigt das JSON für ein Ergebnis.

{
    "finding": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
      "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
      "resource_name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "state": "ACTIVE",
      "category": "Exfiltration: CloudSQL Over-Privileged Grant",
      "sourceProperties": {
        "sourceId": {
          "projectNumber": "PROJECT_NUMBER",
          "customerOrganizationNumber": "ORGANIZATION_ID"
        },
        "detectionCategory": {
          "ruleName": "cloudsql_exfil",
          "subRuleName": "user_granted_all_permissions"
        },
        "detectionPriority": "LOW",
        "affectedResources": [
          {
            "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
          },
          {
            "gcpResourceName": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME"
          }
        ],
        "evidence": [{
          "sourceLogId": {
            "projectId": "PROJECT_ID",
            "resourceContainer": "projects/PROJECT_ID",
            "timestamp": {
              "seconds": "0",
              "nanos": 0.0
            },
            "insertId": "INSERT_ID"
          }
        }],
        "findingId": "FINDING_ID",
        "contextUris": {
          "mitreUri": {
            "displayName": "MITRE Link",
            "url": "https://attack.mitre.org/techniques/T1567/002/"
          },
          "cloudLoggingQueryUri": [{
            "displayName": "Cloud Logging Query Link",
            "url": "LOGGING_LINK"
          }],
          "relatedFindingUri": {
            "displayName": "Related CloudSQL Exfiltration findings",
            "url": "RELATED_FINDINGS_LINK"
          }
        }
      },
      "eventTime": "2022-01-19T21:36:07.901Z",
      "createTime": "2022-01-19T21:36:08.695Z",
      "severity": "LOW",
      "workflowState": "NEW",
      "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID"
      "mute": "UNDEFINED",
      "findingClass": "THREAT",
      "mitreAttack": {
        "primaryTactic": "EXFILTRATION",
        "primaryTechniques": ["EXFILTRATION_OVER_WEB_SERVICE"]
      },
      "database": {
        "displayName": "DATABASE_NAME",
        "userName": "USER_NAME",
        "query": "QUERY",
        "grantees": [GRANTEE],
      },
      "access": {
        "serviceName": "cloudsql.googleapis.com",
        "methodName": "cloudsql.instances.query"
      }
    },
    "resource": {
      "name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parentName": "//cloudsql.googleapis.com/projects/PROJECT_NUMBER",
      "parentDisplayName": "PROJECT_ID",
      "type": "google.cloud.sql.Instance",
      "folders": [{
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
        "resourceFolderDisplayName": "FOLDER_ID"
      }],
      "displayName": "INSTANCE_NAME"
    }
}

Nächste Schritte