Формальное объяснение на языке вейсманистов-морганистов:
https://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Остальным расскажу "на пальцах". Итак, в шелле можно не только "who mom likes" писать, но и целые конструкции строить, как в настоящих языках программирования. Правда, когда я говорю своим коллегам "давайте это быстренько напишем на шелле" они делают большие глаза и говорят "ну... это же сложно". Вот такой я, испорченный гик. Короче, на шелле можно и функции определять. В результате программа может стать рекурсивной, причём тут никто за стеком и памятью интерпретатора не следит. Таким образом и работает "форк-бомба" - определяется рекурсивная функция и тут же исполняется, вводя всю систему в медленный но верный ступор. Классическая бомба выглядит как многоэтажный смайлик
Я говорил, что нельзя её запускать? Если запустили, то поздно - эта штука медленно но верно съедает ресурсы памяти пока не завесит систему намертво. Если упала на синтаксисе, есть более совместимая, но менее "смайловая" версия
У вас нет под рукой подопытного линукса? Тогда потренируйтесьна кошках в онлайн-версии, например тут
https://copy.sh/v86/?profile=linux26
Сначала вроде бы ничего не произойдёт... Но в какой-то момент система просто перестанет отвечать на нажатие команд.
Вы спросите, а как же защититься от такой тупой атаки? Ответ - в статье на басурманском языке
Мораль: нельзя отдавать процессам полный контроль, особенно в плане форканья.
https://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Остальным расскажу "на пальцах". Итак, в шелле можно не только "who mom likes" писать, но и целые конструкции строить, как в настоящих языках программирования. Правда, когда я говорю своим коллегам "давайте это быстренько напишем на шелле" они делают большие глаза и говорят "ну... это же сложно". Вот такой я, испорченный гик. Короче, на шелле можно и функции определять. В результате программа может стать рекурсивной, причём тут никто за стеком и памятью интерпретатора не следит. Таким образом и работает "форк-бомба" - определяется рекурсивная функция и тут же исполняется, вводя всю систему в медленный но верный ступор. Классическая бомба выглядит как многоэтажный смайлик
:(){ :|:& };:
Я говорил, что нельзя её запускать? Если запустили, то поздно - эта штука медленно но верно съедает ресурсы памяти пока не завесит систему намертво. Если упала на синтаксисе, есть более совместимая, но менее "смайловая" версия
b(){ b|b& };b
У вас нет под рукой подопытного линукса? Тогда потренируйтесь
https://copy.sh/v86/?profile=linux26
Сначала вроде бы ничего не произойдёт... Но в какой-то момент система просто перестанет отвечать на нажатие команд.
Вы спросите, а как же защититься от такой тупой атаки? Ответ - в статье на басурманском языке
ulimit -S -u 5000
Мораль: нельзя отдавать процессам полный контроль, особенно в плане форканья.
Tags:
(no subject)
Date: 2020-04-24 08:58 pm (UTC)(no subject)
Date: 2020-04-25 07:45 am (UTC)Кстати, я попробовал эту бомбу (первый вариант) на своём смартфоне - ничего не произошло, ибо в системе уже был заложен правильный лимит на количество пользовательских процессов. И это при том, что аппарат у меня не рутованный.
(no subject)
Date: 2020-04-25 12:17 pm (UTC)Мораль воспринята верно. :)