【51CTO.com 综合报道】据CNNIC中国互联网络信息中心2009年7月16日发布的《第24次中国互联网络发展状况调查统计报告》中显示,我国共有网民数量3.38亿人,网站数量306.1万个,半年内有1.95亿网民在上网过程中遇到过病毒和木马的攻击,1.1亿网民遇到过账号或密码被盗的问题。
而据多种调查显示,目前SQL注入攻击是造成上述严重情况的根本原因之一,也是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患,这也给黑客带来很多可乘之机。
其实,SQL注入之所以会造成严重后果而不被防火墙所发现,是因为这种攻击方式是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
而正是因为SQL注入攻击原理本身非常简单的原因,才使得相关攻击工具容易下载,成为近年来攻击者最有效Web入侵入手段。针对这一攻击手段,联想网御的安全专家倾囊传授广大51CTO读者“预防SQL注入攻击的六脉神剑”:
1、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路径进行限制 | 某些网页因为没有权限控制,使得攻击者可透过网址直接存取 |
2、Web应用安全加固:对应用代码及其中间件、数据库、操作系统进行加固,并改善其应用部署的合理性。从补丁、管理接口、帐号权限、文件权限、通讯加密、日志审核等方面对应用支持环境和应用模块间部署方式划分的安全性进行增强。
3、对外部威胁的过滤:通过部署Web防火墙、IPS等设备,监控并过滤恶意的外部访问,并对恶意访问进行统计记录,作为安全工作决策及处置的依据。
图:威胁过滤及记录分析
4、Web安全状态检测:通过常见挂马页面代码的特征,持续地检测被保护应用页面的当前状态,判断页面是否被攻击者加入恶意代码。同时通过检测Web访问日志及Web程序的存放目录,检测是否存在文件篡改及是否被加入Web Shell一类的网页后门。
5、事件应急响应:提前做好发生几率较大的安全事件的预案及演练工作,力争以最高效、最合理的方式申报并处置安全事件,并整理总结。
图:事件应急响应流程
6、安全知识培训:让开发和运维人员了解并掌握相关知识,在系统的建设阶段和运维阶段同步考虑安全问题,在应用发布前最大程度的减少脆弱点。
在现在和将来,由于受互联网地下黑色产业链中盗取用户账号及虚拟财产等行为的利益驱动,攻击者仍将Web应用作为传播木马等恶意程序的主要手段。尽管这会对广大的运维人员和安全工作者造成很大的工作压力,但是我们相信通过持续不断地执行并改进相关安全措施,可以最大限度地保障Web应用的安全,将关键系统可能发生的风险控制在可接受的范围之内。