Cobra – 开源的多语言源代码安全审计工具
- 发表于
- 安全工具
Cobra介绍
Cobra是一款源代码安全审计工具,支持检测多种开发语言源代码中的大部分显著的安全问题和漏洞。
由于开发人员的技术水平和安全意识各不相同,导致可能开发出一些存在安全漏洞的代码。 攻击者可以通过渗透测试来找到这些漏洞,从而导致应用被攻击、服务器被入侵、数据被下载、业务受到影响等等问题。 “源代码安全审计”是指通过审计发现源代码中的安全隐患和漏洞,而Cobra可将这个流程自动化。
Cobra为什么能从源代码中扫描到漏洞?
对于一些特征较为明显的可以使用正则规则来直接进行匹配出,比如硬编码密码、错误的配置等。 对于OWASP Top 10的漏洞,Cobra通过预先梳理能造成危害的函数,并定位代码中所有出现该危害函数的地方,继而基于Lex(Lexical Analyzer Generator, 词法分析生成器)和Yacc(Yet Another Compiler-Compiler, 编译器代码生成器)将对应源代码解析为AST(Abstract Syntax Tree, 抽象语法树),分析危害函数的入参是否可控来判断是否存在漏洞(目前仅接入了PHP-AST,其它语言AST接入中)。
Cobra特点
- Multi-language Supported(支持多种开发语言)
- 支持PHP、Java等开发语言,并支持数十种类型文件。
- Multi-Vulnerabilities Supported(支持多种漏洞类型)
- 首批开放数万条不安全的依赖检查规则和数十条代码安全扫描规则,后续将持续开放更多扫描规则。
- GUI/CLI/API Mode(命令行模式和API模式)
- 提供本地Web Server服务,可使用GUI可视化操作,也可支持本地API接口,方便和其它系统(发布系统、CI等)对接扩展。
- 开发源代码(基于开放的MIT License,可更改源码)
- 支持开发语言多(支持十多种开发语言和文件类型)
- 支持漏洞类型多(支持数十种漏洞类型)
- 支持各种场景集成(提供API也可以命令行使用)
- 专业支持,持续维护(由白帽子、开发工程师和安全工程师一起持续维护更新,并在多家企业内部使用)
Cobra安装
系统支持
系统 | 支持情况 |
---|---|
mac OS | 支持 |
Linux | 支持 |
Windows | 暂不支持 |
Python版本
Cobra可运行在Python 2.6 - 3.6+之间。
特殊依赖
以下系统需要单独安装依赖。
macOS系统依赖
brew install grep findutils flex phantomjs
Ubuntu系统依赖
apt-get install flex bison phantomjs
CentOS系统依赖
yum install flex bison phantomjs
Cobra安装方法
git clone https://github.com/WhaleShark-Team/cobra.git && cd cobra
pip install -r requirements.txt
python cobra.py --help
Cobra支持以下开发语言和文件类型
语言用来标记扫描规则对应需要扫描的后缀。 Cobra支持以下开发语言和文件类型,支持程度取决于对应开发语言或文件类型的规则数量。
语言 | 主语言 | 后缀 |
---|---|---|
PHP | 是 | .php/.php3/.php4/.php5 |
Java | 是 | .java |
Python | 是 | .py |
JSP | 否 | .jsp |
C | 否 | .h/.c |
Ruby | 否 | .rb |
Perl | 否 | .pl |
Lua | 否 | .lua |
Go | 否 | .go |
Swift | 否 | .swift |
C++ | 否 | .c/.cpp |
C# | 否 | .cs |
Header | 否 | .h |
Objective-C | 否 | .m |
Scale | 否 | .sbt/.scale |
Ceylon | 否 | .ceylon |
Kotlin | 否 | .kt |
SHELL | 否 | .sh |
BAT | 否 | .bat |
JavaScript | 否 | .js |
HTML | 否 | .html/.htm/.pthml |
CSS | 否 | .css/.less/.scss/.styl |
Image | 否 | .jpg/.png/.bmp/.gif/.ico/.cur |
Font | 否 | .eot/.otf/.svg/.ttf/.woff |
Conf | 否 | .properties/.conf/.ini/.cfg/.yml/.xml/.iml/.sfp/.manifest |
CMake | 否 | .cmake/.cmake.in |
SQL | 否 | .sql |
Compression | 否 | .zip/.tar/.tar.gz/.rar |
Executable | 否 | .exe |
LOG | 否 | .log |
Text | 否 | .txt/.text/.md/.rst/.csv |
Office | 否 | .doc/.docx/.wps/.rtf/.xls/.ppt |
Media | 否 | .mp3/.mp4/.swf/.flv |
Certificate | 否 | .p12/.crt/.key/.pfx/.csr |
Source | 否 | .psd/.ai/.axure/.xmind/.plan |
Thumb | 否 | .db/.DS_Store |
GIT | 否 | .pack/.idx/.sample |
Cobra能发现哪些漏洞?
Description(EN) | Description(CN) |
---|---|
Misconfiguration | 错误的配置 |
Server-Side Forge | 服务端伪造 |
Hard-coded Password | 硬编码密码 |
Cross-Site Script | 跨站脚本 |
Cross-Site Request Forge | 跨站请求伪造 |
SQL Injection | SQL注入 |
Xpath Injection | Xpath注入 |
LDAP Injection | LDAP注入 |
XML External Entity Injection | XML实体注入 |
Local/Remote File Inclusion | 文件包含漏洞 |
Code Injection | 代码注入 |
Command Injection | 命令注入 |
Information Exposure | 信息泄露 |
Predictable Pseudorandom Generator | 可预测的伪随机数生成器 |
Unvalidated Redirect | 未经验证的任意链接跳转 |
HTTP Response Splitting | HTTP响应拆分 |
Session Fixation | SESSION固定 |
unSerialize | 反序列化漏洞 |
Deprecated Function | 废弃的函数 |
Logic Bug | 逻辑错误 |
Variables Override | 变量覆盖漏洞 |
Weak Function | 不安全的函数 |
Weak Encryption | 不安全的加密 |
WebShell | WebShell |
Android Vulnerabilities | Android漏洞 |
iOS Vulnerabilities | iOS漏洞 |
Insecure Components | 引用了存在漏洞的三方组件(Maven/Pods/PIP/NPM) |
更多细节看文档
原文连接:Cobra – 开源的多语言源代码安全审计工具
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。