이 문서에서는 Security Command Center의 위협 발견 항목 유형에 대해 설명합니다. 위협 발견 항목은 위협 감지기가 클라우드 리소스에서 잠재적인 위협을 감지할 때 생성됩니다. 사용 가능한 위협 발견 항목의 전체 목록은 위협 발견 항목 색인을 참고하세요.
개요
GCONV_PATH
환경 변수가 설정된 상태로 Polkit의 pkexec
이 실행되었습니다. 로컬 사용자는 이 결함을 사용하여 손상된 시스템에서 루트 권한을 획득하여 특별히 제작된 코드를 실행할 수 있습니다.
대응 방법
이 발견 항목에 대응하려면 다음을 수행하세요.
1단계: 발견 항목 세부정보 검토하기
발견 항목 검토의 지시에 따라
Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034)
발견 항목을 엽니다. 발견 항목의 세부정보 패널의 요약 탭이 열립니다.요약 탭에서 다음 섹션의 정보를 검토합니다.
- 특히 다음 필드를 포함하는 감지된 항목:
- 프로그램 바이너리: 실행된 바이너리의 절대 경로
- 인수: 바이너리 실행 중에 전달되는 인수입니다.
- 특히 다음 필드를 포함하는 영향을 받는 리소스:
- 리소스 전체 이름: 프로젝트 번호, 위치, 클러스터 이름을 포함한 클러스터의 전체 리소스 이름
- 특히 다음 필드를 포함하는 감지된 항목:
발견 항목의 세부정보 보기에서 JSON 탭을 클릭합니다.
JSON에서 다음 필드를 확인합니다.
resource
:project_display_name
: 클러스터가 포함된 프로젝트 이름
finding
:processes
:binary
:path
: 실행된 바이너리의 전체 경로입니다.
args
: 바이너리를 실행하는 동안 제공된 인수입니다.
sourceProperties
:Pod_Namespace
: 포드의 Kubernetes 네임스페이스 이름Pod_Name
: GKE 포드의 이름Container_Name
: 영향을 받는 컨테이너의 이름Container_Image_Uri
: 배포 중인 컨테이너 이미지의 이름VM_Instance_Name
: 포드가 실행된 GKE 노드의 이름
이 컨테이너에서 비슷한 시점에 발생한 다른 발견 항목을 식별합니다. 관련 발견 항목은 권장사항을 따르지 않은 것이 아니라 악의적인 활동이었음을 의미할 수 있습니다.
2단계: 클러스터 및 노드 검토하기
Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name
에 나열된 프로젝트를 선택합니다.발견 항목 세부정보의 요약 탭에서 리소스 전체 이름 행에 나열된 클러스터를 선택합니다. 클러스터 및 해당 소유자의 모든 메타데이터를 확인합니다.
노드 탭을 클릭합니다.
VM_Instance_Name
에 나열된 노드를 선택합니다.세부정보 탭을 클릭하고
container.googleapis.com/instance_id
주석을 확인합니다.
3단계: 포드 검토하기
Google Cloud 콘솔에서 Kubernetes 워크로드 페이지로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name
에 나열된 프로젝트를 선택합니다.필요한 경우 발견 항목 세부정보의 요약 탭에서 리소스 전체 이름 행에 나열된 클러스터와
Pod_Namespace
에 나열된 포드 네임스페이스로 필터링합니다.Pod_Name
에 나열된 포드를 선택합니다. 포드 및 해당 소유자의 모든 메타데이터를 확인합니다.
4단계: 로그 확인하기
Google Cloud 콘솔에서 로그 탐색기로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name
에 나열된 프로젝트를 선택합니다.기간 선택을 원하는 기간으로 설정합니다.
로드되는 페이지에서 다음을 수행합니다.
- 다음 필터를 사용하여
Pod_Name
의 포드 로그를 찾습니다.resource.type="k8s_container"
resource.labels.project_id="RESOURCE.PROJECT_DISPLAY_NAME"
resource.labels.location="LOCATION"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.namespace_name="POD_NAMESPACE"
resource.labels.pod_name="POD_NAME"
- 다음 필터를 사용하여 클러스터 감사 로그를 찾습니다.
logName="projects/RESOURCE.PROJECT_DISPLAY_NAME/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
resource.labels.project_id="RESOURCE.PROJECT_DISPLAY_NAME"
resource.labels.location="LOCATION"
resource.labels.cluster_name="CLUSTER_NAME"
POD_NAME
- 다음 필터를 사용하여 GKE 노드 콘솔 로그를 찾습니다.
resource.type="gce_instance"
resource.labels.instance_id="INSTANCE_ID"
- 다음 필터를 사용하여
5단계: 실행 중인 컨테이너 조사하기
컨테이너가 계속 실행 중이면 컨테이너 환경을 직접 조사할 수 있습니다.
Google Cloud 콘솔로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name
에 나열된 프로젝트를 선택합니다.Cloud Shell 활성화
를 클릭합니다.
다음 명령어를 실행하여 클러스터의 GKE 사용자 인증 정보를 가져옵니다.
영역 클러스터의 경우:
gcloud container clusters get-credentials CLUSTER_NAME \ --zone LOCATION \ --project PROJECT_NAME
리전 클러스터의 경우:
gcloud container clusters get-credentials CLUSTER_NAME \ --region LOCATION \ --project PROJECT_NAME
다음을 바꿉니다.
CLUSTER_NAME
:resource.labels.cluster_name
에 나열된 클러스터LOCATION
:resource.labels.location
에 나열된 위치PROJECT_NAME
:resource.project_display_name
에 나열된 프로젝트 이름
실행된 바이너리를 검색합니다.
kubectl cp \ POD_NAMESPACE/POD_NAME:PROCESS_BINARY_FULLPATH \ -c CONTAINER_NAME \ LOCAL_FILE
LOCAL_FILE
을 추가된 바이너리를 저장할 로컬 파일 경로로 바꿉니다.다음 명령어를 실행하여 컨테이너 환경에 연결합니다.
kubectl exec \ --namespace=POD_NAMESPACE \ -ti POD_NAME \ -c CONTAINER_NAME \ -- /bin/sh
이 명령어를 실행하려면 컨테이너의 셸이
/bin/sh
에 설치되어 있어야 합니다.
6단계: 공격 및 대응 방법 조사하기
- 이 발견 항목 유형 권한 에스컬레이션의 MITRE ATT&CK 프레임워크 항목을 검토합니다.
- 대응 계획을 개발하려면 조사 결과를 MITRE 연구와 결합합니다.
7단계: 대응 구현하기
다음의 응답 계획이 이 발견 항목에 적합할 수 있지만 작업에도 영향을 줄 수 있습니다. 조사에서 수집한 정보를 신중하게 평가하여 발견 항목을 해결할 최선의 방법을 결정해야 합니다.
다음 단계
- Security Command Center에서 위협 발견 항목을 사용하는 방법을 알아보세요.
- 위협 발견 항목 색인을 참고하세요.
- Google Cloud 콘솔을 통해 결과를 검토하는 방법을 알아봅니다.
- 위협 결과를 생성하는 서비스에 대해 알아봅니다.