据CNNIC中国互联网络信息中心2009年7月16日发布的《第24次中国互联网络发展状况调查统计报告》中显示,我国共有网民数量3.38亿人,网站数量306.1万个,半年内有1.95亿网民在上网过程中遇到过病毒和木马的攻击,1.1亿网民遇到过账号或密码被盗的问题。
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过Web表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。
当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的账户连接到数据库,这种问题会变得很严重。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。由于应用系统的开发语言及所采用的数据库不同,通过利用数据自身的相关函数和存储过程,又可能导致攻击者进行执行命令、读写文件等非法操作,对Web应用安全的影响十分巨大。
SQL注入攻击原理本身非常简单,相关攻击工具容易下载,攻击者获得权限后有利可图,它作为几年来攻击者最有效Web入侵入手点,是众多网站成为恶意代码传播平台的起因之一。
针对这一攻击手段,联想网御安全专家认为,最根本的措施是对Web应用用户的输入进行过滤。并针对于Web应用的基本特性,对Web应用的整体安全工作提出以下具体措施:
一、Web应用安全评估:结合应用的开发周期,通过安全扫描、人工检查、渗透测试、代码审计、架构分析等方法,全面的发现Web应用本身的脆弱性及系统架构导致的安全问题。应用程序的安全问题可能是软件生命周期的各个阶段产生的,其各个阶段可能会影响系统安全的要点主要有:
图:Web应用常见安全要点及其产生阶段
而对应用程序本身在评估过程中可以参考OWASP TOP TEN 2007年最新版本,重点检查以下内容:
序号 |
内容 |
说明 |
1 |
跨站脚本漏洞 |
Web应用程序直接将来自使用者的执行请求送回浏览器执行,使得攻击者可获取使用者的Cookie或Session信息而直接以使用者身份登陆 |
2 |
注入类问题 |
Web应用程序执行在将用户输入变为命令或查询语句的一部分时没有做过滤,SQL 注入, 命令注入等攻击包括在内 |
3 |
任意文件执行 |
Web应用程序引入来自外部的恶意文件并执行 |
4 |
不安全的对象直接引用 |
攻击者利用Web应用程序本身的文件操作功能读取系统上任意文件或重要资料 |
5 |
跨站请求截断攻击 |
已登入Web应用程序的合法使用者执行恶意的HTTP指令,但Web应用程式却当成合法需求处理,使得恶意指令被正常执行 |
6 |
信息泄露 |
Web应用程序的执行错误信息中包含敏感资料,可能包括系统文件路径,内部IP地址等 |
7 |
用户验证和Session管理缺陷 |
Web应用程序中自行撰写的身份验证相关功能有缺陷 |
8 |
不安全的加密存储 |
Web应用程序没有对敏感性资料使用加密、使用较弱的加密演算法或将密钥储存于容易被获取之处 |
9 |
不安全的通信 |
Web应用经常在需要传输敏感信息时没有使用加密协议 |
10 |
没有对URL路径进行限制 |
某些网页因为没有权限控制,使得攻击者可透过网址直接存取 |
二、Web应用安全加固:对应用代码及其中间件、数据库、操作系统进行加固,并改善其应用部署的合理性。从补丁、管理接口、帐号权限、文件权限、通讯加密、日志审核等方面对应用支持环境和应用模块间部署方式划分的安全性进行增强。
三、对外部威胁的过滤:通过部署Web防火墙、IPS等设备,监控并过滤恶意的外部访问,并对恶意访问进行统计记录,作为安全工作决策及处置的依据。
图:威胁过滤及记录分析
四、Web安全状态检测:通过常见挂马页面代码的特征,持续地检测被保护应用页面的当前状态,判断页面是否被攻击者加入恶意代码。同时通过检测Web访问日志及Web程序的存放目录,检测是否存在文件篡改及是否被加入Web Shell一类的网页后门。
五、事件应急响应:提前做好发生几率较大的安全事件的预案及演练工作,力争以最高效、最合理的方式申报并处置安全事件,并整理总结。
图:事件应急响应流程
六、安全知识培训:让开发和运维人员了解并掌握相关知识,在系统的建设阶段和运维阶段同步考虑安全问题,在应用发布前最大程度的减少脆弱点。
在现在和将来,由于受互联网地下黑色产业链中盗取用户账号及虚拟财产等行为的利益驱动,攻击者仍将Web应用作为传播木马等恶意程序的主要手段。尽管这会对广大的运维人员和安全工作者造成很大的工作压力,但是我们相信通过持续不断地执行并改进相关安全措施,可以最大限度地保障Web应用的安全,将关键系统可能发生的风险控制在可接受的范围之内。