Eskalasi Hak Istimewa: Peluncuran container Kubernetes dengan hak istimewa

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

Ringkasan

Aktor yang berpotensi berbahaya membuat Pod yang berisi container dengan hak istimewa atau container dengan kemampuan eskalasi hak istimewa.

Container dengan hak istimewa memiliki kolom privileged yang ditetapkan ke true. Container dengan kemampuan eskalasi hak istimewa memiliki kolom allowPrivilegeEscalation yang ditetapkan ke true. Untuk mengetahui informasi selengkapnya, lihat referensi SecurityContext v1 core API di dokumentasi Kubernetes.

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: Launch of privileged Kubernetes container temuan seperti yang diarahkan di 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.
      • Kubernetes pods: Pod yang baru dibuat dengan container yang memiliki hak istimewa.
    • 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 tab JSON, perhatikan nilai kolom temuan:

    • findings.kubernetes.pods[].containers: container dengan hak istimewa yang muncul dalam Pod.

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. 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. Pastikan container yang dibuat memerlukan akses ke resource host dan kemampuan kernel.
  3. Tentukan apakah ada tanda aktivitas berbahaya lainnya oleh prinsipal dalam log.
  4. 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 tindakan untuk menentukan keabsahannya.

  5. Untuk mengembangkan rencana respons, gabungkan hasil penyelidikan 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.core.v1.pods.create"
    },
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/04206668443b45078d5b51c908ad87da",
    "category": "Privilege Escalation: Launch of privileged Kubernetes container",
    "contacts": {
      "technical": {
        "contacts": [
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          }
        ]
      }
    },
    "createTime": "2022-10-08T21:43:41.145Z",
    "database": {},
    "eventTime": "2022-10-08T21:43:09.188Z",
    "exfiltration": {},
    "findingClass": "THREAT",
    "findingProviderId": "organizations/ORGANIZATION_NUMBER/firstPartyFindingProviders/etd",
    "indicator": {},
    "kubernetes": {
      "pods": [
        {
          "ns": "default",
          "name": "POD_NAME",
          "containers": [
            {
              "name": "CONTAINER_NAME",
              "uri": "CONTAINER_URI"
            }
          ]
        }
      ]
    },
    "mitreAttack": {},
    "mute": "UNDEFINED",
    "name": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID/findings/04206668443b45078d5b51c908ad87da",
    "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": "launch_privileged_container"
    },
    "detectionPriority": "LOW",
    "affectedResources": [
      {
        "gcpResourceName": "//k8s.io/core/v1/namespaces/default/pods/POD_NAME"
      },
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1665265389",
            "nanos": 188357000
          },
          "insertId": "98b6dfb7-05f6-4279-a902-7e18e815364c"
        }
      }
    ],
    "properties": {},
    "findingId": "04206668443b45078d5b51c908ad87da",
    "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-08T21:43:09.188357Z%22%0AinsertId%3D%2298b6dfb7-05f6-4279-a902-7e18e815364c%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
        }
      ],
      "relatedFindingUri": {}
    }
  }
}

Langkah berikutnya