谈一谈java代码审计—安全小课堂第四十一期

2017-01-07 19,710

安全小课堂第四十一期

Java因具有面向对象、平台独立与可移植性、多线程、动态性等诸多特点成为了主流的开发语言。但只要有代码的地方就有漏洞,PHP代码审计大家比较熟悉了,Java代码如何进行安全审计呢?本期邀请到孙爱萍小伙伴为大家分享Java代码审计。

关于分享者:

孙爱萍是京东高级安全工程师,有着多年的Java代码审计经验,参与京东代码安全审计平台建设。

 

>>>1<<<

豌豆妹

Java的漏洞出现的原因是什么?

小丸子

 1、程序员编码不当,编码时未考虑安全性。例如,输入输出未做过滤&净化、权限控制不完备、程序逻辑存在问题等。另外,对框架的使用不当造成的问题也不容忽视。例如,典型的使用MyBatis框架是未使用预编译模式。

2、第三方组件使用不当。例如,使用了存在漏洞的低版本组件,组件开发模式未关闭等。

豌豆妹

低版本的第三方组件能举一些例子么,还是说低版本的第三方组件都有问题?

小丸子

 典型的: Struts 2(远程命令执行)、 Apache Commons Fileupload(远程DoS)、 Apache Commons Collections(反序列化漏洞导致远程命令执行)。 Spring Boot(远程命令执行)。理论上只要有漏洞的都可被利用,上面提及的几个是比较容易被利用的。

>>>2<<<

豌豆妹

代码审计会遇到哪些问题?

小丸子

 Java代码审计中最大的一个难题就是效率问题。因为代码量大又不能完全依赖人工,而现在暂时没有发现开源的Java代码审计工具,商业的通用代码扫描器不能满足需求,而且还贵。

>>>3<<<

豌豆妹

Java代码审计能找出什么样的漏洞呢?

小丸子

 能找出的漏洞取决于产生漏洞的原因。Java代码审计可以发现的漏洞分为两类:

1、程序员由于编码不当产生的漏洞,典型包括后门、SQL注入、文件上传、任意文件下载、接口非授权访问、垂直越权。对于水平越权、XSS、CSRF、逻辑类漏洞也可以检测;

2、第三方组件使用不当产生的漏洞,从POM文件中可以找到使用了低版本的组件。从应用配置文件中可以找到配置不当问题。

豌豆妹

能否推荐一些Java Web代码审计的资源?

小丸子

 目前我也没有见过比较好的Java Web代码审计的资源,工具用过Fortify SCA和Checkmarx,规则都一般,因为太通用了。想要效果好需要定制化。

>>>4<<<

豌豆妹

Java代码审计主要关注什么样的漏洞?

小丸子

 这个取决于有多少时间,如果时间足够充裕,理论上能找到的漏洞都可以通过自动化+人工的方式寻找。时间有限的情况下,重点关注以下类型漏洞:

1、SQL注入、文件上传、任意文件下载、接口非授权访问、垂直越权;

2、高危常用第三方组件漏洞,典型包括Struts 2(版本及配置问题)、Apache Commons Fileupload远程DoS问题。

豌豆妹

那如何高效率地发现尽可能多的严重漏洞呢?

小丸子

 定制化的规则(但是仅对有固定模式的代码效果较好,如同一个公司、厂商的代码)。

>>>5<<<

豌豆妹

实现自动化的Java代码审计有哪些需要注意的点?

小丸子

 目前的自动化只能是半自动化,还是需要人工的介入。

1、误报。只要扫描就肯定有误报,再怎么定制规则也一会有误报。

2、研发人员不懂安全,为了漏洞的修复效率,安全人员对审计结果进行筛查,最终提供准确的漏洞及修复方案给研发人员。

白帽子观点

1

关于工具我来说一点,如果有一个项目,让我们用一个星期做深入分析,这时其实用什么工具不重要,用notepad++当然也可以,但是大公司每天几百个业务上线请求,这时效率就变得非常重要,如何用最高的效率,把严重漏洞尽量多的发现,这才是最重要的。

2

关于如何高效率地发现尽可能多的严重漏洞,主要从三方面入手:

1、高效的引擎;

2、高效的规则;

3、高效的流程(比如如何切入公司的上线流程,代码库和研发人员是否直接可以对应。如不能,发现了漏洞,联系修复的流程就会效率很低),在业务量大的情况下,根据以往经验,流程往往比技术更重要。

3

扫描代码的工具常见的基于规则和静态语法树。

 

安全小课堂往期回顾:
1、论安全响应中心的初衷;
2、安全应急响应中心之威胁情报探索;
3、论安全漏洞响应机制扩展;
4、企业级未授权访问漏洞防御实践
5、浅谈企业SQL注入漏洞的危害与防御;
6、信息泄露之配置不当;
7、XSS之攻击与防御;
8、电商和O2O行业诈骗那些事儿(上);
9、电商和O2O行业诈骗那些事儿(下);
10、CSRF的攻击与防御;
11、账户体系安全管理探讨;
12、远程代码执行漏洞的探讨;
13、服务器安全管控的探讨;
14、畅谈端口安全配置;
15、谈一谈github泄露;
16、撞库攻击是场持久战;
17、url重定向攻击的探讨;
18、聊聊弱口令的危害(一);
19、聊聊弱口令的危害(二);
20、聊聊XML注入攻击;
21、聊聊暴力破解;
22、谈谈上传漏洞;
23、浅谈内网渗透
24、聊聊短信验证码安全;
25、深聊waf那些事儿(一)
26、深聊waf那些事儿(二)
27、聊聊app手工安全检测
30、谈谈DNS安全问题——安全小课堂第三十期
31、交易支付逻辑漏洞小总结—安全小课堂第三十六期

35、密码找回逻辑漏洞小总结—安全小课堂第三十五期

37、越权漏洞泄露你的隐私—安全小课堂第三十七期

39、聊一聊服务器的安全基线—安全小课堂第三十九期

40、谈一谈java代码审计—安全小课堂第四十一期

【原文:谈一谈java代码审计—安全小课堂第四十一期  作者:京东安全中心   SecPulse安全脉搏整理发布

本文作者:京东SRC

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/54652.html

Tags:
评论  (2)
快来写下你的想法吧!

京东SRC

文章数:73 积分: 129

京东安全应急响应中心

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号