发布时间:2026-01-12
浏览次数:0
1 关于
一个适用于黑客、安全研究人员以及安全测试人员,支持多种语言代码审计工作的源代码安全审计工具是 kiwi 项目。
代码安全审计工作一般需要2个辅助工具:
代码被审计(搜索呀)的工具,它具备从代码当中找寻到有可能存在安全方面问题的位置的能力,而且还能够生成呈现出可视化特点的报告呢。
一种具备索引代码这一功能从而达成跳转效果的、对阅读代码予以便利的工具,诸如,类似,像vim ctags 。
kiwi是一款基于文本的安全源码审计工具,它不会针对源代码去做语法解析之事,而是采用简单的正则表达式方式来搜索代码,并且还提供了问题确认机制以用于减少误报。
猕猴桃工具能够跟工具极为出色地联合起来,致使扫描报告里的问题能够直接关联到对应的代码。要是常常开展源代码审计工作,大力推荐运用猕猴桃的解决办法,。
1.kiwi是个系统,其规则与框架完全分离,如此一来,用户能够便利地自行定义规则,且无需涉及任何框架层面的更改。
2.在该项目中有3个目录,分别对应3个子项目:
奇异果。此目录乃奇异果工具关键主体架构,得安装至系统里。
这一目录,是属于kiwi的缺省规则目录,放置于系统里的任何位置都行,用户能够在这个目录之中,去修改、编写自身的搜索规则。
该目录给出了一个 text3插件,此插件用于跟kiwi一同合作使用,它能够对扫描结果予以高亮显示,并且能借由快捷键跳转至代码 text3所打开的代码目录对应的代码行数等 。
注:工具是一个B/S架构的大型源码阅读工具,请参考 这里
1.1 kiwi的优劣
当下主流的源码审计工具大多是运用语法解析、插件检测的途径来达成,也就是说,工具会针对目标代码开展语法剖析,进而生成语法树,接着遍历语法树的各个节点,针对每个节点调用全部插件(插件用以实现检测语法节点有无安全漏洞)。
进行语法解析,插件检测的这般方式显得更为精确,举例来说,检测eval函数时,正则表达式的方式有可能会匹配注释,然而语法解析的方式却不会,而且语法解析的方式能够回溯语法节点进而达成“数据流分析”。
然而,语法解析插件检测的实现途径极为繁杂,得针对所支持的每一种编程语言编写语法解析模块sublime text 3 php 插件,付出的代价相当大,所以商业性的工具价格高昂;并且开源的工具所支持的编程语言种类极少,极难达成跨多种语言审计。
语法解析,插件检测,这样的方式,相对于高昂代价而言,所带来的收益是有限的。实际上,多数商业源码审计工具面向的对象都是非安全人员,然而却有很多黑客依旧在使用grep去进行代码审计。
作者觉得当下的这些工具不太契合专业安全人员以及黑客,就源码审计而言,极具技术含量且极富创造性的是检测规则,专业安全人员在开展源码审计时,检测规则并非固定不变,在一次源码审计进程中会持续发觉一些新的危险代码,需不断调整检测规则以顺应新的变化,所以自定义检测规则对于专业安全人员和黑客来讲才是最为重要的。
奇异果是这样一种工具,借助它能够便利地随时去 检测规则,随时再度开展扫描操作 ,奇异果虽说在实现原理方面落后于主流技术,然而却更为契合专业安全人员 。
1.2 解决方案选择
这里推荐两种解决方案来实现安全源码审计:
1. 几维鸟。此方案适宜大规模的源码审查,能够处理千万行规模、团队协作的源码审查需求(作者所在公司正是借助该方案达成)。
2.几维鸟文本3 。这个方案适宜于个人桌面层面的运用,去处理万行以及以下的情况,满足单人代码审计的需要的。
2 安装
2.1 kiwi 安装
使用一下命令安装kiwi:
在git环境下,执行克隆操作,克隆的目标地址是https://.com//kiwi.git 。
cd kiwi/kiwi
setup.py
2.2 安装
不要求进行安装,放置于磁盘里某一个目录就行,扫描之际借助以下两种办法定位至目录:
通过 环境变量指定目录。(推荐的方式)
在kiwi扫描命令行中通过 -f/-- 参数指定目录
2.3 安装
Step 1.
获取
git clone https://.com//kiwi.git
Step 2.
打开 Text 3 -
-->
Step 3.
将 目录整个 copy 到 -
的运行依赖于 r 工具,从
https://.com//r/
下载编译好的工具,并将其加入到环境变量。
3 kiwi 使用
kiwi在安装后会生成两个 -:
kiwi. kiwi的扫描入口命令
kiwi-. 用于查看db类型的扫描报告
可使用 kiwi -h 查看kiwi的帮助信息
Kiwi 代码安全扫描
usage: kiwi -t
-f
-i
...
-e
...
--
...
--
...
--ectx ECTX
-o
...
Kiwi. 代码安全审计工具
:
展示此帮助信息,然后退出,通过 -h 或者 --help 来实现 。
-t , --
指定待扫描的目录
-f , --
指定漏洞特征定义目录
-i
...
, --
...
指定加载哪些漏洞特征
-e
...
, --
...
指定去扫描哪些种类的文件呢,比如说,要是输入-e php js的话,那就会去扫描.php以及.js这些文件 。
--
...
明确规定忽略对哪些类型的文件进行扫描,比如说sublime text 3 php 插件,若为-- php js,那么就是忽略对.php以及.js文件的扫描 。
--
...
忽略扫描文件路径包含关键字的文件
所指定的,乃是用于该扫描结果显示之时,其上下文行数的,为-c SCTX, --sctx SCTX 。
用于评估漏洞所需的、指定上下文信息的文件行数,此为 --ectx ECTX 所涉及的内容 。
-o
...
, --
...
分别指定输出文件在该报告之中,其支持.txt格式,支持.html格式,支持.json格式,支持.db格式 。
-v, -- 详细模式,输出扫描过程信息
使用 kiwi- -h 查看kiwi-的帮助信息
Kiwi .
--------------------------------------------------------------------------------
usage: kiwi-
-d
Kiwi. Audit code for
:
-h, --help show this help and exit
- 以 -p PORT 或者 --port PORT 这样的形式,来指定监听端口,而默认的监听端口是5000 。
--ip IP 指定监听IP
-d , --
指定扫描报告目录
3.1 kiwi扫描示例
在一次扫描中,需要指定:
被扫描对象,即代码目录
正在被使用的扫描规则的目录,要是不期望每一次都去指定规则目录的话,那么能够借助设置环境变量,进而实现永久指定的操作 。
扫描示例
奇异鸟,前往临时文件夹,针对家目录里某用户的文件,输出为网页文件 。
kiwi -t /tmp/ -o .db
3.2 规则编写
可通过查看 目录中的内容来获取规则编写示例。
用yaml语法编写的 kiwi 的规则定义,于规则编写里涉及如下几个简单概念:
1、规则文件
规则文件,是说那种以“.”作为后缀的文件,它记录着具体的代码搜索规则的定义 。
评估函数,它是一个原型固定的函数,被用于后期搜索结果的确认,举个例子,当搜索到的是.(cmd, shell=True)这种情况时,在该评估函数当中能够去确认参数shell到底是不是True,以此来减小误报的情况 。
3、map文件
kiwi工具具备跨语言特性,所以要对不同编程语言的文件加以区分,map文件用于解决编程语言区分问题,像.py文件被视作脚本 。
4、规则文件
这是一份有着特殊用途的规则文件,其规则专门用来匹配文件名,此规则文件旨在协助安全人员找寻敏感文件,譬如 .php 。
的目录结构如下:
哦,这是一个目录呢,它是用来存放评估函数的,被叫做evals 。
.. .. .. .py # 文件,评估函数脚本
.. .. . # 文件,规则文件
.. .. java.
你提供的内容表述不太明确,请详细清晰地说明一下具体的改写要求,以便我能更准确地按照规则进行改写 。
3.2.1 编写map文件
每当新增加一门编程语言的规则时,需要编辑map文件,例如:
:
- : "\\.py$"
scope:
- : "\\.php\\d $"
scope: php
- : "\\.java$"
scope: java
- : "\\.sh$"
scope: linux-shell
:
- : "#!/usr/bin\\w "
scope:
- : "
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码