Вилочная бомба - Fork bomb
В вычисление, а вилка бомба (также называемый вирус кролика или же болван[1]) это атака отказа в обслуживании при этом процесс постоянно реплицирует себя, чтобы истощить доступные системные ресурсы, замедляя или ломая систему из-за ресурсный голод.
История
Примерно в 1978 году сообщалось, что ранний вариант вилочной бомбы под названием wabbit работал на Система / 360. Это могло произойти в результате аналогичной атаки, называемой КРОЛИКИ сообщается с 1969 г. Берроуз 5500 на Вашингтонский университет.[1]
Выполнение
Вилочные бомбы работают одновременно, потребляя процессорное время в процессе разветвление, и насыщая Операционная система таблица процессов.[2][3] Базовая реализация вилочной бомбы - это бесконечный цикл который постоянно запускает новые копии самого себя.
В Unix -как операционные системы, вилочные бомбы обычно пишутся для использования вилки системный вызов.[3] Разветвленные процессы также являются копиями первой программы, когда они возобновляют выполнение со следующего адреса по указатель кадра, они продолжают бесконечно разветвляться внутри своей собственной копии того же бесконечного цикла; это вызывает экспоненциальный рост в процессах. Поскольку современные системы Unix обычно используют копирование при записи техника управления ресурсами при разветвлении новых процессов,[4] вилочная бомба обычно не насыщает память такой системы.
Майкрософт Виндоус операционные системы не имеют функциональных возможностей, эквивалентных системному вызову вилки Unix;[5] Таким образом, вилочная бомба в такой операционной системе должна создавать новый процесс, а не разветвляться из существующего.
Классическим примером вилочной бомбы является Оболочка Unix один :(){ :|:& };:
, который проще понять как:
вилка() { вилка | вилка &}вилка
В нем определяется функция (вилка()
) как называющий себя (вилка
), тогда трубопровод (|
) его результат на задний план работа сам по себе (&
).
Эквивалент Windows, учитывая ограничения в системных вызовах, может быть записан как таковой в партия:
:петляНачните % ~ nx0идти к петля
Еще более короткая версия этого может быть достигнута с помощью анонимные функции:
%0|%0
Профилактика
Поскольку режим работы вилочной бомбы полностью инкапсулируется путем создания новых процессов, один из способов предотвратить серьезное влияние вилочной бомбы на всю систему - это ограничить максимальное количество процессов, которыми может владеть один пользователь. В Linux этого можно достичь, используя ulimit полезность; например, команда ulimit -u 30
ограничит затронутого пользователя максимум тридцатью собственными процессами.[6]На PAM -включенных системах, этот предел также может быть установлен в /etc/security/limits.conf
,[7]а во FreeBSD системный администратор может установить ограничения в /etc/login.conf
.[8]Современные системы Linux также позволяют более детально предотвращать бомбардировку вилкой через cgroups и номер процесса (ПИД-регулятор).[9]
Смотрите также
Рекомендации
- ^ а б Раймонд, Эрик С. (1 октября 2004 г.). "ваббит". Лексикон жаргона. Получено 15 октября, 2013.
- ^ Е, Нонг (2008). Безопасные компьютерные и сетевые системы: моделирование, анализ и проектирование. п. 16. ISBN 0470023244.
- ^ а б Джилин, Донг (2007). Сетевой словарь. п. 200. ISBN 1602670005.
- ^ Дхамдхере, Дхананджай М. (2006). Операционные системы: концептуальный подход. п. 285. ISBN 0-07-061194-7.
- ^ Хаммонд, Марк (2000). Программирование Python в Win32: Справка для программистов Windows. п. 35. ISBN 1565926218.
- ^ Купер, Мендель (2005). Расширенное руководство по сценариям на Bash. С. 305–306. ISBN 1430319305.
- ^ Сойинка, Уэйл (2012). Администрирование Linux: руководство для начинающих. С. 364–365. ISBN 0071767592.
- ^ Лукас, Майкл В. (2007). Абсолютная FreeBSD: Полное руководство по FreeBSD. С. 198–199. ISBN 1593271514.
- ^ «Контроллер номера процесса в документации / как появилось в ядре Linux 5.3». 8 октября 2019 года.