피드로 돌아가기
When --cap-drop ALL Broke the Gate Socket
Dev.toDev.to
Security

--cap-drop ALL로 인한 CAP_DAC_OVERRIDE 상실과 Unix Socket EACCES 해결

When --cap-drop ALL Broke the Gate Socket

Jeremy Longshore2026년 6월 26일10advanced

Context

AI 코딩 에이전트의 Tool Call을 제어하는 Sandbox 환경에서 Unix Domain Socket 기반의 Governance Plane을 운영하는 구조임. 컨테이너 보안 강화를 위해 모든 Capability를 제거한 설정이 Root 권한 프로세스의 권한 우회 메커니즘을 차단하며 통신 단절이 발생함.

Technical Solution

  • Docker run 시 --cap-drop ALL 옵션을 통한 Root 프로세스의 CAP_DAC_OVERRIDE 권한 제거
  • Unix Domain Socket 연결 시 필수적인 connect() 시스템 콜의 Write 권한 요구사항 식별
  • 소켓 파일 모드 0775 설정으로 인해 'others' 그룹에 Write 권한이 부재한 상태 확인
  • 권한 우회 Capability 상실에 따라 커널의 inode_permission 체크 단계에서 EACCES 에러 발생
  • 소켓 파일의 모드를 0777으로 변경하여 UID/GID와 무관하게 Write 권한을 보장하는 구조로 수정
  • CI 단계에서 Journal 기록 여부를 검증하는 'Hollow-Green' 탐지 로직을 통해 무결성 검증 체계 구축

- Container Hardening 시 `--cap-drop ALL` 적용 후 Root 프로세스가 의존하는 Linux Capabilities 목록 재검토 - Unix Domain Socket 사용 시 소켓 파일의 Permission Bit가 `connect()` 호출 프로세스의 권한과 일치하는지 확인 - 프로세스 종료 코드(Exit 0) 외에 실제 비즈니스 로직의 결과물(Journal, Log 등)을 검증하는 CI Guardrail 설계

원문 읽기