基于静态分析的Java源代码后门检测技术研究

  • 格式:pdf
  • 大小:487.04 KB
  • 文档页数:3

2012年第07期 基于静态分析的 Java源代码后门检测技术研究 王一岚 ,郭嵩 (1.北京邮电大学,北京100876;2.北京科技大学,北京100083) 摘要:Web工程中存在的后门给网站安全带来极大风险,针对日益猖獗的后门攻击,文章提出了 一种基于静态分析的后门检测技术,该技术通过分析源代码,可以检测出Java语言Web工程中存在的 主要后门漏洞,并结合流分析及关键数据传播分析,给出漏洞的完整攻击路径。 关键词:静态分析;后门检测;软件安全 中图分类号:TP393.08 文献标识码:A 文章编号:1671—1122(2012)07—0043-03 Backdoor Detection for Java Language based On Static Analysis WANG Yi—lan .GUO Song (1.Beij'ing University ofPosts and Telecommunications,Beijing 100876,China; 2.University ofScience and Technology Beijing,Beijing 100083,China) Abstract:Backdoors exist in WEB projects can cause great security risks for the sites.To prevent sites from attack,this paper presents a detection technology based on static analysis.By analyzing the source code,it can detect most backdoor flaws of WEB projects which are developed by java.Combined with data flow analysis and taint analysis,complete attack path can be given. Key words:static analysis;backdoor detection;software security 0引言 随着IT技术的发展,网络应用已经关系到人类生活的方方面面。黑客、网络犯罪活动日益猖獗,从盗取个人隐私到窃取银 行账号,给被害者带来极大危害。网络攻击中最常见的方式就是植入后门。后门是指攻击者绕过安全认证而直接获取对系统及 数据访问权的方法。通过后门,攻击者可以远程控制被攻击的主机,盗取被攻击者隐私,甚至窃取被攻击者银行账号等,给被 攻击者带来巨大经济损失。更有甚者,通过后门攻击网络服务器,造成网络瘫痪或其他不良后果,严重危害企业和社会利益。 美国国家标准技术研究所(National Institute of Standards and Technology,NIST) 报告显示,92%的可被恶意利用的漏洞存在于软 件中。针对软件自身进行安全性分析,是发现后门安全漏洞,防范后门攻击的重要手段。针对以上问题,本文提出了一种有效的 基于静态分析的Java源代码后门检测技术,并基于该技术开发出相应的检测工具。 1相关工作 目前已有的后门检测技术包括动态检测和静态检测。动态分析是通过真实或模拟环境执行程序发现漏洞,而静态分析不执行 程序,通过对源代码或二进制文件等进行漏洞检测。由于程序后门大多使用隐蔽的数据或函数,所以动态检测的方式很难发现大部 分的程序后门。通过静态分析源代码或二进制文件来发现程序后门的效果是最好的闭。目前静态代码分析主要有以下几种方式 】。 缺陷模式匹配:这种方式的原理是建立一个缺陷模式库,将需要检测的源代码与缺陷模式库进行匹配,来发现代码中存在 的安全问题。这种方式的优点是简单易实现,缺点则是误报率高,且需要缺陷模式库足够强大。 类型推断:这种检测方式是通过对代码中运算对象类型进行分析,保证每条语句都针对正确的类型进行执行。这种方式需 要制定一套类型推理的规则。类型推断技术能够检测出代码中的类型错误,检测出代码质量方面的一些问题,但对于安全问题 的检测不够适用。 模型检查:这种检测方式将代码抽象成一个自动机系统,每条语句抽象为其中的一个状态,通过分析这个状态机,分析出代 ● 收稿时间:2012—06—12 作者简介:王一岚(1987一),女,辽宁,工程师,硕士,主要研究方向:软件安全;郭嵩(1985一),男,辽宁,工程师,硕士,主要研究方向 计算机网络与应用。 43 l__一I

 2.2安全分析器 本系统中的安全分析器大致有如下几种类型:1)查找单 个关键API是否有被程序调用;2)查找关键API调用,分析 其参数是否具有关键数据特征。如判断SQL查询语句参数是 否是污染数据来检测SQL注入、判断网络连接API的参数是 否是写死的变量来检测后门等。该分析器调用污染分析模块; 3)分析两个API的关系,可以查询资源释放错误等,分析打 开资源与关闭资源API的控制关系。通过规则解析器读入规 则,调用指定的安全分析器进行分析。 3 Java后门静态分析实验及分析 代码一: ……… 薹薹i釜 东:蠢兰兰 :. … … ……一一l 一囊釜 荸 蓑器瓷量薷 : ,…………… 鍪 :: : :::: : ………… … ~…………… … ~… 。 ' …1 分析流程:根据安全规则,需要调用安全分析器分 析getConnection方法的第二个参数是否为硬编码,即13行 getConnection方法为漏洞爆破点。调用污染分析器,13行参 数Password的定值为12行,变量password由变量c赋值,所 以继续追踪变量c的定值,通过数据流分析,变量c的定值是 l1行,11行中append方法会将变量b及变量a的污染信息传 递给变量c,因此需分别追踪变量b和变量a的定值。其中,变 量a的定值为10行,可知变量a为写死的StringBuffer(“123”), 由此可知,变量a的硬编码信 递给了变量Password,即需要 检测的参数为硬编码,所以这可以判断为一个后门漏洞。 检测结果: ■ ,一3— …d№t…H… shH ^p・,… ph d棚4_ …- 州… Inm cHq哗一Ⅱ ) ca日“mD 州 岫 w c曲a出do T 渡瞎捶 一 坤* rd 4t n 13,● c01 e6 iD n:、啪ck、 哪 s bp t\b r~n nh r・ t……I ,曲e I// 一> ~rd_c nne tl, a▲l‘in :、∞£n qn‘# stri ,∞rd c: 、tejt、t k抽 -t, t J - nⅡ pu ̄rd}; 、 、B №口 h●t.,mm ~lt n雎j2,' ∞1 2 ^H z、啪#k、Ⅵ‘ ’ rbp e、 。or ,t、…、}t●t、 _ 如or钿It,一 #cn …4 fb IPp● { }; 一,gtnIlg^t 1i抽11一・t co)-2^ 、啪tk、w- 蜥 k p…、b kd t、一、ttj 、B.ckd。 e 幢 tri 0 …r抽 Ib‘pp0 l^l】 一●ppe州I七u 11 …口 lnD:、啪 k、w # ¥tnng…tw gtr nq【b"Pe¨{ I ~・t h l1,… 0…、 #n蛳b ’…b,Ic●、b kd0— t、…~ 日 n “ j ¨ 3~口 … # L呻№ l-;I 一 10 …41 2 D n№ tri juff…=…ring酗 tet《 lz 9 ,; …E“ ff……10,…巳1]0…、…、 g扎 5 cbP ce ^ 一 、…、t n 如 at j_ tr ff… ……g u"●rt 12, 一 n3 -t u lO,… 1¨^H D、啪rn gn’…b 、b5 一st、…、ce5t、B 0一口 t str “ uft… …rⅡg# ffer{ ¨3 }; 2012年第07期 代码二: l p-m j p■吐‘口日1t●●^-c蜘∞ t●t{ 3 , 辨r _^埘 ’ / 8女p■b1Io●t-“a v0id--in 5trin口¨● 口lJ t B ,/ , 舢c4 口tnt#^ ed l thod 5tHb iO , jj :3) l| 。一 。 《蔓 。 分析流程:根据遗留的Debug代码规则,检测该漏洞需 要查询是否有任意类型的名称为Main的方法被调用,调用安 全分析器分析很容易得出这段Main代码是一段遗留的Debug 代码,很容易被后门程序利用。 检测结果: 风险 蛾臻l1 H 盘搏 D 帆f蝌岫V ‘wmp尊c k 8 。一 I void nlii sh 畦】・r '{ 慧 ~ 期l舅吐 4结束语 9一t 1 I )om e^debug code DdHIB code c柚 瞳leⅧ n 试 a1竹pami8m ad印 ya1web p c on 本文提出的Java静态代码分析框架,已经以检测工具 的形式得以实现。通过对Webgoat等开源代码的测试,并与 Fortify等较为成熟的静态分析工具进行对比,得出该检测工具 可以查出代码中绝大部分的命令注入、SQL注入、跨站脚本等 安全问题的结论,拥有与Fortify相媲美的准确率。在后门检测 方面则更胜一筹,可以查出绝大部分的死代码、残留Debug信 息、非法网络连接等后门问题。由于采取了更加高效的迭代算法, 在数据流分析模块具有更高效率。此外,由于安全分析及污染 分析的规则描述全部采用Xml方式,扩展更加容易。 由于本工具目前还处于试验阶段,不够完善,暂时还不能 支持Java流行框架例如Structs、Spring、Hibernate等框架的 安全规则。此外,对网络开发中大量应用的js代码,也缺乏支持, 这些工作都有待日后完善。絷(责编程斌) 参考文献: [1]NIST.information Technology Po ̄aI[EB/OLJ http://www.nist.gov/ index.html,2011-07-18. [2]Chris Wysopal,Chris Eng.Static Detection of Application Backdoom[M]. [3]赵卓.常用Java静态代码分析工具的分析与比较I ̄/OL].http:// Ⅵ,vnⅣ.ibm.com/developerworks/cn/java/j—lo—statictest—too ̄/.2012—5—31. [4】John Viega0T Bloch,Tadayoshi Kohno,Gary McGraw.ITS4:A static vulnerability scanner for C and CI一一I—code【c】.In Proceedings ofthe 16th Aru1ual Computer Security Appfications Conference.December 2000. [5]Brian Chess,Jacob West.安全编程代码静态分析 .北京:机械工业 出版社.2008. [6】孔德光,帅建梅,陈超,葛瑶.基于污点分析的源代码脆弱性检 测技术U1.小型微型计算机系统,2009,1(30):78—82.