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系统依赖
| 1 2 | brew install grep findutils flex phantomjs |
Ubuntu系统依赖
| 1 2 | apt-get install flex bison phantomjs |
CentOS系统依赖
| 1 2 | yum install flex bison phantomjs |
Cobra安装方法
| 1 2 3 | 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 – 开源的多语言源代码安全审计工具 所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。