种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

fork炸弹

(2018-12-23 02:44:10) 百科综合
fork炸弹

fork炸弹

fork炸弹fork bomb)在计算机领域中是一种利用系统调用fork(或其他等效的方式)进行的阻断服务攻击。与病毒与蠕虫不同的是,fork炸弹没有传染性,而且fork炸弹会使有进程/程式限制的系统无法开起新工作阶段,对于不限制进程数的系统则使之停止回应。以fork炸弹为代表的自我複製程式有时亦被称为wabbit。

基本介绍

  • 中文名:fork炸弹,叉式炸弹
  • 外文名:fork bomb, rabbit virus, wabbit
  • 领域:计算机
  • 特点:没有传染性

原理与影响

fork炸弹以极快的速度创建大量进程(进程数呈以2为底数的指数增长趋势),并以此消耗系统分配予进程的可用空间使进程表饱和,而系统在进程表饱和后就无法运行新程式,除非进程表中的某一进程终止;但由于fork炸弹程式所创建的所有实例都会不断探测空缺的进程槽并尝试取用以创建新进程,因而即使在某进程终止后也基本不可能运行新进程。fork炸弹生成的子程式在消耗进程表空间的同时也会占用CPU和记忆体,从而导致系统与现有进程运行速度放缓,回响时间也会随之大幅增加,以致于无法正常完成任务,从而使系统的正常运作受到严重影响。
除了恶意触发fork炸弹破坏的情况外,软体开发中有时也会不慎在程式中嵌入fork炸弹,如在用于监听网路套接字并行使客户端-伺服器结构系统中伺服器端职责的应用程式中可能需要无限地进行循环(loop)与派生(fork)操作(类似下节示例程式所示),而在这种情况下原始码内的细微错误就可能在测试中“引爆”fork炸弹。

熄火

在系统中成功“引爆”fork炸弹后,我们可重启来使系统恢复正常运行;而若要以手动的方法使fork炸弹“熄火”,那前提就是必须杀死fork炸弹产生的所有进程。为此我们可以考虑使用程式来杀死fork炸弹产生的进程,但由于这一般需要创建新进程,且由于fork炸弹一直在探测与占用进程槽与记忆体空间,因而这一方法几乎不可能实现,而且用kill命令杀死进程后,释放出的进程槽又会被余下的fork炸弹执行绪所产生的新进程占用,
在Windows下,用户可以退出当前用户会话的方式使系统恢复正常,但此法奏效的前提是fork炸弹是在该用户的特定会话内触发的。

预防

由于Fork Bomb透过不断的开新进程来瘫痪系统,一个防止其严重影响系统的方法就是限定一个用户能够创建的进程数的上限,在Linux系统上,可以透过ulimit这个指令达到相应的效果,例如: ulimit -Hu 30 这个指令可以限制每一个用户最多只能创建30个进程,还可以通过修改配置档案/etc/security/limits.conf来限制可生成的最大进程数来避开这枚炸弹。而FreeBSD系统的话系统管理者可以在/etc/login.conf底下的配置档案进行相关的设定

参见

  • 无限循环
  • Fork (作业系统)
  • 进程管理 (计算机科学)
  • 逻辑炸弹

标 签

搜索
随机推荐

Powered By 种豆资源网||