설명
Docker Compose의 security_opt에 no-new-privileges:true를 설정하면 새 프로그램 실행 시 setuid·setgid나 파일 capability를 통해 추가 권한을 얻는 것을 제한합니다. 이 보호가 없으면 그러한 권한 상승 경로가 남을 수 있습니다.
이 옵션은 이미 가진 권한을 제거하지 않으며 모든 취약점 악용을 막는 것도 아닙니다. 최소 권한 실행과 함께 사용해야 합니다.
잠재적 영향
- 침해된 프로세스가 권한 상승 기능이 있는 프로그램을 실행해 더 높은 권한을 얻을 수 있습니다.
- 추가 권한으로 접근할 수 있는 데이터나 자원까지 피해가 확대될 수 있습니다.
해결 방법
- 서비스의
security_opt에no-new-privileges:true를 명시하세요. - 권한 상승에 의존하는 초기화나 실행 절차를 확인하고 최소 권한으로 동작하도록 조정하세요.
privileged, 추가 capability, 민감한 마운트도 검토하고 변경 후 애플리케이션을 시험하세요.
예시
예제는 실제 빌드 컨텍스트와 service.dockerfile이 필요합니다.
변경 전
yaml
version: "3.4"
services:
app:
build:
context: ./
dockerfile: service.dockerfile
security_opt:
- no-new-privileges:false
새 프로그램 실행을 통한 권한 상승을 제한하는 보호가 꺼져 있습니다.
변경 후
yaml
version: "3.4"
services:
app:
build:
context: ./
dockerfile: service.dockerfile
security_opt:
- no-new-privileges:true
no-new-privileges:true를 적용합니다. 필요한 실행 절차가 이 제한과 함께 동작하는지 확인하세요.