Fork Bomb

:(){:|: &};:

Q : 쉘에서 다음 명령을 수행하면 어떻게 되는가?

A : 제한 사항이 없는 경우라면 쉘을 쓸 수 없게 된다.

설명

리눅스 사용자라면, ;가 명령을 분리하기 위해 넣은 것임을 알 수 있다. 즉 위 스크립트는 함수 :를 실행한다.

:;이전에서 정의하고 있다. 브래킷 안의 정의된 내용은

  1. : 자기 자신을 실행시켜서
  2. 파이프라인을 통해 :에 전달하고
  3. &로 백그라운드에서 실행

되도록 한다.

백그라운드 실행 제한이나 포크 리밋 등이 시스템에 존재해 자동으로 킬이 된다면 멈추지만 그런 안전장치가 없다면 시스템은 사용 불가 상태가 된다. 메모리가 모자라면 스왑돌리고 하면서 점점 느려져간다. 생각을 멈추기 전에 재부팅시켜주자.

더 읽기

위키백과 항목 Fork Bomb에서 이 경우, 다른 언어로 쓰인 경우와 해제 방법 그리고 방지 방법에 대해 나와있다.

감상

ulimit은 역시 필수.

Fork bomb은 공격 방법으로 따지면 DoS 중에서도 세련되지 못한 편이다. 예전 html제한이 없던 브라우저 채팅 시절에 무한 팝업창을 띄우던 아이들과 다를바가 없다. 만약 엘레강스함이 있다면 이를 어떻게 실행하도록 만드느냐에 있을 것이다.

Leave a Reply