2014年以来,国内外金融行业不断发生影响重大的信息安全事件。据央行最新数据显示,2014年前三季度发生的互联网金融支付金额已达24.1万亿元。而41%的金融服务机构在12个月内因网络犯罪丢失了金融相关信息。例如:2014年10月2日,身在南欧的黑客取得摩根大通数十个服务器的登入权限,偷走银行客户的姓名、住址、电话号码和电邮地址等个人信息,与这些用户相关的内部银行信息也遭到泄露,受影响者人数占美国人口的四分之一。这给金融行业敲响了信息安全的警钟。
源代码安全是应用安全最原始的安全点,也是引发信息安全事件最主要的原因。据美国IDC公司2006年对企业信息安全的调查和统计,70%以上的信息安全问题是因为应用系统自身的安全问题而遭到黑客的攻击,而不是因为网络;同时NIST对近几年的信息安全的事故的跟踪调查显示,几乎92%的信息安全事故都与软件相关。
中国软件评测中心根据多年提供金融行业软件源代码安全测试的经验,总结了金融行业信息系统常见软件源代码安全缺陷,包括SQL注入,缓冲区溢出,跨站脚本攻击,拒绝服务,内存泄露,路径篡改等。
1.SQL注入攻击 SQL 注入攻击是web开发中最常见的一种安全漏洞,指的是通过构建特殊的输入作为参数传入Web 应用程序,通过向服务器提交恶意的SQL查询语句从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统最高权限。
SQL 注入攻击主要是因为软件源代码未对用户输入进行校验,过滤非法字符等缺陷引发的典型攻击案例。通过SQL注入,攻击者可以轻易获取金融信息系统中极为重要的客户个人信息,这不论对银行等金融企业还是个人或集体储蓄用户来说都会导致非常大的损失。
2.缓冲区溢出 缓冲区溢出漏洞是攻击者常采用的另一种攻击方式。所谓缓冲区可以抽象地理解为一段可读写的内存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权。
缓冲区溢出大都是由软件源代码没有限制用户输入数据的长度导致的。金融行业信息系统软件源代码的这一小小安全缺陷将会导致金融应用程序异常,系统不稳定甚至崩溃,程序跳转到恶意代码,从而控制权被窃取。
3.利用密码管理和信息管理漏洞 金融行业软件密码的安全以及用户个人信息的安全极为重要,攻击者如果暴力破解软件密码或软件本身成功,将会给金融企业带来灾难。金融行业软件对密码进行弱加密、源代码中的密码、以明文形式存储密码、错误处理隐私信息等都会给金融行业信息系统带来安全风险。
如果金融行业信息系统使用了弱密码登录或者没有对用户隐私信息进行正确的保存,很容易给攻击者带来便利。攻击者使用推测和穷举或者代码反编译等手段可以轻易地获取重要的用户信息。
这一类软件缺陷处于高危险等级,为了避免此类风险的发生,软件开发人员应该对密码、隐私信息、等予以重视。
4.总结 综上所述,中国软件评测中心认为,源代码安全作为软件安全最为重要的安全点之一,是软件安全最底层的关键点。金融行业在对应用软件进行应用安全评估时,大多数问题都是出现在软件的编码阶段。在黑客、病毒、木马等不断攻击着各种网络应用的情况下,金融行业信息系统应加强源代码层面的安全规范,应提高安全意识,遵循相关源代码安全的标准进行安全编码(中国软件评测中心 唐刚、朱信铭)。