Eskalasi Hak Istimewa: Perubahan pada objek RBAC Kubernetes yang sensitif

Dokumen ini menjelaskan jenis temuan ancaman di Security Command Center. Temuan ancaman dihasilkan oleh detektor ancaman saat mendeteksi potensi ancaman di resource cloud Anda. Untuk daftar lengkap temuan ancaman yang tersedia, lihat Indeks temuan ancaman.

Ringkasan

Untuk meningkatkan hak istimewa, pihak berniat jahat yang berpotensi mencoba mengubah objek kontrol akses berbasis peran (RBAC) ClusterRole, RoleBinding, atau ClusterRoleBinding dari peran cluster-admin sensitif menggunakan permintaan PUT atau PATCH.

Event Threat Detection adalah sumber temuan ini.

Cara merespons

Untuk merespons temuan ini, lakukan hal berikut:

Langkah 1: Tinjau detail temuan

  1. Buka Privilege Escalation: Changes to sensitive Kubernetes RBAC objects temuan seperti yang diarahkan dalam Meninjau temuan. Panel detail untuk temuan akan terbuka dan menampilkan tab Summary.

  2. Di tab Summary, tinjau informasi di bagian berikut:

    • Apa yang terdeteksi, terutama kolom berikut:
      • Principal email: akun yang melakukan panggilan.
      • Nama metode: metode yang dipanggil.
      • Kubernetes bindings: binding Kubernetes sensitif atau ClusterRoleBinding yang diubah.
    • Affected resource, terutama kolom berikut:
      • Nama tampilan resource: cluster Kubernetes tempat tindakan terjadi.
    • Related links, terutama kolom berikut:
      • Cloud Logging URI: link ke entri Logging.
      • Metode MITRE ATT&CK: tautan ke dokumentasi MITRE ATT&CK.
      • Temuan terkait: link ke temuan terkait.
  3. Di bagian What was detected, klik nama binding di baris Kubernetes bindings. Detail binding akan ditampilkan.

  4. Dalam binding yang ditampilkan, perhatikan detail binding.

Langkah 2: Periksa log

  1. Di tab Summary detail temuan di Google Cloud konsol, buka Logs Explorer dengan mengklik link di kolom Cloud Logging URI.
  2. Jika nilai di Method name adalah metode PATCH, periksa isi permintaan untuk melihat properti yang diubah.

    Dalam update (PUT) panggilan, seluruh objek dikirim dalam permintaan, sehingga perubahannya tidak terlalu jelas.

  3. Periksa tindakan lain yang dilakukan oleh prinsipal menggunakan filter berikut:

    • resource.labels.cluster_name="CLUSTER_NAME"
    • protoPayload.authenticationInfo.principalEmail="PRINCIPAL_EMAIL"

      Ganti kode berikut:

    • CLUSTER_NAME: nilai yang Anda catat di kolom Resource display name di detail temuan.

    • PRINCIPAL_EMAIL: nilai yang Anda catat di kolom Principal email di detail temuan.

Langkah 3: Teliti metode serangan dan respons

  1. Tinjau entri framework MITRE ATT&CK untuk jenis temuan ini: Privilege Escalation
  2. Konfirmasi sensitivitas objek dan apakah modifikasi dijamin.
  3. Untuk binding, Anda dapat memeriksa subjek dan menyelidiki apakah subjek memerlukan peran yang terikat.
  4. Tentukan apakah ada tanda aktivitas berbahaya lainnya oleh prinsipal dalam log.
  5. Jika email prinsipal bukan akun layanan, hubungi pemilik akun untuk mengonfirmasi apakah pemilik yang sah melakukan tindakan tersebut.

    Jika email prinsipal adalah akun layanan (IAM atau Kubernetes), identifikasi sumber modifikasi untuk menentukan legitimasi.

  6. Untuk mengembangkan rencana respons, gabungkan hasil investigasi Anda dengan riset MITRE.

Contoh JSON temuan

Berikut adalah contoh JSON temuan.

{
  "findings": {
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "US"
      },
      "serviceName": "k8s.io",
      "methodName": "io.k8s.authorization.rbac.v1.clusterrolebindings.update"
    },
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/05b52fe8267d44bdb33c89367f0dd11a",
    "category": "Privilege Escalation: Changes to sensitive Kubernetes RBAC objects",
    "contacts": {
      "technical": {
        "contacts": [
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          }
        ]
      }
    },
    "createTime": "2022-10-07T07:42:36.536Z",
    "database": {},
    "eventTime": "2022-10-07T07:42:06.044Z",
    "exfiltration": {},
    "findingClass": "THREAT",
    "findingProviderId": "organizations/ORGANIZATION_NUMBER/firstPartyFindingProviders/etd",
    "indicator": {},
    "kubernetes": {
      "bindings": [
        {
          "name": "cluster-admin",
          "role": {
            "kind": "CLUSTER_ROLE",
            "name": "cluster-admin"
          },
          "subjects": [
            {
              "kind": "USER",
              "name": "testUser-1665153212"
            }
          ]
        }
      ]
    },
    "mitreAttack": {},
    "mute": "UNDEFINED",
    "name": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID/findings/05b52fe8267d44bdb33c89367f0dd11a",
    "parent": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID",
    "parentDisplayName": "Event Threat Detection",
    "resourceName": "//container.googleapis.com/projects/PROJECT_ID/locations/us-west1-a/clusters/CLUSTER_NAME",
    "severity": "LOW",
    "sourceDisplayName": "Event Threat Detection",
    "state": "ACTIVE",
    "vulnerability": {},
    "workflowState": "NEW"
  },
  "resource": {
    "name": "//container.googleapis.com/projects/PROJECT_ID/locations/us-west1-a/clusters/CLUSTER_NAME",
    "display_name": "CLUSTER_NAME",
    "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "project_display_name": "PROJECT_ID",
    "parent_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "parent_display_name": "PROJECT_ID",
    "type": "google.container.Cluster",
    "folders": [
      {
        "resourceFolderDisplayName": "FOLDER_NAME",
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER"
      }
    ]
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_NUMBER"
    },
    "detectionCategory": {
      "ruleName": "gke_control_plane",
      "subRuleName": "edit_sensitive_rbac_object"
    },
    "detectionPriority": "LOW",
    "affectedResources": [
      {
        "gcpResourceName": "//k8s.io/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin"
      },
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1665128526",
            "nanos": 44146000
          },
          "insertId": "5d80de5c-84b8-4f42-84c7-6b597162e00a"
        }
      }
    ],
    "properties": {},
    "findingId": "05b52fe8267d44bdb33c89367f0dd11a",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/tactics/TA0004/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222022-10-07T07:42:06.044146Z%22%0AinsertId%3D%225d80de5c-84b8-4f42-84c7-6b597162e00a%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
        }
      ],
      "relatedFindingUri": {}
    }
  }
}

Langkah berikutnya