CROSSINGTUD/CryptoAnalysis

GitHub: CROSSINGTUD/CryptoAnalysis

CogniCrypt_SAST 是一款基于 CrySL 规则的静态分析编译器,用于检测 Java 和 Android 应用中的密码学 API 误用问题。

Stars: 79 | Forks: 45

# CogniCryptSAST 此仓库包含 **CogniCryptSAST**,即 [CogniCrypt](https://www.cognicrypt.org) 的静态分析组件。 静态分析工具 **CogniCryptSAST** 接收以规范语言 CrySL 编写的规则作为输入, 并基于这些规则规范执行静态分析。CrySL 是一种领域特定语言 (DSL),旨在为密码学 库(特别是 [JCA](https://docs.oracle.com/en/java/javase/14/security/java-cryptography-architecture-jca-reference-guide.html))编码使用规范。有关 CrySL 和静态分析的更多信息,请参阅[此论文](http://drops.dagstuhl.de/opus/volltexte/2018/9215/)。 ## 功能 CogniCryptSAST 包含以下功能: - 上下文敏感、字段敏感且流敏感的 typestate 和指针分析 - 用于分析 Java 和 Android 应用程序的 CLI - 支持静态分析框架 [Soot](https://github.com/soot-oss/soot)、[SootUp](https://github.com/soot-oss/sootup) 和 [Opal](https://github.com/opalj/opal) 我们提供包含所有技术细节和选项的完整[文档](https://crossingtud.github.io/CryptoAnalysis/latest/)。 ## 发布版本 您可以[在此](https://github.com/CROSSINGTUD/CryptoAnalysis/releases)查看 **CogniCryptSAST** 的预编译版本。 我们建议使用最新版本。 您还可以在 [Maven Central](https://central.sonatype.com/artifact/de.fraunhofer.iem/CryptoAnalysis) 上找到 **CogniCryptSAST**。 ## 检出与构建 **CogniCryptSAST** 使用 Maven 作为构建工具。您可以通过以下命令编译和构建此项目: ```mvn clean package -DskipTests``` 包含所有依赖项的打包 `jar` 产物可以在 `/apps` 目录中找到。构建至少需要 Java 17。 ## 运行 CogniCryptSAST **CogniCryptSAST** 分析 Java 和 Android 应用程序,以检测基于 [CrySL 规则](https://github.com/CROSSINGTUD/Crypto-API-Rules) 的密码学误用。 ### 1. 准备您的输入 - 将您的应用程序编译为 `.jar` 或 `.apk` 文件 - 从 [GitHub releases](https://github.com/CROSSINGTUD/CryptoAnalysis/releases) 下载用于分析 Java 应用程序的 `HeadlessJavaScanner-x.y.z-jar-with-dependencies.jar`,或用于分析 Android 应用程序的 `HeadlessAndroidScanner-x.y.z-jar-with-dependencies.jar`,或者您也可以自行构建它们 - 下载 CrySL 规则(例如 [JCA 规则](https://github.com/CROSSINGTUD/Crypto-API-Rules/tree/master/JavaCryptographicArchitecture/src)) ### 2. 运行分析 - 用于 Java 应用程序的 CogniCryptSAST ``` java -jar HeadlessJavaScanner-x.y.z-jar-with-dependencies.jar \ --appPath \ --rulesDir ./CrySL-Rules/ \ --reportFormat CMD,SARIF \ --reportPath ./output/ ``` - 用于 Android 应用程序的 CogniCryptSAST ``` java -jar HeadlessAndroidScanner-x.y.z-jar-with-dependencies.jar \ --apkFile \ --platformDirectory --rulesDir ./CrySL-Rules/ \ --reportFormat CMD,SARIF \ --reportPath ./output/ ``` ### 3. 输出 - 报告将写入 `--reportPath` 和/或打印到控制台 - 误用类型包括:`ConstraintError`、`TypestateError`,有关所有错误类型,请参阅[错误类型](https://crossingtud.github.io/CryptoAnalysis/latest/error-types/) 如需了解高级选项,请访问[完整文档](https://crossingtud.github.io/CryptoAnalysis/latest/)。 ## 作为 GitHub Action 使用 **CogniCryptSAST** 可以作为 GitHub Action 使用。 ``` - name: Run CogniCrypt uses: CROSSINGTUD/CryptoAnalysis@version with: appPath: "CryptoAnalysisTargets/HelloWorld/HelloWorld.jar" basePath: "CryptoAnalysisTargets/HelloWorld" ``` 需要将 `appPath` 配置为指向应用程序的编译版本。 `basePath` 用于将所分析的 jar 中的路径与源代码树关联起来。 类 `com.example` 会在 `basePath/com/example` 处进行搜索。 有关所有输入选项,请参阅 [`action.yml`](action.yml)。 有关如何使用 GitHub Action 的示例,请参阅 [CryptoAnalysis-demo 仓库](https://github.com/CROSSINGTUD/CryptoAnalysis-demo/actions)。
标签:Android, CrySL, DSL, JS文件枚举, LNA, SAST, 域名枚举, 密码学误用检测, 盲注攻击, 错误基检测, 静态代码分析