LINUX.ORG.RU
ФорумTalks

Я в шоке от форкбомбы


1

0

Значит, есть така команада:
:(){ :|:&};:
По умолчанию, сия комбинация, при хорошо загруженном компе (если выполняется kde и т.п.)
вешает намертво и Linux, и FreeBSD (хотя 2-ю чуть пореже).

При этом NetBSD она на вешает: в ней по умолчанию выставлен порог
на 200 процессов - в итоге после запуска система как работала, так и
продолжает работать корректно. Только новые процессы юзер запустить не может.
При этом внешне вообще ничего не происходит, и никак сие не сказывается
на работе уже запущенных программ :)) (если таковые не порождают новые процессы, конечно).

Вот, как говорится, сиди после этого и думай: какая же из всех систем
более коробочная :) Поидее требуемая в данном случае защита от такого
локального доса стоит только в NetBSD и, по-видимому, в OpenBSD.
Вот потому видать оно и правда, что "требует меньшей квалификации при настройке :)"

Кстати, всегда думал, что killall в Open и Net отсутствует, до сегодняшенго дня.
А оказалось, что есть некий pkill, который убивает много, надёжно, быстро и качественно, в том числе и по имени жертв.

Ответ на: комментарий от ero-sennin

Не компилицца под NetBSD 3.0:

$ gcc myfile.c
myfile.c:22:21: windows.h: No such file or directory
myfile.c:27: error: conflicting types for `fork'
/usr/include/unistd.h:115: error: previous declaration of `fork'
myfile.c: In function `fork':
myfile.c:28: error: `STARTUPINFO' undeclared (first use in this function)
myfile.c:28: error: (Each undeclared identifier is reported only once
myfile.c:28: error: for each function it appears in.)
myfile.c:28: error: parse error before "si"
myfile.c:29: error: `PROCESS_INFORMATION' undeclared (first use in this function)
myfile.c:30: error: `si' undeclared (first use in this function)
myfile.c:32: error: `pi' undeclared (first use in this function)
myfile.c:33: error: `TRUE' undeclared (first use in this function)
$

Видать, не такой-то и кроссплатформенный софт как это иногда декларируется. Но всё равно интересно, хоть под gentoo работает.
Что надо поменять чтоб заработало?

spinore
() автор топика
Ответ на: комментарий от annoynimous

Я сегодня пацану gentoo через ssh повесил этим подвигом :)
Он ещё не знает :)
А у себя скомпилить не могу.
перезагружаться под фрю только ради теста на фре нет смысла - у меня там никаких защит итак не стоит от форков.

spinore
() автор топика
Ответ на: комментарий от eXOR

> По памяти не поможет. Бывают форк бомбы на зомбяках.

А есть такие форк-бомбы, от которых никакие квоты не помогают в итоге, и от которых защиты нету? (userdel не в счёт :))

spinore
() автор топика
Ответ на: комментарий от spinore

> Не компилицца под NetBSD 3.0:

Фигасе, под NetBSD не определён макрос __unix. 8)

Можно заменить #ifndef __unix на #ifdef __WIN32__, так даже правильнее.

ero-sennin ★★
()
Ответ на: комментарий от spinore

> дос - он тоже безобиден. Подумаешь, люди не смогут чем-то воспользоваться некот. время...

Для сервера, скажем магазина - дос, вероятно, меньшая проблема чем снятие денег со счета (или что нибудь еще).

А для домашней машины - потеря обрабатываемых данных конечно плохо, но общее ухудшение производительности от вирусов или антивирусов, постоянно нестабильная работа, использование машины для противоправных действий (спам, те-же досы) наверно все-же хуже.

Но главное - бомба взорванная на машине но не зазомбировавшая его не несет практической пользы, а значит эти игрушуи не будут так распространены как современная вирусня.

sin_a ★★★★★
()
Ответ на: комментарий от ero-sennin

Да!

#ifndef __unix #include <windows.h>

это вариант кросплатформенности я бы назвал двухплатформенностью.:)

А вообще #if _WIN32_WINNT >= 0x0500 можно создать примерно 16000 процессов. #endif

zaregazza
()
Ответ на: комментарий от spinore

