피드로 돌아가기
Dev.toDevOps
원문 읽기
Jenkins 내 ulimit 설정을 통한 Forkbomb 프로세스 증식 제어 실험
Runninig a forkbomb in Jenkins
AI 요약
Context
Jenkins의 'Execute shell' 기능을 통한 임의의 Bash 스크립트 실행 권한 확인 필요성 대두. Docker 컨테이너 환경에서 시스템 리소스 고갈을 유발하는 Forkbomb 실행 시의 커널 수준 제어 메커니즘 분석을 목적으로 함.
Technical Solution
- ulimit -u 50 설정을 통한 UID당 최대 프로세스 생성 수를 제한하여 커널의 copy_process() 단계에서 EAGAIN 에러를 유도하는 리소스 캡핑 설계
- JENKINS_NODE_COOKIE(BUILD_ID) 환경 변수를 임의 값으로 변경하여 Jenkins Process Reaper의 추적 및 강제 종료 로직을 우회하는 프로세스 고립화 구현
- 클래식한 콜론 문법 대신 Named Function 형태의 재귀 호출 구조를 채택하여 Jenkins 스크립트 파서의 구문 분석 오류 해결
- /bin/bash를 통한 /tmp 내 임시 스크립트 직접 실행 방식으로 Jenkins 시스템 사용자의 권한 범위 내에서 리소스 점유 시도
실천 포인트
- CI/CD 에이전트 내 사용자 정의 스크립트 실행 시 ulimit 설정을 통한 프로세스 생성 수 제한 검토 - Jenkins의 Process Reaper 메커니즘을 우회할 수 있는 환경 변수 조작 가능성 확인 및 보안 정책 수립 - 컨테이너 기반 빌드 환경에서 호스트 커널 리소스 전이 방지를 위한 Resource Quota 설정 적용