Skip to content

ningninger/SecConfig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Taint Specification Collection

什么是 Taint Specification Collection?

Taint Specification Collection 是专为静态分析工具 Tai-e 中的污点分析提供的配置文件集合,旨在为常见漏洞的安全分析提供支持。该集合涵盖了多种常见漏洞类型的污点规范,具体包括 sourcesinktransfer。为了方便用户查询和选择,污点规范根据软件包和相关漏洞类型进行了结构化分类,从而为污点分析提供了全面的配置方案。当前,该集合包含 406 条 source 配置、995 条 sink 配置和 138 条 transfer 配置,用户可以根据不同需求灵活使用和扩展。

如何使用 Taint Specification Collection?

Taint Specification Collection 中配置文件使用 YAML 格式(文件扩展名为 .yaml.yml),便于用户阅读和编辑。用户可以直接将集合中的配置文件集成到 Tai-e 污点分析工具的 taint-config.yml 配置中,或者根据实际需求对其进行修改和扩展,从而更好地满足特定的分析需求。

Note
  • 有关如何正确配置 Tai-e 污点分析,请参考 Configuring Taint Analysis

  • 项目中注释的配置表示接口方法。实际使用时,请根据 Tai-e 污点分析配置的格式,手动填写对应实现方法的配置信息。

项目结构

本项目的文件组织结构如下:

taint-specification-collection
|
├─ infoleak
│   ├─ sink                 contains 141 sinks
│   │   └─ java-io
|   |
│   └─ source               contains 158 sources
│   |   └─ java
|
├─ injection                contains 854 sinks
│   ├─ sink
│   │   ├─ android
│   │   │   └─ sql-injection
│   |   |
│   │   ├─ java
│   │   │   ├─ crlf
│   │   │   ├─ path-traversal
│   │   │   ├─ rce
│   │   │   └─ ...
|   |   |
│   │   └─ ...
|   |
│   └─ source               contains 248 sources
│   |   ├─ apache-struts2
|   |   |
│   |   ├─ javax
|   |   |   ├─ javax-portlet
|   |   |   ├─ javax-servlet
|   |   |   └─ javax-swing
|   |   |
│   |   └─ ...
|
└─transfer                  contains 138 transfers about String

该项目首先对配置文件进行了分类,分为三个一级类别:infoleakinjectiontransfer

  • infoleak 类别:包含与信息泄露漏洞相关的配置,进一步细分为两个二级目录:

    • source:按软件包名进行分类。

    • sink:按软件包名进行分类。

  • injection 类别:包含与注入漏洞相关的配置,同样细分为两个二级目录:

    • source:按软件包名进行分类。

    • sink:根据漏洞类型进行分类。

  • transfer 类别:包含常用的 transfer 配置。

由于 sourcesink 的配置内容较多,为了帮助用户快速定位所需配置,我们采用了这种分类方式。除此以外,每个文件的叶子目录下还包含相应配置的 README 文件,供用户参考。

示例

以下是如何使用本集合配置文件的示例。假设用户要检测 RCE(Remote Code Execution,CWE-94) 类型的注入漏洞,同时待测试程序使用 Jetty 软件库,可以按以下步骤修改 taint-config.yml 配置文件:

  1. taint-specification-collection/injection/source/jetty/jetty-http/jetty-http.yml 文件中的 Jetty 软件库 相关的 source 配置添加到 taint-config.yml

  2. taint-specification-collection/injection/sink/java/rce/command.yml 文件中的 RCE 类型注入漏洞 相关的 sink 配置添加到 taint-config.yml

  3. taint-specification-collection/transfer/string-transfers.yml 文件中的关于 String 类型transfer 配置添加到 taint-config.yml

示例 taint-config.yml 配置如下:

source:
  - { kind: call, method: "<org.eclipse.jetty.http.HttpCookie: java.lang.String getName()>", index: result, type: "java.lang.String" }
  - { kind: call, method: "<org.eclipse.jetty.http.HttpCookie: java.lang.String getValue()>", index: result, type: "java.lang.String" }
  - { kind: call, method: "<org.eclipse.jetty.http.HttpCookie: java.lang.String asString()>", index: result, type: "java.lang.String" }
#...

sinks:
  - { method: "<java.lang.Runtime: java.lang.Process exec(java.lang.String)>", index: 0 }
  - { method: "<java.lang.Runtime: java.lang.Process exec(java.lang.String[])>", index: 0 }
  - { method: "<java.lang.Runtime: java.lang.Process exec(java.lang.String, java.lang.String[])>", index: 0 }
#...

transfer:
  - { method: "<java.lang.String: java.lang.String substring(int)>", from: base, to: result }
  - { method: "<java.lang.String: java.lang.String substring(int,int)>", from: base, to: result }
#...

完成以上配置后,用户就可以使用 Tai-e 工具对待测试程序进行污点分析,以检测 Jetty 软件库作为入口导致的 RCE 类型漏洞。(^▽^)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •