文/诸葛建伟
高校网站安全的“矛”与“盾”(二)
文/诸葛建伟
COST论坛由CCERT、《中国教育网络》杂志于2008年共同发起,采取会员制,面向个人,完全免费,以开放、平等、自由的互联网精神运作。如需获取COST技术论坛视频、录音等资料,请登录:http://www.cost.edu.cn/。
在网站系统的各个软件层次上,目前最薄弱的安全环节在于Web应用程序。相比较于底层操作系统、网络服务和常用应用软件,Web应用程序可能是开发过程最快、编码质量和测试水平最低的,这也造成了Web应用程序安全性最为薄弱的现状。同时,Web应用程序的复杂性和灵活性又进一步恶化了它们的安全性。
国际上著名的信息安全研究组织OWASP在2007年首次公布之后,2010年又发布了Web应用程序所面临的最新十大安全威胁(如表1所示)。从中我们可以看到,代码注入攻击和XSS跨站脚本一直以来占据着前两位的位置,也是目前高校网站所面临的最普遍的Web应用攻击方式。
代码注入攻击有多种类型,但SQL注入攻击是其中最为常见和简单易懂的技术类型,我们以它为例,来介绍高校网站Web应用程序的主要安全威胁状况。
SQL注入是利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术,能够通过恶意读取、修改与操纵数据库,来窃取网站敏感信息,进而攻陷网站获得控制权。目前在网络骇客社群中流传着各种自动化的SQL注入攻击工具,如CSC、NBSI、HDSI、阿D注入工具、WED、Domain等。
而高校网站中,大量涉及数据库查询操作的Web应用程序在开发时并没有考虑到对SQL注入攻击的预防、检测和防御,例如某高校科研管理机构维护的科研经费来款查询系统,是一个非常简单的ASP动态页面程序,设计目的是为高校科研人员查询所承担的各类科研项目经费是否到款、到款数额及拨付情况,在检索表单中需用户输入一个对来款单位进行查询的关键字,并只返回包含给定关键字的来款记录,ASP程序中使用的SQL语句猜想应该是类似于“SELECT * FROM some_tbl where some_rec like ' %INPUT%'”。然而这个程序好像没有对用户输入做任何的安全验证和过滤,因此当具有好奇心的一些用户,比如说作者本人,希望了解到其他科研人员承担各类科研项目的情况,就会在输入框内填写“a% ' or ' a ' like ' %a”,点击检索之后就可以得到数据表全部记录信息,这是因为程序在注入的输入后,使用的SQL语句将会变成“SELECT * FROM some_tbl where some_rec like ' % a% ' or ' a ' like ' %a '”,而' a ' like ' %a '是一个永真式,使得WHERE子句永真,因此该SQL语句等价于“SELECT * FROM some_tbl”,从而在返回结果中给出全部记录信息。当然,由于该ASP程序存在着SQL注入漏洞,对它的攻击可以不限于此,还包括猜解管理员用户口令、上传ASP后门和本地提权攻击等。
该漏洞可能在该网站上存在了数年之久,笔者曾向网站留下的管理员邮件地址发送多封漏洞提示邮件,但均未有回复,想是该网站已无技术人员维护,或是管理员邮件地址已沦为垃圾邮件充斥的邮箱而无人问津。
为了应对高校网站Web应用程序所普遍面临的代码注入、XSS等安全攻击威胁,网站运营者和管理部门在机制方面需要建立起恰当的管理和责任制度,从技术角度则建议采用如下安全设防措施:
表1 OWASP组织公布的Top 10 Web应用程序安全威胁类型
1) 对于信息发布类网站尽量采用静态网站设计
采用动态内容、支持用户输入的Web应用程序较静态HTML具有更高的安全风险,因此技术人员在设计与开发Web应用时,应谨慎考虑是否采用动态页面技术、是否支持客户端执行代码、是否允许接受用户输入,信息发布类网站往往无需引入动态页面和用户交互,而且可以通过后台系统来产生信息发布静态页面的方式(这种Web站点构建方式也被新浪、搜狐等门户网站所采纳)来兼顾安全性、访问性能与便捷性。兰州大学的李仲贤老师曾在COST论坛分享了采用这种设计思路构建校园信息门户网站的经验。
2) 选择安全性高、可靠的Web应用软件包和解决方案
对于必须提供用户交互、采用动态页面的Web站点,尽量使用具有良好安全声誉及稳定技术支持力量的Web应用软件包,如活跃的开源和共享软件,规范运作、注重安全的商业软件公司解决方案等,并定期进行Web应用程序的安全评估与漏洞扫描检测,对Web应用程序应跟进版本更新和安全补丁发布情况,进行升级与安全漏洞修补。
只在必要时候自主或外包开发Web应用程序,在开发和部署过程中需重视安全编程、持续性的安全测试与维护,安全编程与测试的检查点有:独立、完整且集中的输入验证、校验全部的程序输入、校验输入长度与类型、不使用任何方式验证失败的数据、对HTTP所有内容进行校验、校验向用户输出的数据、使用安全的S Q L查询方式、禁止使用JavaScript进行任何校验、使用安全统一的编码或转义方式、设定安全的权限边界、校验被调用的后台命令、校验被调用的文本或配置文件、确保程序所记录的日志可控。
3) 充分有效利用Web服务器的日志功能
对Web应用程序的所有访问请求进行日志记录与安全审计,如Apache的access_logs/error_logs、IIS的日志文件等等,这些Web访问日志往往以W3C的日志标准格式——Extended Common Log Format来进行记录,关键的信息包括访问用户名、请求URL、referer来源链接等。通过一些辅助的Web日志分析与检测工具,如AWStats等,可以从中发现出针对Web应用程序的漏洞探测、渗透攻击等入侵行为。
4) 定期进行网站Web应用程序漏洞扫描
使用IBM AppScan、HP WebInspect、Acunetix Web Vulnerability Scanner等Web漏洞扫描软件定期对重点网站进行Web应用程序漏洞扫描,并根据扫描结果推动程序开发和测试团队修补所发现的安全漏洞,提高网站应用的安全性。除了Web应用程序漏洞扫描器产品之外,国内的一些安全公司,如绿盟、知道创宇等,也提供了远程的网站Web漏洞安全扫描服务,这种远程在线服务提供了投入资金和技术成本更低的高效安全解决方案。
5) 部署Web应用防火墙产品或服务
对于高校安全敏感的网站系统,如主页站点和校园信息门户等,应进行重点安全防护,建议部署商业或开源的Web应用防火墙设备,来检测和抵御针对这些网站系统的Web应用攻击,但这种方式对投入成本和技术水平要求较高,较难大规模推广。笔者所在单位在多年研究基础上,实现了Web应用防火墙服务云的技术解决方案,可以无需在防护网站端部署任何硬件设备,也无需改变网络拓扑,通过简单的网络参数配置,即可以通过在云环境中集中部署的Web应用防火墙,为远程的客户网站提供安全防护托管服务,这种技术方案能够为规模较小、缺乏安全技术水平的高校网站提供了非常便捷和低成本的安全保护措施。对于规模较大的高校网站群,也可以采用私有云方式来部署Web应用防火墙服务,同样无需改变网络拓扑,即可完成对网站群的高效安全防护。如需了解更多详细信息,可通过本文作者向该服务具体负责老师进行详细咨询。
Web数据构成了高校网站的重要组成内容,也随之面临攻击者窃取敏感与隐私信息,恶意篡改页面和注入不良信息内容等安全威胁。
虽然大部分高校网站并不涉及敏感与隐私信息,但由于一些网站用户缺失保密和安全意识,少部分网站上仍可能存在泄露科研敏感信息和师生个人隐私信息的情况,而攻击者可以采用强大的Google Hacking技术,借助搜索引擎的力量,非常便捷地发现和攫取这些被意外或无意间泄露的敏感内容。在某高校网站的上传目录中无意泄露出的一份教师职称评估业绩表中,可以发现该教师承担了一些来自国家敏感部门的科研项目,并完成了数篇关于武器技术的国防科技报告,笔者虽然无法确认这些泄露信息是否属于保密范围,但个人认为在互联网上暴露如此详细的涉及武器技术研发的项目与成果情况,应属不该发生的事情。
在高校网站上泄露师生个人隐私信息则更为常见,利用Google Hacking的一些基本技巧,如搜索“filetype:xls site:edu.cn 课题 身份证号”,可以发现内部包含有“课题”和“身份证号”关键字的XLS电子文件,通常会找出一些包含有申请人身份证敏感信息的科研课题申请资料,在一个实验室网站的incoming目录上可以挖掘出一份课题申报信息表,其中包含了所有课题主要参与人员的身份证号敏感信息。搜索“filetype:xls 身份证号 site:edu.cn”、“filetype:xls 信用卡 site:edu.cn”还会发现大量高校网站随意泄露学生个人敏感信息的情况,常见的如国家活动安排、奖助学金评选、新生报到等活动公开资料中经常给出完整的学生身份证号码和信用卡号等,如在某高校网站上公开的残奥会志愿者活动安排材料中随意包含了学生身份证号。此类情况往往是由于高校中的一些行政人员缺乏保护个人隐私信息的观念和意识,未经屏蔽处理,即把完全没有必要公开的身份证号、信用卡号等隐私信息直接发布在网络上,这往往会对学生的网络信息安全造成一定的风险,如身份信息可能被滥用、常作为口令使用的生日日期被搜索获得等。
通过一些观察和分析,笔者认为目前高校网站通常的敏感信息泄露途径和方式包括:
1) 由于不安全配置,未关闭Web服务器的文件列表枚举和目录遍历,在不经意间泄露服务器中保存的敏感信息;
2) 利用Web服务器(往往同时配置FTP服务)的Upload、Incoming等上传目录中转文件时,被搜索引擎爬虫检索而不经意泄露;
3) 由于网站用户缺乏安全意识,在公开文档中随意包含他人,特别是学生的隐私信息;
4) 在公开的个人简历、职称晋升材料和课题申请书中包含科研敏感信息。
除了敏感信息泄露之外,高校网站还比较容易遭受网页篡改攻击。2008年9月份清华和北大网站曾被“黑客”攻击,并假冒校长名义发表抨击大学教育的文章。在如图2所示的中国被黑站点统计网站(www.zone-h.com.cn)和图3所示的世界被黑站点统计网站(www.zone-h.org)上都可以查询到大量被攻击和篡改网页的高校网站。笔者曾发表一篇论文《基于元搜索引擎实现被篡改网站发现与攻击者调查剖析》,高校网站管理部门可以借鉴这种方法,通过综合利用Google、百度、Yahoo等搜索引擎对网站的监控能力,利用常见的网页篡改特征和对站点范围的限定,自动地发现关注站点范围内被恶意篡改的网页。图4示例了利用在网页标题中匹配“hacked by”特征来发现edu.cn域名范围内的被黑网站。
不良信息内容也对高校网站的正常运营带来了安全风险,高校网站被攻陷后可能成为色情淫秽等不良信息的存储和中转仓库,而提供用户交互的BBS、论坛和博客等网站则可能遭遇网站用户发布不良信息内容的情况,如果论坛管理者、博主没有有效管理他们的网站,那么很多涉及出售非法物品的广告会被经常光顾并被长期保留在这些网站上。
为了应对高校网站所面临的Web数据安全威胁,高校网络管理部门应通过各种有效途径,来提高网站维护人员和用户的数据安全意识,包括:
1)保密信息绝对不能联网,此外也不应在网上公开团队和个人承担涉密项目的信息,以免引来针对性的社会工程攻击;
2)应教育行政人员和师生注重个人隐私信息,网上公布的文档资料中应尽量避免包含个人隐私信息,如必要时,也应进行部分的屏蔽处理;
3)注意对论坛、博客、BBS、留言本等允许用户提交数据的审查,清除明确包含违法信息的数据内容。
另外网络管理部门应帮助网站运营者加强网站数据安全性监测和防护措施,包括:
1)提升网站系统及Web应用程序的安全性,避免网站遭遇网页篡改;
2)善用Google、百度等搜索引擎,定期进行关注域名范围内的被黑网站发现和敏感数据检查;
3)对网站的安全配置进行核查,尽量消除文件列表枚举、目录遍历、随意上传等容易泄露信息的渠道;
4)对接受用户交互的网站列出清单,协助网站运营者进行定期的数据安全性检查;
5)建立规范便捷的网站安全响应机制和流程。
网站系统的安全威胁存在于传输网络、操作系统与网络服务、Web应用程序和数据内容等各个层次上,类型也非常多样化,并且广泛普遍存在。而高校网站由于资金和人力投入少,安全性尤为薄弱,各种安全问题频频出现。高校网络管理部门应担负起改善网站安全性的责任,争取学校经费投入,建立安全管理和责任机制,并通过采纳开源和商业的技术方案,建立起网站安全建设、监控和响应技术流程,来切实提升高校网站的安全性。同时,高校网站安全也需要多方协作,高校网站管理部门和网站管理者应成为安全责任主体,来推动相关安全机制的建立,而运营商、科研机构和安全公司也应对高校提供技术支持与帮助,网站用户也应建立起良好的安全意识,只有如此,高校网站才能够不再是网络骇客们所青睐的“软柿子”,而真正成为服务于广大师生、支撑数字校园的坚强后盾。
(作者单位为清华大学网络工程研究中心)