taibeihacker
Moderator
Yet another tool - why?
现有工具并没有真正“了解”代码。相反,它们主要是解析文本。DeepSecrets通过语义分析,危险的可变检测以及更有效的熵分析来扩展经典的Regex-Search方法。代码理解支持500多种语言和格式,并通过链条和解析(通常在SAST工具中使用)来实现。
DeepSecrets还引入了一种新的方法来查找Secrets:仅使用您已知秘密的哈希值,并在您的代码中找到它们。
在引擎盖的故事下,在这里的文章中: https://hackernoon.com/modernizing-secrets-scanning-part-part-1-the-the-promblem
Mini-FAQ after release
PFF,它仍然基于正则是基于正则的吗?是,否。当然,它使用REGEXES并找到像任何其他工具一样的打字秘密。但是,语言理解(链路阶段)和可变检测也使用引擎盖下的Regexes。因此,Regexes是一种工具,而不是问题。
为什么不构建真正的抽象语法树?这在学术上更正确!
DeepSecrets试图在复杂性和有效性之间保持平衡。建立真实的AST是一件非常复杂的事情,仅仅是我们特定任务的过度杀伤。因此,该工具仍然遵循代码分析的通用SAST道,但使用其他方法优化了AST部分。
我想构建自己的语义规则。我该怎么做?
仅在此刻通过代码。计划在计划中正式化规则并将其转移到灵活的用户控制规则集中。
我还有一个问题
随意与维护者进行交流
Installation
从GitHub通过PIP$ pip安装git+https://github.com/avito-tech/deepsecrets.git
来自PYPI
$ pip安装deepsecrets
Scanning
最简单的方式:$ deepSecrets -target-dir/path/to/your/code-outfile report.json
这将使用默认配置:对/路径/to/your/code进行扫描
通过内置规则集语义检查(可变检测,熵检查)报告将保存到Report.json
Fine-tuning
运行DeepSecrets-详细信息。基本上,您可以通过指定-Regex-rules使用自己的规则集。可以通过- 排除路径设置要排除在扫描之外的路径。
Building rulesets
Regex
ROGEX检查的内置规则集位于/deepsecrets/rules/regexes.json中。您可以自由遵循该格式并创建自定义规则集。HashedSecret
REGEX检查的示例规则集位于/deepsecrets/rules/regexes.json中。您可以自由遵循该格式并创建自定义规则集。Contributing
Under the hood
有几个核心概念:文件令牌令牌引擎查找Scanmode
File
只是文件的Pythonic表示,具有所有需要的管理方法。Tokenizer
一个能够通过其逻辑将文件内容分解成零件的组件。有四种类型的dokenizers:FullContentTokenizer:处理所有内容都是单个令牌。对于基于正则搜索的搜索有用。 perWordTokenizer:通过单词和线路断裂给定内容。 LexerTokenizer:使用特定于语言的智能将代码分解为语义上正确的作品,并为每个令牌提供其他上下文。
Token
一个字符串,其中包含有关其语义角色,相应文件和内部位置的其他信息。Engine
组件执行秘密搜索单个令牌,该令牌通过其自己的逻辑搜索。返回一组发现。有三个可用的引擎:RegexEngine: checks tokens' values through a special ruleset SemanticEngine: checks tokens produced by the LexerTokenizer using additional context - variable names and values HashedSecretEngine: checks tokens' values by hashing them and trying to find coinciding hashes inside a special ruleset
Finding
This is a data structure representing a problem detected inside code.具有有关文件内部的精度位置的信息以及找到它的规则。ScanMode
此组件负责扫描过程。定义给定工作目录的分析范围尊重异常,允许声明完美分析仪- 针对每个文件调用的方法,返回发现列表。主要用途是初始化必要的引擎,令牌和规则集。运行SCAN:一个多处理池并行分析每个文件。为输出准备结果并输出。当前的实现具有由用户提供的配置通过CLI ARGS构建的Cliscanmode。
Local development
应该使用VSCODE和“远程容器”功能开发该项目。步骤:
克隆存储库打开带有VSCODE的克隆文件夹与“重新打开在容器中”等待,等待容器构建并安装了必要的扩展名,您就准备就绪