高手问答第 269 期 —— 怎样快速入门 Java 代码审计?

小白兔爱吃大灰狼 发布于 2021/10/17 20:07
阅读 7K+
收藏 12

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

代码审计(Code Audit)是一种以发现安全漏洞、程序错误和违反程序规范为目标的源代码分析。

根据2020年10月份的CNVD安全月报显示,Web应用程序漏洞占比34%,显而易见Web应用程序仍然是安全防御的重中之重,由此可见对业务的代码进行安全审计是十分重要的。

加之Java语言的应用范围广,国内外大型企业大多都采用Java作为核心的开发语言,因此对于安全从业者来说,Java代码审计成为了自身应该掌握的关键技能。

那么如何做好代码审计呢?欢迎来一起探讨吧~

OSCHINA 本期高手问答(10月18日- 10月23日)我们请来了@ 徐焱老师和大家一起探讨关于Java代码审计相关的问题。可讨论的问题包括但不限于:

  • 网络安全
  • 渗透测试经验技巧
  • 信息安全学习经历分享

或者其它关于网络安全的相关问题,也欢迎大家积极提问!

 嘉宾简介

徐焱,北京交通大学安全研究员,MS08067安全实验室创始人。从2002年开始接触网络安全,有丰富的渗透测试经验,主要研究方向为内网渗透测试和APT攻击。已出版图书《网络攻防实战研究:漏洞利用与提权》、《Web安全攻防:渗透测试实战指南》,在《黑客防线》、《黑客X档案》、《黑客手册》、FreeBuf、360安全客、阿里云盾先知、嘶吼等媒体发表过多篇技术文章。  

为了鼓励踊跃提问,《人民邮电出版社》会在问答结束后从提问者中抽取 5 名幸运用户赠予 《Java代码审计》 一书。

购买链接:https://item.jd.com/13350018.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就相关问题向@ 徐焱老师 提问,直接回帖提问即可。

加载中
0
小白兔爱吃大灰狼
小白兔爱吃大灰狼
恭喜以上五位网友分别获得  《Java代码审计》   图书一本
请于10月30日前登陆账号,个人主页-修改个人资料,完善一下收货信息哦,奖品将在10月30日后寄出哦
4
赤脚小子
赤脚小子

@徐焱 您好,如下问题希望得到您的回答:

1 看了链接里您书的目录,在测试工具章节下看到了非常多的工具,但是没有优先级和是否推荐使用,能展开说说比如就选5种您推荐哪五种么?

 

2 针对JAVA代码工作中使用过的审计工具主要是

项目级别:checkstyle,findbugs,PMD。

平台级别:fortify,blackduck,sonarqube。

都在CI流程覆盖了。

项目级别扫描出来的问题还好说基本都能改了,但是平台级别是否过于严苛了,一些规范我不知道是否值得花很大精力去follow。

比如sonarqube的bad smell和blackduck的Operation Risk,尤其是后者,一个开源组件不是使用方能去掌控的,blackduck的评判标准至少在我看来非常的费解,比如已经最新版本的springfox依然被标记为HIGH OPERATION RISK。

请问您对一个JAVA项目会要求到什么程度,blackduck的Operation Risk这种指标您也会看么?怎么理解springfox这种情况,难道就因为发布时间超过1年了?

 

3 除了工具,在CODE REVIEW阶段,请问有哪些值得重点关注的安全问题代码呢?

 

4 看了您书的目录

 

    5.6.4 Spring Boot远程命令执行 192

    7.1.3 Spring Boot框架审计技巧 373

比较关心这两章但是看不到内容,好奇Spring Boot这种用户众多更新频繁的框架也会有这种安全问题么?还是说是使用/配置不当才会有问题?毕竟都不是STRUTS2那种BUG大王的时代了

 

最近在做这方面的工作,对代码审计的理解更深了的同时疑问也多了,期待您的解答。

0
厚积薄发-laigous
厚积薄发-laigous

@徐焱 您好!请问针对业务的安全漏洞扫描有什么解决方案吗?目前我们遇到的难点是,首先要扫描出暴露的服务接口,其次如何进行参数填充。

0
贺小皮蛋
贺小皮蛋

@徐焱 老师您好 最近在学习 渗透测试方向 针对kali系统上的一些软件使用 有没有系统学习的地方 目前网上查到的都不是很详细 还有一个问题就是如何做好一个企业级的渗透测试人员

 

贺小皮蛋
贺小皮蛋
回复 @shuteer : Web安全攻防:渗透测试实战指南>这本书太nice了 老师有没有推进的社区或者公众号等等 我是一个后端人员,就是抱着兴趣的态度想多了解了解
贺小皮蛋
贺小皮蛋
回复 @shuteer : 刚刚查了下oscp考试 貌似好难 哈哈 感谢老师指导
MS08067-徐焱
MS08067-徐焱
回复 @shuteer : 其次,还需要大量的实际经验,但是由于目前安全法的实施,不能在未取得授权的情况下进行渗透,因此可以考虑诸如挖src、vulhub 虚拟环境等方式来锻炼自己的能力,最后如果满足oscp等报名条件,可以尝试去考一个oscp证书
MS08067-徐焱
MS08067-徐焱
同学你好,渗透测试的范围很广,kali 仅仅是渗透测试中的一项利用工具集合而已,并且在 kali 中利用到的工具往往就是固定的常用的几种,我更建议的是去了解核心工具的用法、这些核心工具的原理,至于其他不常用的工具,实际上可能有更好的代替攻击,所以导致了其不经常被使用,做好一个企业级的渗透测试,首先要掌握的是最基本的渗透测试知识,《Web安全攻防:渗透测试实战指南》这本书可以参考
0
Phreezing
Phreezing

