Introduction(介绍)

什么是”源代码安全审计(白盒扫描)”?

由于开发人员的技术水平和安全意识各不相同,导致可能开发出一些存在安全漏洞的代码。 攻击者可以通过渗透测试来找到这些漏洞,从而导致应用被攻击、服务器被入侵、数据被下载、业务受到影响等等问题。 “源代码安全审计”是指通过审计发现源代码中的安全隐患和漏洞,而Cobra可将这个流程自动化。

Cobra为什么能从源代码中扫描到漏洞?

对于一些特征较为明显的可以使用正则规则来直接进行匹配出,比如硬编码密码、错误的配置等。 对于OWASP Top 10的漏洞,Cobra通过预先梳理能造成危害的函数,并定位代码中所有出现该危害函数的地方,继而基于Lex(Lexical Analyzer Generator, 词法分析生成器)和Yacc(Yet Another Compiler-Compiler, 编译器代码生成器)将对应源代码解析为AST(Abstract Syntax Tree, 抽象语法树),分析危害函数的入参是否可控来判断是否存在漏洞(目前仅接入了PHP-AST,其它语言AST接入中)。

Cobra和其它源代码审计系统有什么区别或优势?

Cobra定位是自动化发现源代码中大部分显著的安全问题,对于一些隐藏较深或特有的问题建议人工审计。

  • 开发源代码(基于开放的MIT License,可更改源码)
  • 支持开发语言多(支持十多种开发语言和文件类型)
  • 支持漏洞类型多(支持数十种漏洞类型)
  • 支持各种场景集成(提供API也可以命令行使用)
  • 专业支持,持续维护(由白帽子、开发工程师和安全工程师一起持续维护更新,并在多家企业内部使用)

Cobra支持哪些开发语言?

目前Cobra主要支持PHP、Java等主要开发语言及其它数十种文件类型,并持续更新规则和引擎以支持更多开发语言,具体见支持的开发语言和文件类型

Cobra能发现哪些漏洞?

覆盖大部分Web端常见漏洞和一些移动端(Android、iOS)通用漏洞,具体见支持的漏洞类型

IDLabelDescription(EN)Description(CN)
110MSMisconfiguration错误的配置
120SSRFServer-Side Forge服务端伪造
130HCPHard-coded Password硬编码密码
140XSSCross-Site Script跨站脚本
150CSRFCross-Site Request Forge跨站请求伪造
160SQLISQL InjectionSQL注入
163XIXpath InjectionXpath注入
165LILDAP InjectionLDAP注入
167XEIXML External Entity InjectionXML实体注入
170FILocal/Remote File Inclusion文件包含漏洞
180CICode Injection代码注入
181CICommand Injection命令注入
190IEInformation Exposure信息泄露
200PPGPredictable Pseudorandom Generator可预测的伪随机数生成器
210URUnvalidated Redirect未经验证的任意链接跳转
220HRSHTTP Response SplittingHTTP响应拆分
230SFSession FixationSESSION固定
260USunSerialize反序列化漏洞
280DFDeprecated Function废弃的函数
290LBLogic Bug逻辑错误
320VOVariables Override变量覆盖漏洞
350WFWeak Function不安全的函数
355WEWeak Encryption不安全的加密
360WSWebShellWebShell
970AVAndroid VulnerabilitiesAndroid漏洞
980IViOS VulnerabilitiesiOS漏洞
999ICInsecure Components引用了存在漏洞的三方组件(Maven/Pods/PIP/NPM)

Cobra能应用在哪些场景?

  • 【漏洞出现前】通过内置的扫描规则对公司项目进行日常扫描,并推进解决发现的漏洞。
  • 【漏洞出现后】当出现一种新漏洞,可以立刻编写一条Cobra扫描规则对公司全部项目进行扫描来判断受影响的项目。

Cobra是什么类型应用?

Cobra提供Web服务的同时也提供了命令行服务。

  • 【CLI】通过命令行扫描本地源代码,发现其中安全问题。
  • 【API&GUI】以Web Server形式部署在服务器上,供内部人员通过GUI的形式访问使用,并可以通过API集成到CI或发布系统中。

如何参与Cobra开发?

Cobra发展离不开开源社区的贡献,Cobra欢迎有Python开发经验且对代码审计感兴趣的人加入到我们的开源社区开发团队共同参与贡献(可通过Pull Request提交代码,之后我们邀请加入社区开发组沟通群)。

Cobra文档