> Если ты ручками улимит ставил - то несчитово

Слака - для тех, кто сам головой думает, а не жрёт то, чем его кто-то пичкает. Не нравится - сидите на своих отчаянно тормозящих зюзях.

anonymous
()
Ответ на: комментарий от eXOR

>Бывают форк бомбы на зомбяках.

Всё-таки линукс - сатанинская система ;)))

>MBR?? форкбомбой?? это как? объясни подробнее!
Надеюсь, ты не от рута запускал?
Просто, я хочу у себя тоже попробовать.

Насчёт мбр не знаю, а вот если груб стоит на одном разделе с системой, то при перезагрузке черезресет он может и не загрузиться(один раз было такое) или грузиться ооочень медленно.

Midael ★★★★★
()
Ответ на: комментарий от Midael

я вам про форкбомбы много расказать могу. например:

1. на javascript я в 11 лет бомбу написал. каждое окно открывает 3 новых окна с тем же кодом. запустил в интернет кафе. вин 98 повесило намертво (ИЕ). побили... выкинули... больше не пускают. Кстати в том же кафе на меня накричали что я мышей по экрану водил пока венда грузилась. :)

2. приятель показал бомбу похожую на сабж. я запустил ее на своем сервере (gentoo без Х). повесило. потом запустили удаленно на всех серверах и машинах в лабе на факультете математики. все повесили. потом мы решили повесить главный сервер страны: black.clarku.edu. друган мой залогинился и проверил ulimit. по идее должно было сработать. система RH Enterprise Linux 2.4.x. короче запустил он. сначала нифига. потом через секунд 20 ssh умер. больше соеденится немона. и тут к нам заходит админ и говорит "че ето вы тут творите?" в итоге другана уволили с позором, ну и мне наподдали. кстати на mac os x наша бомба не сработала. там лимит.

вывод: на продакшн серверах такое делать не надо: убють.

Krechet
()
Ответ на: комментарий от Krechet

> да кстати если у вас не SELinux то лимиты на рута не действуют. так что под рутом не пускайте.

да, я тоже надеюсь, что столь альтернативно одаренных не найдется

annoynimous ★★★★★
()
Ответ на: комментарий от ero-sennin

ero-sennin> если у кого винда стоит, потестите, если не трудно. ;)

C:\Documents and Settings\aaa\bomb>dir
 Том в устройстве C имеет метку LABEL
 Серийный номер тома: 8888-7777

 Содержимое папки C:\Documents and Settings\aaa\bomb

16.05.2006  23:15    <DIR>          .
16.05.2006  23:15    <DIR>          ..
16.05.2006  23:15             1 550 forkbomb.cxx
16.05.2006  23:15            22 528 forkbomb.exe
16.05.2006  23:15             1 052 forkbomb.obj
               3 файлов         25 130 байт
               2 папок      23 921 152 байт свободно

C:\Documents and Settings\aaa\bomb>forkbomb

runtime error R6009
- not enough space for environment

C:\Documents and Settings\aaa\bomb>

runtime error runtime error R6028
- unable to initialize heap
R6028
- unable to initialize heap


Большинство процессов завершились с ошибкой до main() или остановлены
с сообщением "Ошибка в приложении..". 
Максимальный PID=7412. Торможение продолжалось минут 5-7.

unsigned getpagesize()
{
   SYSTEM_INFO siSysInfo;

   GetSystemInfo(&siSysInfo); 
   return (unsigned)siSysInfo.dwPageSize;
} 

zaregazza
()
Ответ на: комментарий от annoynimous

>> да кстати если у вас не SELinux то лимиты на рута не действуют. так что под рутом не пускайте.

>да, я тоже надеюсь, что столь альтернативно одаренных не найдется

были. я сам так себе на машине сделал. :( :). ну нечо. хард ресет и chfs.

Krechet
()
Ответ на: комментарий от spinore

>Знаешь, дос - он тоже безобиден. Подумаешь, люди не смогут чем-то воспользоваться некот. время...

Ага, система ГАС-Выборы или Система контроля за атомным реактором, или 
еще что-то остановится на пол дня =)

А так- фигня все это ;)

