fork炸弹

| tags fork  shell 

what is fork bomb?

:(){ :|:& };:

这个递归函数能够不断的调用自身,不断的生成新的进程,最终导致拒绝服务攻击,函数调用前 将其加入后台。这会分出大量的进程,因而被成为fork炸弹。

wiki上的解释

fork炸弹(fork bomb)在计算机领域中是一种利用系统调用fork(或其他等效的方式)进行的拒绝服务攻击[1]。与病毒与蠕虫不同的是,fork炸弹没有传染性,而且fork炸弹会使对同时执行进程/程序数设限的系统无法执行新程序,对于不设限的系统则使之停止响应[2]。以fork炸弹为代表的自我复制程序有时亦被称为wabbit。

:()      # 定义函数,函数名为":",即每当输入":"时就会自动调用{}内代码
{        # ":"函数开始标识
:    # 用递归方式调用":"函数本身
    |    # 并用管道(pipe)将其输出引至...(因为有一个管道操作符,因此会生成一个新的进程)
        :    # 另一次递归调用的":"函数
# 综上,":|:"表示的即是每次调用函数":"的时候就会生成两份拷贝
            &    # 调用间脱钩,以使最初的":"函数被杀死后为其所调用的两个":"函数还能继续执行
}        # ":"函数结束标识
;        # ":"函数定义结束后将要进行的操作...
:        # 调用":"函数,"引爆"fork炸弹}"

参考

wiki

老外的这篇章也很经典:Understanding Bash fork()


上一篇     下一篇