포크 폭탄
Fork bomb시리즈의 일부 |
정보 보안 |
---|
관련 보안 카테고리 |
위협 |
|
방어. |
컴퓨팅에서 포크 폭탄(토끼 바이러스 또는 와빗이라고도[1] 함)은 프로세스가 지속적으로 자신을 복제하여 사용 가능한 시스템 리소스를 고갈시키고 리소스 부족으로 인해 시스템이 느려지거나 크래시되는 서비스 거부 공격입니다.
역사
1978년경, 와빗이라고 불리는 포크 폭탄의 초기 변형은 System/360에서 작동한다고 보고되었다.RABB라는 비슷한 공격에서 비롯된 것일 수도 있어요ITS는 1969년부터 워싱턴 [1]대학의 Burroughs 5500을 보고했습니다.
실행
포크 폭탄은 포킹 과정에서 CPU 시간을 소비하는 것과 운영 체제의 프로세스 [2][3]테이블을 포화시키는 것 모두로 작동합니다.포크 폭탄의 기본 구현은 자신의 새로운 복사본을 반복적으로 발사하는 무한 루프입니다.
Unix와 유사한 운영체제에서 포크 폭탄은 일반적으로 포크 시스템 [3]호출을 사용하도록 작성됩니다.분기된 프로세스도 첫 번째 프로그램의 복사본이기 때문에 프레임 포인터의 다음 주소에서 실행을 재개하면 동일한 무한 루프의 자체 복사본 내에서 끝없이 포킹이 계속되므로 프로세스가 기하급수적으로 증가하는 효과가 있습니다.현대의 Unix 시스템은 일반적으로 [4]새로운 프로세스를 포킹할 때 Copy-on-Write 자원 관리 기술을 사용하기 때문에 포크 폭탄은 일반적으로 이러한 시스템의 메모리를 포화시키지 않습니다.
Microsoft Windows operating system에는 [5]Unix 의 포크 시스템 호출과 동등한 기능이 없기 때문에, 이러한 operating system의 포크 폭탄은 기존의 포킹이 아닌 새로운 프로세스를 작성해야 합니다.
포크 폭탄의 전형적인 예로는 Unix 쉘 폭탄이 있습니다.:(){ : :& };:
다음과 같이 쉽게 이해할 수 있습니다.
fork() {fork & } fork
그 안에서 함수가 정의된다.fork()
( )를 호출합니다.fork
), 그 후 배관(
그 결과, 그 자체의 백그라운드 작업(&
).
예방
포크 폭탄의 작동 모드는 새로운 프로세스를 만들어 완전히 캡슐화되므로 포크 폭탄이 시스템 전체에 심각한 영향을 미치는 것을 방지하는 한 가지 방법은 한 명의 사용자가 소유할 수 있는 최대 프로세스 수를 제한하는 것이다.Linux 에서는 ulimit 유틸리티(예: 명령어)를 사용하여 이를 수행할 수 있습니다.ulimit -u 30
는 영향을 받는 사용자를 최대 30개의 프로세스로 [6]제한합니다.PAM 지원 시스템에서는 이 제한은 다음에서도 설정할 수 있습니다./etc/security/limits.conf
및 FreeBSD에서는 시스템 관리자는 다음 항목에 제한을 둘 수 있습니다.[7]/etc/login.conf
최신 Linux 시스템에서는 cgroups 및 프로세스 번호([9]PID) 컨트롤러를 통해 보다 세밀한 포크 폭탄 방지도 가능합니다.[8]
「 」를 참조해 주세요.
레퍼런스
- ^ a b Raymond, Eric S. (October 1, 2004). "wabbit". The Jargon Lexicon. Archived from the original on May 15, 2012. Retrieved October 15, 2013.
- ^ Ye, Nong (2008). Secure Computer and Network Systems: Modeling, Analysis and Design. p. 16. ISBN 978-0470023242.
- ^ a b Jielin, Dong (2007). Network Dictionary. p. 200. ISBN 978-1602670006.
- ^ Dhamdhere, Dhananjay M. (2006). Operating Systems: A Concept-based Approach. p. 285. ISBN 0-07-061194-7.
- ^ Hammond, Mark (2000). Python Programming On Win32: Help for Windows Programmers. p. 35. ISBN 1565926218.
- ^ Cooper, Mendel (2005). Advanced Bash Scripting Guide. pp. 305–306. ISBN 1430319305.
- ^ Soyinka, Wale (2012). Linux Administration: A Beginners Guide. pp. 364–365. ISBN 978-0071767590.
- ^ Lucas, Michael W. (2007). Absolute FreeBSD: The Complete Guide to FreeBSD. pp. 198–199. ISBN 978-1593271510.
- ^ "Process Number Controller in Documentation/ as appeared in Linux kernel 5.3". October 8, 2019. Archived from the original on October 8, 2019. Retrieved October 8, 2019.