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 von diesem Ergebnis ist Event Threat Detection.

Maßnahmen

So reagieren Sie auf dieses Ergebnis:

Schritt 1: Ergebnisdetails prüfen

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

    • Was wurde erkannt, insbesondere die folgenden Felder:
      • Anzeigename der Datenbank: der Name der Datenbank in der betroffenen Cloud SQL PostgreSQL-Instanz.
      • Name des Datenbanknutzers: der PostgreSQL-Nutzer, der zu viele Berechtigungen gewährt hat.
      • Datenbankabfrage: die ausgeführte PostgreSQL-Abfrage, mit der die Berechtigungen gewährt wurden.
      • Datenbankempfänger: 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 PostgreSQL-Instanz.
      • Vollständiger Name des übergeordneten Elements: der Ressourcenname der Cloud SQL 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. Stellen Sie eine Verbindung zur PostgreSQL-Datenbank her.
  2. Listen Sie die Zugriffsrechte auf und zeigen Sie sie an für Folgendes:
    • Datenbanken. Verwenden Sie den \l oder \list Metacommand 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 \df Metacommand und prüfen Sie, welche Berechtigungen für Funktionen oder Prozeduren in der Datenbank zugewiesen sind, die unter Anzeigename der Datenbank (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 in 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 pgaudit-Logs von PostgreSQL, 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. Prüfen Sie den MITRE ATT&CK-Framework-Eintrag für diesen Ergebnistyp: Exfiltration Over Web Service (Exfiltration über Webdienst).
  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 den zu weit gefassten Berechtigungen.
  • Ziehen Sie in Betracht, alle Berechtigungen für die Empfänger zu widerrufen, die unter Datenbankempfänger aufgeführt sind, 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 Empfängern (aus Datenbankempfänger in Schritt 1).

Beispiel für ein Ergebnis im JSON-Format

Im Folgenden sehen Sie ein Beispiel für das Ergebnis im JSON-Format.

{
    "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