OpenSSL加密出包全球网络安全淌血

过去一个星期,全球有超过50万台使用特定版本的OpenSSL作为网站传输加密工具时,都可能因为一个会外泄内存中机敏资料的Heartbleed(心脏淌血)漏洞,让企业的网站机敏资料直接曝光、无所隐藏,网站安全形同虚设。
这种原本应该是确保网站传输安全的OpenSSL加密锁,却因为漏洞导致无法发挥功用,也让许多网站IT和资安人员在面对网站安全的议题时,就好像在走钢索一样,深怕一个不小心,就会跌入万丈深渊、死无翻身之地。
造成这些网站IT人员紧张的原因就是因为OpenSSL的Heartbleed漏洞,漏洞编号CVE-2014-0160。而这个漏洞已经默默的存在超过2年4个月了,直到美国时间4月7日由资安公司Codenomicon及Google安全部门的Neel Mehta,正式对外揭露这个OpenSSL漏洞的存在,而许多全球大型的知名网站,包括Google网站和各种服务、雅虎和Facebook等,都受到Heartbleed漏洞的影响。
根据Netcraft最新统计,全球有66%的网站都使用SSL加密机制,但是使用开放源码OpenSSL加密套件的网站服务器,包括Apache和Nginx服务器,所占的比例大约2成(17.5%)。也就是说,全公司10台服务器,包括各种硬件设备在内,若有使用SSL加密,可能就有2台是使用OpenSSL加密机制。
面对这波来势汹汹的OpenSSL的加密风险,资安教父Bruce Schneier甚至在他的网站上公开表示,“这是一个灾难性的漏洞,如果从1~10要评分的话,他给11分。”他进一步指出,这个漏洞让网络上的每个人,都可以读取借由OpenSSL加密传输、保护的系统内容,只要是重要的机敏资讯,都可能因此随机外泄。
而骇客透过Heartbleed这个漏洞,则有机会取得暂时存放在服务器内存中的机敏资料,例如账号、密码、Session、Cookies、加密私钥甚至是信用卡资料等。也因此,只要是使用OpenSSL作为传输加密的网站或是各种设备,都必须确认OpenSSL版本的安全性,都不可掉以轻心。
连“锁”都不安全了,如何确保网站门户安全
许多人在浏览网站时,经常会看到网址输入列前面有Https或者是有一个锁头的标志,Https中的s表示安全(Secure),也意味着网站在资料传输的过程中,都会采用SSL加密的方式以保护传输的内容。
在SSL的加密方案中,除了使用微软网站加密工具外,还有许多利用开源工具架设的网站服务器,例如Apache或者是Nginx,或是邮件服务器、即时通讯服务器,以及其他使用开源套件,来确保硬件产品安全性,像是VPN(虚拟私有通道)、视讯设备、UTM、防火墙等产品,都可能会选择使用开放源码的OpenSSL确保传输安全。
由于OpenSSL是相当受欢迎的网络加密软件函式库,通常互联网上的资料传输都透过SSL/TLS加密来提供资料的安全与隐私性,保护使用者在浏览网站以及一些VPN的资料安全。
而SSL就是“安全插槽层”(Secure Sockets Layer)的缩写,这是最早由网景公司(Netscape)所制定的一种安全传输协定,该通讯协定主要在网络的传输中对通讯资料进行加密,确保资料不会被第三方所存取。
至于TLS是“传输层安全”(Transport Layer Security)的缩写,也是互联网工程工作小组(IETF)将SSL标准化与修改之后的安全传输加密协定。
只不过,当这把确认网站传输安全的锁,却因为有一个Heartbleed漏洞的存在,使得其中几款型号的锁(OpenSSL),变得容易被骇客打开,也就无法确保网站门户的安全。
确认受影响的OpenSSL版是2012年3月14日之后推出的1.0.1版~1.0.1f版,以及1.0.2-beta~1.0.2-beta1等版本。
因为OpenSSL使用范围甚广,所有使用OpenSSL的服务,包括:HTTPS、SMTPS、IMAPS、POP3S等,以及其他使用OpenSSL作为传输加密服务的各种操作系统也都受到影响,相关的操作系统包括Red Hat Enterprise Linux 6.5 、Debian Wheezy、Ubuntu 12.04.4 LTS、CentOS 6.5、Fedora 18、OpenBSD 5.3、FreeBSD 10.0、NetBSD 5.0.2以及OpenSUSE 12.2等版本。
至于其他OpenSSL更早的版本,包括OpenSSL 0.9.8版、OpenSSL 1.0.0版,以及在2014年4月7日释出的OpenSSL 1.0.1g版,则是不受到Heartbleed漏洞的影响的版本。
Heartbleed漏洞会导致内存机敏资料外泄
造成OpenSSL出现Heartbleed漏洞,和OpenSSL在2011年12月推出一个Heartbeat(心跳)扩充服务有直接关系,而心跳服务则被内建在2012年之后所释出的各种OpenSSL版本。
戴夫寇尔首席执行官翁浩正表示,OpenSSL是一个用C语言撰写的函式库,根据Github上面的提交记录,OpenSSL出问题的那行程式码是在2011年12月31日22时59分57秒所提交的。
“Heartbeat是一个确认网站服务是否持续运作的服务,”翁浩正进一步解释,当确认Heartbeat服务执行的封包回传时,服务器原本也应该要先确认封包大小以及使用者的权限后,再进行Heartbeat验证。
不过,他指出,出现Heartbleed漏洞的OpenSSL版本,在执行Heartbeat服务时,因为函式库没有事先检查所需要的回传资料大小,可能是为了加快SSL沟通的速度,一律都传回64KB大小的资料,而所回传的资料,也并没有验证使用者是否有权限可以接收。
也就是说,当执行Heartbeat服务时,假设,如果原先只需回传2KB的资料,但因为没有事先确认原本所需资料的大小,当OpenSSL函式库预设回传64KB的资料,执行Heartbeat服务的服务器就会把暂存在内存中其他62KB的资料,一并回传。
翁浩正说:“这是一个撰写C语言时,不应该出现的基本程式设计错误。”这种确认字段资料的检查,其实是所有程式撰写时的基本功夫,不论是有心或是无意导致这样的漏洞,会导致Heartbeat预设回传64KB资料时,造成网站机敏资料外泄。
更让人担心的是,因为外泄资料的过程都无从察觉也没有记录,对于多数使用有Heartbleed漏洞的OpenSSL来做网站或产品加密的企业和厂商,甚至无法评估过去有多少外泄资料被骇客拦截并再利用。
外泄账号、密码是基本款,骇客也可取得加密私钥
如果,这时候有骇客利用一些概念验证(PoC)工具,例如“ssltest.py”以及“check-ssl-heartbleed.pl”,用来检测网站服务器是否有Heartbleed漏洞时,在检测的同时,就可以同时获取服务器内存中的资讯,其中也包括各种可能的机敏资料。
翁浩正表示,因为有许多会员制或者是提供网络交易的网站或平台,为了确保使用者登入网站时,账号和密码资料传输的安全,都可能使用有Heartbleed漏洞的OpenSSL做传输加密,所外泄暂存在内存中的机敏资料,除了使用者和管理员的账号和密码外,还可能包括:SSL加密私钥、Session Cookie,甚至是信用卡资料等。
而他说,戴夫寇尔运用上述PoC工具来检测网站的Heartbleed漏洞时,就已经可以轻易撷取到使用者的账号和密码等机敏资讯;如果外泄的资料中包含了网站管理员的账号与密码,骇客就可以利用这些资讯登入网站,如入无人之境。
不仅账号、密码容易取得,连加密私钥都可以利用Heartbleed漏洞取得。资安专家也是台湾骇客年会召集人蔡松廷表示,骇客所拦截到暂存在内存中的资料,机敏程度有多高,其实是非常碰运气的,主要还是看前一刻在执行的服务是什么,才可能暂存在内存中。
他说,这就像是买刮刮乐一样,当骇客的运气普通时,就只会拦截到使用者账号、密码;运气好一点时,或许有机会取得信用卡资料;如果运气再更好一点,甚至可以取得SSL加密私钥。当然,取得SSL加密私钥的难度,就像是得到第一特奖一样的难。翁浩正则说,一般而言,想要从内存中的暂存资料取得SSL的加密私钥,最容易出现网站重新开机或重新启用服务过后,有加密私钥存放在内存中,才可能透过Heartbleed漏洞被外泄。
已经有资安业者CloudFlare证实,透过这个Heartbleed漏洞,的确可以取得服务器的SSL加密私钥,只不过,要经过多少次的随机尝试,才能够从暂存的内存中取得加密私钥资讯就非常碰运气,有研究员尝试了250万次才能得到加密私钥;但也有研究员大约花9小时的时间,只尝试了10万次,就拿到网站加密私钥。
当服务器SSL加密私钥被骇客取得后,骇客就可以伪造一个不只外观一样,连验证的加密私钥都有效的网站,来接收使用者各种登入和传送的讯息,此时,骇客所伪冒的假网站,就和真实网站一样真实。
使用VPN服务风险最高,使用者务必小心
由于OpenSSL也用于许多产品中,蔡松廷认为,除了使用者账号、密码以及加密私钥外泄外,这一波对企业造成最大风险的产品,则是使用Heartbleed漏洞的OpenSSL做传输加密的VPN产品。
他强调,许多企业为了简化员工登入各种网站的繁琐程度,都会采用单一登入(SSO)机制,而通常登入VPN的账号、密码,也和企业内AD或LDAP的账号、密码一致,“当骇客可以取得企业内AD或LADP的账号、密码时,就可以登入企业内部系统、窃取企业机敏资料。”蔡松廷说。
升级OpenSSL最新版本才是最佳解决之道
翁浩正指出,所有使用OpenSSL提供Https加密服务的网站,例如网络银行、各种社交网站、电子商务网站,以及有会员机制的网站在内,都在这波攻击范围内。他说:“要修补有Heartbleed漏洞的OpenSSL,升级到OpenSSL 1.0.1g版和1.0.2-beta2版,是最根本的解决之道。”至于采用旧版本的OpenSSL,虽然不会受到Heartbleed漏洞的影响,但旧版本仍有其他加密的漏洞,仍不可掉以轻心。
相较于国外,台湾有许多企业架设的网站服务器,多是采用微软解决方案,在这一波Heartbleed漏洞的风波中,可以幸免于难。其他政府机关,像是财政部财政资讯中心在面对即将来临的报税季节,也要求清查所使用SSL凭证的安全性。可以作为网络报税之用的内政部自然人凭证,所使用中华电信开发的HiSecure加密模组,虽然有使用OpenSSL,但使用版本是1.0.0a,并不在此次有Heartbleed漏洞的版本范围中。
至于,行政院资通安全办公室副主任吴启文则表示,目前已经针对OpenSSL的Heartbleed漏洞发布公告及资安警讯通知各机关,已经有包括网擎资讯Mail 2000 v6 SP3受到影响,也已经通告20多个使用机关。他说,后续将使用工具直接于GSN进行扫描,以整体掌握政府机关受影响的网站数量。
负责Muzik Online所有技术服务的总工程师曾义峰表示,他在第一时间得知这个漏洞后,就开始等官方释出的修补程式,在修补完所有的系统后,也完成测试和验收。
曾义峰在这个过程中,也观察到各家操作系统厂商的紧急应变速度。他说,以OpenSSL的Heartbleed漏洞揭露时间2014年4月6日 0时为基准点,操作系统RedHat在2014年4月7日上午07时47分00秒正式修复,是所有操作系统厂商中,最快完成修补的厂商,这个速度也比OpenSSL在2014年4月7日16时释出正式修补程式还早。
依据各家官方源库或官方部落格公布的修复时间为参考基准,其他在4月7日完成漏洞修补的操作系统包括:OpenBSD、Arch Linux、Debian、FreeBSD和Ubuntu等;在4月8日才完成修补的操作系统则包括:Fedora、CentOS、OpenSUSE、Scentific和Gentoo等。
另外,根据SANS(美国系统网络安全研究院)所做的资安研究报告,这一波使用有Heartbleed漏洞的OpenSSL的产品,包括各家网络和资安设备厂商在内,例如:思科、Juniper、Fortinet、F5、Novell、Aruba和Check Point等,都严重影响企业网络安全的部署。
翁浩正指出,现在有许多台湾企业面临到困境则是,各种使用有问题OpenSSL加密的网络或者是资安设备,因为已经过保固期,难以直接更新产品的固件,一定要请原厂协助升级或更新才行。
对于无法更新的操作系统或者是产品等,蔡松廷表示,还是可以依赖网络闸道端的防火墙和入侵侦测防御(IPS)等产品,拦下有问题的Heartbeat封包,确保企业网站和相关产品的安全性。翁浩正则指出,若企业使用Snort IDS,官方已经释出 SID 30510 到 30517 来侦测,并且在 Community Rules中也有包含更新版本,也可以借此防御骇客利用Heartbleed漏洞的攻击。
企业可参考8大自保原则
要防范骇客利用Heartbleed漏洞攻击,翁浩正建议,所有的企业都可以参考下列8大步骤做自我检视。首先,确认自己的OpenSSL版本是否在受害范围;其次,使用ssltest.py等检测工具,检测该网站或产品是否含有Heartbleed漏洞;第三点,更新OpenSSL至1.0.1g版或1.0.2-beta2版;第四点,重开所有与OpenSSL函式库相关的服务。
第五点,因为Heartbleed漏洞已经存在超过2年,在无法确认加密私钥是否外泄的前提下,企业必须重新产生SSL加密私钥,接下来,就必须做到第六点,将网站旧凭证撤销,确保安全性。第七点,必须清除所有目前网页服务器上的Session;最后一点则是,包括管理员和使用者都应该更换密码,并且定期追踪账号是否有被盗用的迹象。
虽然这次Heartbleed的漏洞都产生在服务器端,但目前许多对外揭露的灾情,都仍只是冰山一角。对于个人端的防护,除了要变更受骇网站所使用的密码外,为了避免骇客利用资讯拼图方式,从单一网站的账号密码,可以取得登入其他网站的资讯,各个网站的密码也应该避免相同。
再者,这波包括Android手机也在受骇的范围内,也可以利用检查Heartbleed漏洞的App,对于手机内的操作系统和App做一次检查。
戴夫寇尔首席执行官翁浩正表示,该公司资安研究员利用工具登入Yahoo信箱时,在第一次尝试时,就已经取得使用者的账号及密码。(已遮罩)
