Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Концепция вилочной бомбы - процессы постоянно копируют себя, потенциально вызывая отказ в обслуживании.

В вычислении , а вилка бомбы (также называемый вирусом кролика или Wabbit [1] ) является отказ в обслуживании нападения в котором процесс непрерывно реплицируется истощать доступные системные ресурсы, замедление или сбой системы из - за голод ресурсов .

История [ править ]

Примерно в 1978 году сообщалось, что на System / 360 работал ранний вариант вилочной бомбы под названием wabbit . Возможно, он произошел от аналогичной атаки под названием RABBITS, о которой было сообщено в 1969 году на Burroughs 5500 в Вашингтонском университете . [1]

Реализация [ править ]

Вилочные бомбы работают как за счет использования процессорного времени в процессе разветвления , так и за счет насыщения таблицы процессов операционной системы . [2] [3] Базовая реализация вилочной бомбы - это бесконечный цикл, который многократно запускает новые копии самого себя.

В Unix- подобных операционных системах форк-бомбы обычно пишутся с использованием системного вызова fork . [3] Поскольку разветвленные процессы также являются копиями первой программы, как только они возобновляют выполнение со следующего адреса по указателю кадра , они продолжают бесконечно разветвляться внутри своей собственной копии того же бесконечного цикла; это вызывает экспоненциальный рост процессов. Поскольку современные системы Unix обычно используют технику управления ресурсами « копирование при записи» при форковании новых процессов [4], вилочная бомба обычно не насыщает память такой системы.

Операционные системы Microsoft Windows не имеют функциональных возможностей, эквивалентных системному вызову вилки Unix; [5] вилка-бомба в такой операционной системе должна поэтому создавать новый процесс вместо разветвления из существующего.

Классический пример вилки бомбы является Unix - оболочки один :(){ :|:& };:, который может быть более легко понят как:

вилка ()  { вилка | вилка & }вилка

В нем функция определяется ( fork()) как вызывающая себя ( fork), затем передающая ( |) ее результат в фоновое задание самой себя ( &).

Эквивалент Windows, учитывая ограничения в системных вызовах, может быть записан как таковой в пакетном режиме :

@ echo off start copy c: \ fork { pause goto  start

Еще более короткая версия этого может быть достигнута с помощью анонимных функций :

% 0 | % 0

Профилактика [ править ]

Поскольку режим работы вилочной бомбы полностью инкапсулируется путем создания новых процессов, один из способов предотвратить сильное влияние вилочной бомбы на всю систему - ограничить максимальное количество процессов, которыми может владеть один пользователь. В Linux это можно сделать с помощью утилиты ulimit ; например, команда ulimit -u 30ограничит затронутого пользователя максимум тридцатью собственными процессами. [6] На РАМЕ с включенной поддержкой системы, этот предел может быть также установлен в /etc/security/limits.conf, [7] и на FreeBSD, системный администратор может установить ограничение в /etc/login.conf. [8] Современные системы Linux также позволяют более детально предотвращать «бомбы вилки» с помощью контрольных групп и контроллера номера процесса (PID). [9]

См. Также [ править ]

  • Тупик
  • Логическая бомба
  • Бомба замедленного действия (программное обеспечение)

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Примеры вилок бомб на многих языках