译者 | 布加迪
审校 | 重楼
今天我们要讨论的是最狡猾的网络安全威胁之一:逻辑炸弹。这个名字听起来可能没什么害处,但这种网络攻击很难被发现,会造成各种各样的破坏,甚至可以从贵组织内部攻击。

下面介绍逻辑炸弹的定义、这种攻击的工作机理以及贵组织可以采取什么措施来防护。
逻辑炸弹是有意植入到软件中的一段恶意代码,在某一时刻攻击操作系统、程序或网络。代码一直处于潜伏状态,直至满足某些条件,然后显示其恶意载荷。
激活逻辑炸弹的必要条件可能是攻击者设定的时间(定时炸弹)、删除某个文件等。在它被触发之前,您无法判断攻击载荷是什么。它可能删除或窃取文件、破坏数据、发送垃圾邮件,甚至清除整个硬盘驱动器或服务器。
这种攻击的名字来源于这个想法:一旦满足预定义的条件,代码就会“爆炸”。它又叫渣代码。它们也可能被合并到恶意软件中,比如病毒、蠕虫或特洛伊木马。
这种类型的攻击比较难追踪。逻辑炸弹可能在几个月后甚至几年后才会激活。由于植入代码和激活代码之间有时间间隔,威胁分子可以掩盖踪迹。比较谨慎的网络犯罪分子可以在感染的最后阶段销毁任何证据。
逻辑炸弹可能由心怀不满的员工植入,这是一种内部威胁。但它也可能来自不诚实的供应商,甚至是政府特工。
网络犯罪分子可以设定积极或消极的条件作为触发攻击的诱因。比如说,如果我们谈论一个积极的条件,当条件满足时恶意代码就会行动(查看某个特定的文件)。而条件不满足时(在一段时间内未被发现或处于停用状态),消极条件就会触发炸弹。
因此,无论满足的条件是积极条件还是消极条件,它都会触发逻辑炸弹。阻止它的唯一方法是缓解条件或删除代码。
这种类型的攻击具有以下几个特征:
据说,逻辑炸弹的历史始于美国和前苏联冷战时期。2002年,瑞士跨国投资银行瑞银集团的一名系统管理员策划了一次攻击。该事件影响了该公司400个办公室的2000台服务器。结果他被判入狱8年多,罚款300万美元。
2003年,Medco的一名系统工程师担心被解雇。于是他植入了一个逻辑炸弹,可以在他离开组织后清除一些数据。当他试图清除炸弹时被人发现,后被判入狱30个月。2018年,这种恶意代码删除了美国陆军的大量数据。
2019年,西门子公司的一名合同工在他创建的自动化电子表格中植入了恶意代码。恶意代码导致系统频繁出现故障。他的目的是,每当程序不能正常运行、只好由他修复时,就向西门子公司收费。这名网络犯罪分子后来被抓获并被入狱。
贵公司猜不出恶意软件携带哪种载荷,也猜不出将遭受的损害程度。所以,保护是最稳当的选择。
以下是可以保护贵公司免受此类攻击的几个措施:
原文标题:Find Out What Is a Logic Bomb. Definition, Characteristics, and Protection Measures,作者:Andreea Chebac
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些