竹笋

注册

 

发新话题 回复该主题

kiwi安全源码审计工具 [复制链接]

1#

1关于kiwi项目是一个源代码安全审计工具。适用于黑客、安全研究人员、安全测试人员,支持多种语言的代码审计工作。代码安全审计工作一般需要2个辅助工具:代码审计(搜索)工具,能够从代码中找到可能存在安全问题的位置,并且生成可视化的报告。一个方便阅读代码的工具,能够索引代码实现跳转。例如opengrok、SourceInsight、vimctagscscopekiwi是一个基于文本的安全源码审计工具,它不会对源代码进行语法解析,而是使用简单的正则表达式方式搜索代码,同时提供了问题确认机制用于减少误报。kiwi工具可以和opengrok工具很好得结合起来,使得扫描报告中的问题可以直接链接到相应的代码。如果经常进行源代码审计工作,强烈建议使用kiwiopengrok的解决方案,1.kiwi是一个规则和框架完全分离的系统,这样用户可以方便得自定义规则,而不用涉及任何框架层面的修改。2.在该项目中有3个目录,分别对应3个子项目:kiwi。该目录为kiwi工具的主体框架,需要安装到系统中。kiwi_data。该目录为kiwi的缺省规则目录,放到系统中任意位置即可,用户可在此目录修改、编写自己的搜索规则kiwilime。该目录提供了一个sublimetext3插件,用于和kiwi配合使用,可以高亮显示扫描结果,快捷键跳转到代码sublimetext3打开的代码目录相应代码行数等。注:opengrok工具是一个B/S架构的大型源码阅读工具,请参考这里1.1kiwi的优劣目前主流的源码审计工具多采用语法解析插件检测的方式实现,即工具会对目标代码做语法分析,生成语法树,然后遍历语法树的每个节点,对每个节点调用所有插件(插件实现检测语法节点是否存在安全漏洞)。语法解析插件检测的这种方式更加精确,例如检测eval函数,正则表达式的方式可能会匹配注释,而语法解析的方式则不会,并且语法解析的方式可以回溯语法节点从而做到“数据流分析”。但是语法解析插件检测的实现方式太过复杂,需要为支持的每一种编程语言编写语法解析模块,代价很大,因此商业性的工具非常昂贵;而开源的工具支持的编程语言种类非常少,很难做到跨多种语言审计。语法解析插件检测方式相对于高昂代价来说,带来的收益是有限的。实际上多数商业源码审计工具面向的都是非安全人员,而很多黑客仍在使用grep来做代码审计。作者认为目前的这些工具不是很适合专业安全人员、黑客,对于源码审计来说,最具有技术含量,最具有创造性的是检测规则,专业安全人员在做源码审计的时候检测规则并非一成不变,在一次源码审计的过程中会不断发现一些新的危险代码,需要不断调整检测规则来适应新的变化,因此自定义检测规则是对于专业安全人员、黑客来说才是最重要的。kiwi就是这样一个工具,使用它可以很方便得随时更新检测规则随时再次进行扫描,kiwi虽然在实现原理上落后主流技术,但更加适合专业安全人员。1.2解决方案选择这里推荐两种解决方案来实现安全源码审计:1.kiwiopengrok。该方案适合大规模的源码审计,可解决千万行级别、团队合作的源码审计需求(作者所在公司即采用该方案实现)。2.kiwisublimetext3kiwilime。该方案适合个人桌面级使用,解决万行及以下、单人代码审计需求。2安装2.1kiwi安装使用一下命令安装kiwi:gitclone

分享 转发
TOP
发新话题 回复该主题