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 - 开源的多语言源代码安全审计工具
Cobra控制台
Cobra - 开源的多语言源代码安全审计工具
Cobra源代码安全审计

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 InjectionSQL注入
Xpath InjectionXpath注入
LDAP InjectionLDAP注入
XML External Entity InjectionXML实体注入
Local/Remote File Inclusion文件包含漏洞
Code Injection代码注入
Command Injection命令注入
Information Exposure信息泄露
Predictable Pseudorandom Generator可预测的伪随机数生成器
Unvalidated Redirect未经验证的任意链接跳转
HTTP Response SplittingHTTP响应拆分
Session FixationSESSION固定
unSerialize反序列化漏洞
Deprecated Function废弃的函数
Logic Bug逻辑错误
Variables Override变量覆盖漏洞
Weak Function不安全的函数
Weak Encryption不安全的加密
WebShellWebShell
Android VulnerabilitiesAndroid漏洞
iOS VulnerabilitiesiOS漏洞
Insecure Components引用了存在漏洞的三方组件(Maven/Pods/PIP/NPM)

更多细节看文档