shell的fork炸弹

Linux下shell的fork炸弹,是最精简的恶意shell命令,无需很高的用户权限,也不需要特定账号的密码,就能整死一台机器。

它设计的出发点,就是耗尽系统资源。写法如下:

:() { :|:& };:

或者

.() { .|.& };.

这里的:.是函数名,这在shell下是被允许的,这么写能增加代码的诡异感,完全也可以写成:

a() { a|a& };a

|为管道,就是通过函数递归调用自身,反复通过管理fork出新进程,来实现耗尽系统资源的目的。

系统管理员只要在文件/etc/security/limits.conf中限定用户资源,就可以避免某个不听话的Linux用户整死整个机器:

#<domain>      <type>  <item>         <value>
xxx            hard     nproc         128

当我自己找了台机器做实验,在上面执行了fork炸弹,刚开始只是cpu很高,接着立马就开始卡顿了, 然后终端就没有响应,开其他终端已经连接不上。当系统资源被耗尽后,某些进程会被杀死,终端会有短暂的响应, 执行killall bash不起作用,想查询自己终端的进程号ps aux | grep tty,还没出结果,接着又陷入僵死, 趁着下一个短暂响应的空隙,执行了ulimit -u 128,系统立马就恢复正常了。

发表于 2014年10月17日 14:29   评论:0   阅读:2059  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo