WIPIVERSE

포크 폭탄

포크 폭탄은 컴퓨터 시스템에서 프로세스를 지속적으로 복제해 시스템 자원을 고갈시키는 일종의 악성 프로그램(또는 공격 기법)이다. 일반적으로 유닉스 계열 운영체제에서 제공하는 fork() 시스템 호출을 이용하여 새로운 프로세스를 생성하고, 이 프로세스가 다시 fork()를 호출하는 방식으로 무한히 확장된다. 결과적으로 CPU, 메모리, 프로세스 테이블 등의 제한된 자원이 빠르게 소진되어 시스템이 정상적인 작업을 수행하지 못하게 된다.

어원 및 용어

  • Fork: 운영체제에서 현재 실행 중인 프로세스의 복제본을 생성하는 시스템 호출을 의미한다. 영어 “fork”는 ‘갈라지다’는 뜻을 가지며, 하나의 프로세스가 두 개 이상의 프로세스로 분기한다는 의미에서 차용되었다.
  • Bomb: 폭탄이라는 의미로, 시스템에 급격하고 파괴적인 영향을 미친다는 비유적 표현이다.
  • 따라서 “포크 폭탄”(fork bomb)은 “fork를 이용해 시스템 자원을 급격히 소진시키는 폭탄”이라는 의미를 가진다.

사용 맥락

  1. 보안 연구 및 교육: 시스템 자원의 한계를 실험하거나, 프로세스 관리 메커니즘을 이해하기 위한 교육·실험 용도로 제한된 환경에서 사용된다.
  2. 악의적 공격: 제한이 없는 사용자 계정이나 보안이 취약한 시스템에 배포되어 서비스 거부(DoS) 공격을 수행한다.
  3. 시스템 테스트: 관리자가 시스템의 안정성을 검증하기 위해 의도적으로 포크 폭탄을 실행해 보는 경우가 있다(주로 격리된 테스트 환경에서).

동작 원리 (예시)

int main() {
    while (1) {
        fork();   // 새로운 프로세스 생성
    }
    return 0;
}

위와 같은 프로그램을 실행하면 fork() 호출이 반복되어 프로세스 수가 기하급수적으로 증가한다. 대부분의 운영체제는 한 사용자가 생성할 수 있는 프로세스 수에 제한(ulimit)을 두고 있으나, 이 제한이 충분히 높거나 설정이 없을 경우 시스템 전체가 마비될 수 있다.

예방 및 대응 방안

  • 프로세스 수 제한: ulimit -u(사용자당 최대 프로세스 수) 등으로 사용자별 프로세스 수를 제한한다.
  • 리소스 할당 제어: cgroups, systemd 서비스 제한 등을 활용해 CPU와 메모리 사용량을 제한한다.
  • 보안 정책 적용: 실행 파일에 대한 권한 관리, 신뢰할 수 없는 스크립트의 실행 차단, SELinux/AppArmor와 같은 MAC(강제 접근 제어) 시스템 적용.
  • 감시 및 로그 분석: 시스템 로그와 프로세스 모니터링 도구(top, htop, ps)를 통해 비정상적인 프로세스 급증을 조기에 탐지한다.

관련 용어

  • Denial-of-Service (DoS) 공격: 서비스 이용을 방해하는 모든 형태의 공격을 포괄한다.
  • 리소스 고갈 공격: 메모리, 디스크, 네트워크 대역폭 등 특정 자원을 목표로 하는 공격.
  • 프로세스 폭탄: 동일한 개념을 다른 용어로 표현한 경우가 있다.

참고: 포크 폭탄은 실제 시스템에 피해를 줄 수 있는 위험한 코드이므로, 실험 목적이라 하더라도 격리된 가상 환경 또는 샌드박스에서만 실행해야 한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기