컴퓨터 세계에서는 특정 명령 언뜻 보면 무해해 보일 수도 있지만, 악의적으로 또는 실수로 사용하면 전체 시스템을 망칠 수 있는 파괴적인 힘이 숨어 있습니다. 이러한 명령 중에서 가장 잘 알려지거나 그렇지 않은 명령 중 하나는 소위 명령입니다. 포크 폭탄, 또는 포크 폭탄.
포크밤은 서비스 거부(DoS) 공격의 한 형태에 지나지 않습니다. 사용 가능한 시스템 리소스를 소비하도록 설계되었습니다.CPU, 메모리 등을 사용할 수 없게 될 정도입니다. 이 명령이 어떻게 작동하는지, 왜 그렇게 해로울 수 있는지, 자신을 보호하기 위해 어떤 조치를 취할 수 있는지 궁금하신 경우 여기에서 알아야 할 모든 것을 접근 가능하고 자세하게 설명된 내용으로 찾아보실 수 있습니다.
포크 폭탄이란 무엇입니까?
기하급수적으로 복제되는 경향이 있어 '토끼 바이러스'라고도 알려진 포크폭탄은 시스템을 포화시키기 위해 프로세스의 대량 생성을 사용합니다. 운영. 이는 Unix 및 Linux 시스템에서 사용할 수 있는 포크 기능을 사용하는 명령을 통해 수행됩니다. 포크 기능을 사용하면 프로세스가 자체 프로세스(자식 프로세스)의 정확한 복사본을 생성할 수 있습니다.
와 관련된 가장 대표적인 명령어 포크 폭탄 다음과 같습니다.
: () {: | : &}; :
이 명령은 비록 작지만 믿을 수 없을 만큼 강력한 구조를 가지고 있습니다. 그것이 하는 일은 다음과 같은 함수를 정의하는 것입니다. :, 재귀적으로 자신을 호출하여 연산자 덕분에 각 실행마다 두 개의 새로운 프로세스를 생성합니다. 파이프 | &를 사용하여 백그라운드에서 실행합니다. 그 결과 프로세스가 기하급수적으로 증가하여 몇 초 만에 시스템이 붕괴됩니다.
포크 폭탄은 어떻게 작동하나요?
명령 : () {: | : &}; : 처음에는 혼란스러워 보일 수 있으므로 단계별로 살펴보겠습니다.
:
: 이 기호는 해당 기능의 이름을 나타냅니다. 실제로 어떤 이름이라도 사용할 수 있습니다.() { }
: 이 구문은 매개변수 없이 함수를 정의합니다.:|:
: 일단 정의되면 함수는 자신을 호출하고 연산자는 | 출력을 자체의 새 인스턴스로 리디렉션합니다.&
: 이 기호는 백그라운드에서 호출을 실행하여 프로세스의 동시 생성을 허용합니다.;
: 함수 정의와 초기 실행 사이를 구분하는 역할을 합니다.:
: 마지막으로, 이 마지막 기호는 일련의 프로세스를 시작하는 기능을 실행합니다.
일단 실행되면 포크폭탄은 시스템 리소스를 빠르게 소모하며, 새로운 프로세스를 실행하는 기능을 차단 일반적으로 컴퓨터를 강제로 다시 시작합니다.
취약한 시스템
실제로 모든 Unix 또는 Linux 기반 운영 체제Ubuntu, Debian 또는 Red Hat과 같은 는 모두 포크 시스템 호출을 사용하기 때문에 포크 폭탄에 취약합니다. 그러나 시스템은 Windows 포크와 동등한 기능이 없기 때문에 이러한 특정 유형의 공격에 취약하지 않습니다. 대신 Windows에서는 비슷한 방식으로 새로운 프로세스 세트를 생성해야 하지만 이를 위해서는 더 복잡한 접근 방식이 필요합니다.
다양한 언어로 된 포크폭탄의 예
La 포크 폭탄 Bash에만 국한된 것은 아닙니다. 다른 프로그래밍 언어로 구현될 수 있습니다. 다음은 몇 가지 예입니다.
파이썬 포크 폭탄
#!/usr/bin/env python import os while True: os.fork()
자바 포크 폭탄
공개 클래스 폭탄 { 공개 정적 void main(최종 문자열[] args) { while(true) { Runtime.getRuntime().exec("java Bomb"); } } }
C 포크 폭탄
#포함하다 int main(void) { while (1) { 포크(); } }
포크 폭탄의 영향
포크폭탄의 주요 충격은 다음과 같습니다. 시스템 과부하. CPU, 메모리, 프로세스 입력 등의 리소스가 빠르게 소모되어 시스템이 불안정해지거나 응답하지 않게 됩니다. 대부분의 경우 강제 재시작 통제력을 되찾기 위해. 또한 재해 발생 시 갑작스러운 애플리케이션 동작으로 인해 데이터가 손실될 위험이 높습니다.
예방 조치
포크폭탄은 파괴적일 수 있지만, 그 영향을 완화하고 예방할 수 있는 방법이 있습니다. 완전히:
1. 프로세스 수 제한
명령 한계 Linux에서는 사용자가 생성할 수 있는 최대 프로세스 수에 대한 제한을 설정할 수 있습니다. 예를 들어:
ulimit -u 5000
이는 사용자가 최대 5000개의 활성 프로세스.
2. 영구 제한 구성
제한을 영구적으로 적용하려면 파일을 수정하면 됩니다. /etc/security/limits.conf
. 예 :
하드 사용자 nproc 5000
이렇게 하면 사용자가 로그아웃한 후에도 제한이 유지됩니다.
3. Cgroup 사용
최신 Linux 시스템에서는 cgroup (제어 그룹)을 사용하면 시스템 리소스에 대한 보다 세부적인 제어를 설정할 수 있습니다. 허용된 프로세스.
소셜 네트워크에서 보는 내용에 주의를 기울이지 마세요.
이러한 유형의 명령은 소셜 네트워크에서 장난으로 나타날 수 있으므로 주의해야 하며 명령이 말하는 내용을 터미널에 입력하지 않아야 합니다. 더 이상 진행하지 않고 X에 "fork Bomb"을 넣으면 다음과 같습니다. 게시물에 대한 응답 "안녕하세요, 포크 폭탄"이라고요. 몇 분 전에 공유된 원본 게시물에는 이름이 :(){ :|:& };:인 고양이가 있고 이를 터미널에 넣었다고 나와 있습니다. 우리는 그것이 무엇인지 이미 설명했으므로 그렇게 하지 마십시오.
포크폭탄은 개념적으로는 단순하지만, 취약한 시스템에 심각한 영향을 미칩니다.. 최신 컴퓨팅 환경을 보호하려면 작동 방식, 의미, 완화 방법을 이해하는 것이 중요합니다. 이는 간단한 명령이 어떻게 치명적인 결과를 초래할 수 있는지, 그리고 적절한 시스템 관리 및 보안 경계 설정의 중요성을 상기시켜 줍니다.