프로세스 권한 상승을 허용하면 POD가 setuid 바이너리를 악용하는 공격에 노출됩니다.
이 필드는 컨테이너 프로세스에 no_new_privs 플래그가 설정되어 있는지 여부를 직접 제어합니다. 이 플래그가 활성화되면 setuid 또는 setgid 비트로 구성된 바이너리는 런타임 uid 또는 gid를 변경할 수 없습니다: 잠재적인 공격자는 POD에서 성공적으로 Root로 작동하기 위해 다른 권한 상승 기술에 의존해야 합니다.
Kubernetes 클러스터와 POD의 복원력에 따라 공격자는 클러스터가 포드를 시작한 노드를 손상시켜 클러스터에 대한 공격을 확장할 수 있습니다.
setuid 또는 setgid 비트와 관련된 POD의 위험이 완화되지 않은 경우 allowPrivilegeEscalation 필드를 true로 설정하면 안 됩니다.
다음 질문을 확인하세요
- 이 POD는 Kubernetes 클러스터의 관리자가 아닌 사용자가 접근할 수 있습니다.
- 이 POD에는 setuid 또는 setgid 기능이 있는 바이너리가 포함되어 있습니다.
만약 모든 질문에 해당된다면 위험이 있을 수 있습니다.
권장되는 보안 코딩 방법
권한 상승을 사용하지마세요.
민감한 코드 예시
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
securityContext:
allowPrivilegeEscalation: true # Sensitive
규칙을 준수한 해결책
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
같이보면 좋은 자료
- MITRE, CWE-284 - 부적절한 접근 제어
- Linux Kernel Archives, no_new_privs - 공식 문서
If you like SONARKUBE, don’t forget to give me a star.