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