ManJak ★★★★★
()
Ответ на: комментарий от hatefu1_dead

> > Не компилицца под NetBSD 3.0:

> > $ gcc myfile.c

> gcc -D__unix myfile.c

А, спасибо, скомпилось...
Буду тестить :)

spinore
() автор топика
Ответ на: комментарий от annoynimous

> Похоже остальные, повторяя трюк, убились :)))

ну я так и понял малое количество постов в этой теме :)
Они УЖЕ не могли написать на ЛОР то, что думают по всему этому повожу :)))

spinore
() автор топика
Ответ на: комментарий от ero-sennin

> > Не компилицца под NetBSD 3.0:

> Фигасе, под NetBSD не определён макрос __unix. 8)

> Можно заменить #ifndef __unix на #ifdef __WIN32__, так даже правильнее.

> ero-sennin (*) (16.05.2006 18:40:48)

Нет, не помогает.
Пишет вот что тогда:
$ gcc myfile.c
myfile.c: In function `main':
myfile.c:45: error: `cmdline' undeclared (first use in this function)
myfile.c:45: error: (Each undeclared identifier is reported only once
myfile.c:45: error: for each function it appears in.)
$

(cтрока 45 - это cmdline = argv[0]; )

А вот gcc -D__unix myfile.c
работает для исходного варианта листинга.

spinore
() автор топика
Ответ на: комментарий от sin_a

Я с тобой полностью согласен, но, согласись, для общей стабильности форкбомбы работать не должны. Вот, бывает, что на некоторых серверах всем дают шеллы... Там просто обязаны тогда делать соответствующие механизмы защиты. Одно даже то, что любой юзер может на некоторое время парализовать работу всей системы... (до перезагрузки).

spinore
() автор топика
Ответ на: комментарий от anonymous

> > Если ты ручками улимит ставил - то несчитово

> Слака - для тех, кто сам головой думает, а не жрёт то, чем его кто-то пичкает. Не нравится - сидите на своих отчаянно тормозящих зюзях.

Ну, тогда тебе на MS Windows прямая дорога. Только очень хорошо знающий систему человек, думающий головой, сможет держать на неё сервер, закрывая или модифицируя обпасные сервисы, знающий реестр, и делающий так как нужно. В Windows по умолчанию тоже мало чего предусмотрено, например файероволл и безопасность по умолчанию там не предполагаются: кому нужно - думает головой, садится и настраивает.

spinore
() автор топика
Ответ на: комментарий от Midael

> Насчёт мбр не знаю, а вот если груб стоит на одном разделе с системой, то при перезагрузке черезресет он может и не загрузиться(один раз было такое) или грузиться ооочень медленно.

Тогда надо обязательно попробовать!!!
P.S: на чужой тачке, разумеется :)

spinore
() автор топика
Ответ на: комментарий от Krechet

МЕНЯ ПОСТИГЛО СУРОВОЕ НАКАЗАНИЕ.
ЗАПУСТИЛ ИЗ-ПОД ОТДЕЛЬНОГО ЮЗЕРА.
И ЗАПОРОЛ СЕБЕ MBR.
ХОРОШО, ЧТО У МЕНЯ БЫЛО 2 ЖЁСТКИХ ДИСКА.
ЗАГРУЗИЛСЯ СО 2-ГО - УЖЕ МНОГО ЛЕТ С НЕГО НЕ ГРУЗИЛСЯ.
ТЕПЕРЬ ПИШУ ИЗ-ПОД WINDOWS 2000.
ЧЕГО И ВАМ ВСЕМ ЖЕЛАЮ.

spinore
() автор топика
Ответ на: комментарий от spinore

> ТЕПЕРЬ ПИШУ ИЗ-ПОД WINDOWS 2000. ЧЕГО И ВАМ ВСЕМ ЖЕЛАЮ.

Фу, какая гадость! Не стыдно другим говно желать?

anonymous
()
Ответ на: комментарий от anonymous

> Re: Я в шоке от форкбомбы
> > ТЕПЕРЬ ПИШУ ИЗ-ПОД WINDOWS 2000. ЧЕГО И ВАМ ВСЕМ ЖЕЛАЮ.