@徐焱 您好,请问一下对于开发来说,您认为Java代码审计中有哪些不得不学或者说学了之后能写出更安全的Java代码的东西。就是说有无一些对于开发来说非常实用的安全常识。

MS08067-徐焱
MS08067-徐焱
这本书当初的定位面向的人群其实有两种,第一个是想学习java 代码审计的新人,第二个是具有开发经验,但是没有安全开发意思的开发人员。我认为在Java代码审计中,一些安全编码的处理、业务逻辑的安全、 java常见漏洞的写法 以及这种漏洞产生的原因,了解这些后,要在你写代码的时候会下意识的考虑你写的代码是否存在这些问题,这样对你的安全开发能力会有很大的提升。
0
wy65
wy65

@徐焱 您好,java代码审计中,除了findDebugs这种查找bug的插件,像我这样以开发业务为主的程序员需要掌握哪些知识呢?

MS08067-徐焱
MS08067-徐焱
业务开发的话,掌握一些OWASP常见漏洞的漏洞原理,熟悉这些可以在Coding时期就减少这类漏洞出现的概率,然后就是注意业务逻辑不要出问题,web应用漏洞中业务逻辑漏洞占了相当高的比例,所以是需要特别注意的点。
0
empireghost
empireghost

@徐焱  代码检查工具一直使用findbugs 现在spotbugs, 它是在字节码层面检查,

阿里的代码规约检查似乎是在源码层面的检查,

另外感觉这两个工具对程序错误和程序规范,比较重视, 对代码安全漏洞方面不是重点

 

MS08067-徐焱
MS08067-徐焱
日常针对项目的代码审计的话,目前市面上比较好用的和知名度较高的就是fortify了,fortify是基于源码,针对源码进行语义分析来审计的,但是再好的代码审计工具误爆率也是很高的,所以搭配人工审计也是很重要的
0
shadowland
shadowland

@徐焱 老师您好,我现在是一名软件工程大三在校生,现在对网络安全比较感兴趣,也想将网络安全作为自己的学习方向,同时我也想了解有关代码审计的一些问题,现在的自己有一定的代码基础,对于java代码审计,更应该注重培养哪一方面的能力?我想找准方向,为以后打好基础,希望可以得到您的解答,谢谢老师!

shadowland
shadowland
回复 @shuteer : 非常感谢老师的解答,我现在已经大致知道自己努力的方向了,未来的路还很长,我会保持热爱,奔赴山海。
MS08067-徐焱
MS08067-徐焱
回复 @shuteer : 漏洞理解就是对漏洞的原理、利用和修复,能够了然于胸,能够深层次的了解这些漏洞,比如一个简单的 XSS 漏洞,可能出现的场景有哪些?利用方式分为多少类型?审计的关键点在哪里?这些都需要去学习和了解的,这本书可能会对你有所帮助。最后是从实践中总结经验的能力,就是说举一反三的能力,比如现在流行的异构漏洞,也是总结出来的,希望对你有所帮助
MS08067-徐焱
MS08067-徐焱
同学你好,现在网络安全是一个比较热门的方向,很高兴同学能够对网络安全产生兴趣。对于java代码审计,我认为最关键的是培养自己的代码阅读能力、对漏洞的理解能力以及从实践中总结经验的能力。代码阅读能力是最基础的能力,如果代码都阅读不懂,又谈何说起审计呢?而代码阅读就要求我们去掌握这门语言的语法、一些框架的用途以及这门语言本身可能会产生的漏洞,要对历史漏洞也要有所了解和掌握,其次对漏洞的理解能力
0
南方Go
南方Go

@徐 1.  Java代码安全和漏洞扫描这种工作是在项目什么阶段开始比较好? Java代码审计的工具非常之多,怎么组合使用?

MS08067-徐焱
MS08067-徐焱
Java代码安全和漏洞扫描肯定是要在项目本身的代码完成后,才可以进行的,一种说法是漏洞属于测试的一部分,因此这两个工作属于测试阶段的功能。Java代码审计的工具商业的、开源的和扫描器相比其实也不是很多,加上准确率高、效率高的就更少了,所以Java代码审计的工具实际上始终要配合人工复现,人工测试才可以得出一个最终的报告,工具能够起到的是辅助作用,掌握代码审计的知识才是关键,这也是这本书写出来的原因
0
南方Go
南方Go

@MS08067-徐焱  2.我看了一下书的目录,确实偏入门级,有幸参加过一些公司代码审计工作, 除了代码审计,网页漏洞扫描之外,还有docker打包后镜像扫描, 这类的, 代码审计如果按照非常严格的制度和规则去执行,会有非常多的代码和jar包不可信的问题, 这也是Java代码审计的一个难点,这种规则和规约, 有啥建议吗? 类似有些互联网团队认为,超过6个月发布的jar包,都会进入不可信,需要扫描和判断?

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部