难阻止骇客取得产品,从中可研究本体与第三方元件弱点
面对外界质疑攻击者为何熟悉网擎的系统,廖长健无奈地解释软体开发商目前面临的产品资安挑战局面,相当严峻。
他说,现在想要拿到软体产品的原始码不难,无须透过内部人员或离职员工泄漏。首先,对于商用软体厂商而言,可经由许多管道申请测试版与操作文件,例如,发出电子邮件或透过经销商索取,网擎过去都有尽力把关,但仍无法完全杜绝;攻击者一旦取得套装软体,即可设置测试环境,查看当中使用的第三方元件与版本,此处若具有已知漏洞,他们能就设计出可滥用此漏洞的档案进行渗透。
第二个取得原始码的方式,是经由逆向工程反组译而成。网擎的经验是接到资安厂商的通报,他们在长期监测国家级骇客攻击活动的过程中,发现网路钓鱼信件涉及的恶意程式,命名与网擎资讯的英文名称Openfind有关,因此他们经由某种管道取得网擎的程式进行逆向工程,而在该公司的通报是以他们剖析出来的原始码,指出网擎某款软体存在的资安漏洞,所以有可能被骇客利用。廖长健表示,虽然资安厂商以此种方式取得的原始码,变数名称与网擎这个产品所用的不同,但程式逻辑是接近的,就能根据这些资讯推断弱点所在。因此,对于软体开发厂商而言,在用户端环境执行的已编译的双位元档,如果本身没有加上严密防护,具有足以抵抗逆向工程的能力,程式原始码是能够被反组译出来。而且,既然资安厂商能够这么做,其实,也代表骇客可以借此找到可乘之机。
第三种探测产品使用间隙的方式,也是在测试环境安装套装软体之后能进行的,那就是从作业系统层级的处理程序追踪,以Linux环境而言,可经由strace的指令查看目前各个应用程式使用的系统呼叫,进行逐步分析,了解每支处理程序开启的档案与档案所在位置,或是连接的网址,有了这些资讯,攻击者能够考量恶意软体酬载适合置入的方式与途径,找到能够偷偷夹带或呼叫的管道,然后再将这些内容放到指定位置、伺机而动。
国家级骇客手法更专精、能组合多个弱点,又能自动打击,令人防不胜防
关于台湾软体供应商之所以无法挡住国家级骇客攻击,除了人力规模悬殊与具有强烈动机的落差,廖长健认为有三个因素必须克服。首先,国家级骇客渗透手法更为高超,而且是持续、专精投入研究攻击目标的弱点;第二是不只是利用单一、严重度高的弱点,攻击者也懂得将多个低风险漏洞组合起来运用,形成具有高度危险的漏洞滥用手法;第三是打造工具,降低操作技术门槛之余,骇客也能发动自动化攻击,一口气侵袭多个目标,营造「遍地开花」的现象,而非一步步渗透、投放恶意软体、再进行后续的调度指挥,对于软体供应商而言,如果产品资安没有顾好,采用客户越多,一旦遭遇这类攻击,同时要处理的资安事件可能也会很多。
想要打造具有强大防护力的软体产品,对于开发人员而言,有个先天的劣势,那就是必须考量到运作效能而不能毫无限制地持续进行安全性处理。廖长健举出的例子是JavaScript的过滤,为了避免遭到跨站指令码的攻击,软体产品会过滤所有输入的JavaScript,为了确保效能,会进行32次清洗,然而,对于攻击者而言,当他们取得厂商的产品、建置使用环境之后,可以不厌其烦地循环测试,观察究竟要过滤到多少次才停手,一旦他们找到这个处理上限,就可以设计出33层的恶意酬载,应付完32次指令码过滤,下一次就能引发跨站指令码攻击,设法溜进软体产品。
至于组合多个漏洞的做法,廖长健提到的一种模式,是设法让输入夹带的恶意酬载躲过第一道检查,而顺利进到内部储存的设定档,而且攻击者知道档案存放位置,当另一支程式载入这个设定档时,开发人员可能以为这是内部资料而疏于检查,执行之后触发恶意酬载要做的事情、拿到系统权限,甚至形成命令注入攻击(command injection)。
基于上述提及的软体产品资安态势,廖长健认为,作为防御方,要有三个基本的前提。首先,攻击者已有产品完整实验环境,也就是前面提到,可透过合法管道、冒名欺瞒等方式,下载测试版。第二,攻击者可以轻易找到目标伺服器,如果有锁定的对象,对方要掌握这些IT基础架构的所在位置,并不困难。
第三,攻击者已有目标环境的使用者帐号。由于在不同线上服务与系统使用重复密码的情形相当普遍,再加上网站资料外泄事件频传,以及在公共场所上网却没用VPN防护等情况,导致帐密被侧录,骇客都有能力取得这些帐密,廖长健表示,我们要假设当攻击者手上有使用者帐密的时候,产品资安还能防得住。