张伟:大众网技术——敢当!

2011-05-25 16:24:00     作者:    来源: 大众网  

关键词:
[提要]

技术中心主任兼技术开发部主任 张伟

  说实话,2009年2月进入大众网1个月内,我还不知道大众网和大众日报社的关系,当初应聘只是当作一份普通的网站工作来看待的,原本也只是想做个安逸的论坛管理员。但是我有个固有的毛病——工作狂,直到现在也改不了,所以工作没几天就被领导发现了在技术方面的能力,此后几乎每天都通宵达旦加班写代码、研究系统,开始了大众网技术生涯。

  2009年、2010年,这些工作还比较得心应手,是以往所学的充分应用,但是2011年,我感觉要挺不住了。

  2011年,网站的开发和运维任务像雪片般飘来,但是技术开发部的人员并没有增加,人员培训、任务分解、任务优化、任务重组这些项目管理的基本方法都已经用上了,仍然无法满足网站工作的需要,需要做的运营网站系统、编辑发布系统以及网站运维必须的基本支撑系统实在太多了,通过不断努力和取舍,在2011年的工作计划中基本能够排开。真正让我感到很强的崩溃感的是3月13日出现的重大网站安全事件。

  3月13日,论坛发现主题ID发生错乱,从最初的8位数变为10位数,论坛主题本身应当代表的意义是论坛主题总数。突然发生这样的变化,不可能是主题数从2千万增加到20亿,一定是由于论坛出现了BUG或者被篡改造成的。通过分析,以我们目前的系统架构能力,论坛容纳40亿主题没有问题,况且实际主题数量只有2千万;再从比较保守的角度去分析,架构中的php环境存在处理数据最大值的限制,当数字超过9位数可能会发生错误,即使这样,我们的论坛最少可以容纳2亿主题。

  虽然从论坛的容量来讲,我们的容纳能力很高,但是,已经开始出现10位数的ID,开始逼近论坛的最终容量并且已经超过了PHP环境的良好工作范围。也就是说,如果不立即找出问题根源并解决问题的话,论坛很快就会停转。因此技术开发部立即成立论坛问题处置小组,由技术总监李雪修为组长,由我、孙世强、丁磊、赵容涛为成员,后来崔晓辉加入,对论坛ID错乱的问题进行专题分析。

  经过分析查找,论坛ID分别于2月21日、2月28日、3月9日、3月15日发生过变化,并在3月15日出现论坛ID超出论坛最大允许ID数导致论坛无法发布新帖。

  我们首先怀疑与发生论坛ID 错乱的时间点比较吻合的新闻跟帖导入论坛功能,该功能于2 月21 日正式上线,我们首先停用了该功能,并对相关代码进行深入分析,但分析结果表明,论坛ID 错乱与该功能无关,因为如果是该功能导致的故障,会是由该功能发布的新论坛帖子ID 出现变化,而出现ID 变化的帖子均不是新发的帖子,ID 变化的帖子中甚至有2009 年的帖子。

  论坛更换为Discuz 系统同时使用MySQL 数据库已经有2 年时间了,在以往论坛ID 一直正常;论坛ID 在MySQL 数据库中以ID 的形式保存,一一对应,同时代表着论坛帖子的基本数量级。对于MySQL 数据库,8 位数的论坛ID 不存在溢出导致进错位的情况(MySQL 数据库不做任何升级的情况下,最大支持42 亿的论坛帖子数量)。

  从数据库的角度分析,论坛故障不会是数据库Bug 导致的。但由于论坛ID 已经变成10 位,而论坛主脚本语言PHP 在数字位数大于9 位时会出现运算错误,所以10 位数的论坛帖子打开会出现错乱。

  再从论坛Bug、安全漏洞角度入手分析,期间,我们查找了大量的网络文章、咨询Discuz 厂商康盛公司、咨询绿盟等安全服务厂商,近期Discuz 论坛未爆出任何安全漏洞。同时从安全服务厂商处获取了查找安全漏洞的一些新的思路(例如远程包含),准备多角度分析论坛是否存在漏洞。在对可疑源代码进行了大量细致的分析后未发现可疑、危险操作。 但是,为了保障ID 错乱不是由论坛本身的安全漏洞导致的,我们在论坛底层做了过滤处理,当发现对论坛ID 进行处理的操作时,立即记录操作行为发起者IP、使用的功能链接,同时立即终止该操作。3 月15 日,我们又在论坛数据库中增加了MySQL 解析专用sniffer,用于嗅探记录所有MySQL 数据库操作,该记录能够完整记录数据库操作内容、IP 地址等信息。

  在3 月15 日论坛ID 出现溢出,导致论坛无法发新帖的时候,我们进行了第一次论坛帖子ID 修复,该工作于下午14:00 完成。当晚随即发现论坛帖子ID 再次变化为9 位,经过对论坛底层记录分析发现,出现论坛ID 错乱并非论坛功能本身所为,我们于15 日后半夜增加了论坛数据库嗅探。因为论坛数据库嗅探属于比较占用系统资源的操作,需要记录过滤所有的数据库操作,增加该操作会导致系统性能降低,所以只有到了万不得已才会启用该操作。

  经过3 月15 日的论坛ID 变化,已经可以下结论,论坛ID 是被恶意篡改的,论坛体系中存在重大安全隐患!从篡改论坛ID 的数据库操作动作来看,篡改者拥有的权限很高,如果不及时清理,将可能出现论坛数据被清空、被篡改为反动内容等高度危险的情况。

  3 月16 日和17 日我们对论坛进行了大量的安全扫描(使用我们自己开发的网站安全扫描工具)和文件对比、查找,并在17 日成功记录下了篡改操作的发起服务器,在博客所在的服务器查找到了4 个含有恶意代码的后门文件,其中3 个为文件上传型后门,1 个为任意代码执行型后门,危害程度极高,我们立即对这些恶意代码进行了清理,并对相关的用户权限进行了限制。

  3 月18 日上午9:20,在数据库嗅探记录中再次发现篡改论坛ID 的动作,但由于17 日的安全加固,该篡改行为没有成功执行。同时嗅探记录中发现开心公社的服务器也进行了非法操作。这样我们就将整个论坛服务器群加入扫描目标,分别在博客服务器、开心公社服务器、UCenter 服务器扫描发现各种含恶意代码的后门程序,其中包含文件上传型、任意代码执行型、base64 加密型后门。期间我们根据恶意代码衍生情况,再次修改了我们的安全扫描软件,为日后恶意代码扫描工作提供了更有效的保障。

  经过3 月19 日和20 日,对论坛服务器群所有服务器的详细扫描、文件对比后,论坛安全隐患基本排除。截止到目前,未发现新的篡改记录。

  但是到3 月22 日,论坛再度出现ID 错乱情况,说明系统中隐藏的攻击还在进行,通过扫描,又发现几处新的更隐蔽后门,篡改手法跟之前一样。但是此时,我的心里已经有了很大的阴影,感觉到论坛群还存在隐藏的东西,只是还没能发现出来。所以,在这次清理后门结束后,我们收缩了数据库的权限设置,使得很多权限设置更加严密。之后几天不断的查找各种后门特征,找到新的特征就对论坛再次扫描,不断重复重复再重复这个动作。但是一直没能突破。

  3 月25 日,论坛再次出现问题,这次是用户ID 出现错乱,说明之前对于主题表的权限设置生效了,入侵者没能篡改成功,于是改为篡改用户数据。我们及时搜查了后门也搜到几个,同时收缩了用户表的权限。但这件事充分验证了之前的担忧,说明论坛中确实还存在隐藏的后门。

  3 月26 日,经过若干天的苦战和偌大的心理压力,我终于挺不住了,睡了整整一下午,起床后第一件事就是看QQ 记录,结果,看着看着,我崩溃了。按照QQ 显示,论坛再度出现ID 错乱!难道我们最终的权限也被攻破了?不过还好,经过分析,QQ 消息是虚报,只是搜索引擎中存在的以前错乱时候的残留信息。

  后来经过不懈的努力和大量的文件比对工作,终于在3 月27 日将博客服务器中隐藏的后门揪了出来。

  在整个论坛ID 错乱处置过程中,孙世强、丁磊、赵容涛、崔晓辉均表现出高度的责任心,每天加班到深夜,对每个文件都详细对比,每段代码都详细斟酌,为排除论坛安全隐患做了大量的工作和努力。

  大众网技术,敢当不敢当?大众网技术——敢当!

杨凯

editor


 
 
 

大众网版权与免责声明

1、大众网所有内容的版权均属于作者或页面内声明的版权人。未经大众网的书面许可,任何其他个人或组织均不得以任何形式将大众网的各项资源转载、复制、编辑或发布使用于其他任何场合;不得把其中任何形式的资讯散发给其他方,不可把这些信息在其他的服务器或文档中作镜像复制或保存;不得修改或再使用大众网的任何资源。若有意转载本站信息资料,必需取得大众网书面授权。
2、已经本网授权使用作品的,应在授权范围内使用,并注明“来源:大众网”。违反上述声明者,本网将追究其相关法律责任。
3、凡本网注明“来源:XXX(非大众网)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。本网转载其他媒体之稿件,意在为公众提供免费服务。如稿件版权单位或个人不想在本网发布,可与本网联系,本网视情况可立即将其撤除。
4、如因作品内容、版权和其它问题需要同本网联系的,请30日内进行。

 
 
投稿热线