Accesso iniziale: il super user del database scrive nelle tabelle utente

Questo documento descrive un tipo di risultato di minaccia in Security Command Center. I risultati di minaccia vengono generati dai rilevatori di minacce quando rilevano una potenziale minaccia nelle risorse cloud. Per un elenco completo dei risultati di minaccia disponibili, consulta l'indice dei risultati di minaccia.

Panoramica

L'account super user del database Cloud SQL (postgres per PostgreSQL e root per MySQL) ha scritto nelle tabelle utente. In genere, il super user (un ruolo con accesso molto esteso) non deve essere utilizzato per scrivere nelle tabelle utente. Per le normali attività quotidiane è necessario utilizzare un account utente con accesso più limitato. Quando un super user scrive in una tabella utente, potrebbe indicare che un utente malintenzionato ha eseguito l'escalation dei privilegi o ha compromesso l'utente del database predefinito e sta modificando i dati. Potrebbe anche indicare pratiche normali ma non sicure.

Event Threat Detection è l'origine di questo risultato.

Come rispondere

Per rispondere a questo risultato:

Passaggio 1: esamina i dettagli del risultato

  1. Apri un risultato Initial Access: Database Superuser Writes to User Tables, come indicato in Esaminare i risultati.
  2. Nella scheda Riepilogo del riquadro dei dettagli del risultato, esamina le informazioni nelle seguenti sezioni:

    • Che cosa è stato rilevato, in particolare i seguenti campi:
      • Nome visualizzato database: il nome del database nell' istanza Cloud SQL PostgreSQL o MySQL interessata.
      • Nome utente database: il super user.
      • Query database: la query SQL eseguita durante la scrittura nelle tabelle utente.
    • Risorsa interessata, in particolare i seguenti campi:
      • Nome completo risorsa: il nome della risorsa dell'istanza Cloud SQL interessata.
      • Nome completo risorsa padre: il nome della risorsa dell'istanza Cloud SQL.
      • Nome completo progetto: il Google Cloud progetto che contiene l'istanza Cloud SQL.
    • Link correlati, in particolare i seguenti campi:
      • URI Cloud Logging: link alle voci di log.
      • Metodo MITRE ATT&CK: link alla documentazione MITRE ATT&CK.
      • Risultati correlati: link a eventuali risultati correlati.
  3. Per visualizzare il JSON completo del risultato, fai clic sulla scheda JSON.

Passaggio 2: controlla i log

  1. Nella Google Cloud console, vai a Esplora log facendo clic sul link in cloudLoggingQueryURI (dal passaggio 1). La pagina Esplora log include tutti i log relativi all'istanza Cloud SQL pertinente.
  2. Controlla i log per i log pgaudit di PostgreSQL o i log di controllo di Cloud SQL per MySQL, che contengono le query eseguite dal super user, utilizzando i seguenti filtri:
    • protoPayload.request.user="SUPERUSER"

Passaggio 3: ricerca i metodi di attacco e risposta

  1. Esamina la voce del framework MITRE ATT&CK per questo tipo di risultato: Exfiltration Over Web Service.
  2. Per determinare se sono necessari ulteriori passaggi di correzione, combina i risultati dell'indagine con la ricerca MITRE.

Passaggio 4: implementa la risposta

Il seguente piano di risposta potrebbe essere appropriato per questo risultato, ma potrebbe anche influire sulle operazioni. Valuta attentamente le informazioni raccolte durante l'indagine per determinare il modo migliore per risolvere i risultati.

Esempio di JSON del risultato

Di seguito è riportato un esempio di JSON del risultato.

{
    "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": "Initial Access: Database Superuser Writes to User Tables",
      "sourceProperties": {
        "sourceId": {
          "projectNumber": "PROJECT_NUMBER",
          "customerOrganizationNumber": "ORGANIZATION_ID"
        },
        "detectionCategory": {
          "ruleName": "cloudsql_superuser_writes_to_user_tables",
        },
        "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": "INITIAL_ACCESS",
        "primaryTechniques": ["DEFAULT_ACCOUNTS"]
      },
      "database": {
        "displayName": "DATABASE_NAME",
        "userName": "USER_NAME",
        "query": "QUERY",
      },
      "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"
    }
}

Passaggi successivi