> Фу, какая гадость! Не стыдно другим говно желать?

А что делать? Я уже несколько лет под виндой не сидел :(

spinore
() автор топика

Запустил :(){ :|:&};: на Слаке 10.0 (чистой, не переиначенной) из-под обычного пользователя. Первую секунду ничего, потом тормоза, в консоль высыпалось и замерло про временно недоступные для форка ресурсы, потом полный ступор, GKrellm замирает на >3800 процессов (вначале был 41), секунд через 6 начинается оживление, количество процессов резко убывает и ещё через пару секунд система начинает нормально работать как ни в чём не бывало. Ctrl-C - и форк-бомба остановлена. Вот так.

sergey_feo
()
Ответ на: комментарий от sergey_feo

Ты бы хоть топик прочитал... что ли...
Для особо одарённых:
скопируй листинг функции, описанной ниже в посте от
ero-sennin (*) (16.05.2006 11:26:39).
Сделай gcc имя_функции.
Напиши на лор о результатах. (Если мбр твой, конечно, не слетит).

spinore
() автор топика
Ответ на: комментарий от spinore

> для общей стабильности форкбомбы работать не должны.

:)

> на некоторых серверах всем дают шеллы... Там просто обязаны тогда делать соответствующие механизмы защиты.

Дак то - сервера. Там, понятное дело, должен быть и админ (желательно грамотный:), и гайки затянуты.

Это я просто попробовал, подождал дал разрастись как следует и никто это безобразие не остановил, ресет подкрался незаметно. Вот и оправдываю, дескать пока сам не запущу эту бяку - со стороны можно не ждать :)

sin_a ★★★★★
()
Ответ на: комментарий от Buba

> вспоминаем мегатопик "Одна строка на Perl"

ну, все не так ужасно - скорее всего, комп просто повиснет. Кое-что похуже не обещаю :)))

annoynimous ★★★★★
()
Ответ на: комментарий от Buba

Простая форкбомба выглядит как скрипт из одной строки: $0 ; $0 &

Как она работает очевидно, что ничего не удаляет очевидно, и если не боишься ресета - то можно смело взрывать :)

sin_a ★★★★★
()
Ответ на: комментарий от Stalwart

>Я себе только-что MBR запорол форкбомбой
>Stalwart (*) (16.05.2006 12:39:22)

Здесь все написали, что такого не может быть, потому что такого не может быть никогда. Одни мы с тобой как идиоты. У меня комп не загружается. Значит, либо поросла фс, либо порос вообще весь диск, либо порос мбр. 4-го не дано.

spinore
() автор топика
Ответ на: комментарий от bugmaker

Всё, разобрался.
Чисто хардварные проблемы были.
Диск был стар и любил не опознаваться биосом.
Сейчас кое как опознался и загрузился.
С мбр и самими данными на диске, также как и с фс, всё ок.

spinore
() автор топика
Ответ на: комментарий от spinore

>Здесь все написали, что такого не может быть, потому что такого не может быть никогда. Одни мы с тобой как идиоты. У меня комп не загружается. Значит, либо поросла фс, либо порос вообще весь диск, либо порос мбр. 4-го не дано.
>Всё, разобрался.
Чисто хардварные проблемы были.
Диск был стар и любил не опознаваться биосом.
Сейчас кое как опознался и загрузился.
С мбр и самими данными на диске, также как и с фс, всё ок.
И кто же ты после этого? :-)
Делать выводы можно только ДОСКОНАЛЬНО разобравшись в ситуации. Возможен и четвертый вариант. Если хорошо подумать, то и пятый :-) Так новички становятся профи.

anonymous
()

> При этом NetBSD она на вешает: в ней по умолчанию выставлен порог на 200 процессов - в итоге после запуска система как работала, так и продолжает работать корректно. Только новые процессы юзер запустить не может.

> Вот, как говорится, сиди после этого и думай: какая же из всех систем более коробочная :) Поидее требуемая в данном случае защита от такого

что интересно, в ALT Linux как раз soft nproc 256 из коробки :)

dk2
()
Ответ на: комментарий от anonymous

:))
Так профи становятся новичками :))

spinore
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.