Вилочная бомба - 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. ^ а б Раймонд, Эрик С. (1 октября 2004 г.). "ваббит". Лексикон жаргона. Получено 15 октября, 2013.
  2. ^ Е, Нонг (2008). Безопасные компьютерные и сетевые системы: моделирование, анализ и проектирование. п. 16. ISBN  0470023244.
  3. ^ а б Джилин, Донг (2007). Сетевой словарь. п. 200. ISBN  1602670005.
  4. ^ Дхамдхере, Дхананджай М. (2006). Операционные системы: концептуальный подход. п. 285. ISBN  0-07-061194-7.
  5. ^ Хаммонд, Марк (2000). Программирование Python в Win32: Справка для программистов Windows. п. 35. ISBN  1565926218.
  6. ^ Купер, Мендель (2005). Расширенное руководство по сценариям на Bash. С. 305–306. ISBN  1430319305.
  7. ^ Сойинка, Уэйл (2012). Администрирование Linux: руководство для начинающих. С. 364–365. ISBN  0071767592.
  8. ^ Лукас, Майкл В. (2007). Абсолютная FreeBSD: Полное руководство по FreeBSD. С. 198–199. ISBN  1593271514.
  9. ^ «Контроллер номера процесса в документации / как появилось в ядре Linux 5.3». 8 октября 2019 года.

внешняя ссылка