Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SEDATED — SEDATED® Project (Sensitive Enterprise Data Analyzer To Eliminate Disclosure) | Kitploit
工具/GitHubGitHub/owasp/sedated
Vulnerability ScannersCode AnalysisConfiguration AuditingDevSecOpsSecret DetectionSupply Chain Security
GitHubowasp/sedated

SEDATED

SEDATED® Project (Sensitive Enterprise Data Analyzer To Eliminate Disclosure)

查看仓库
110351年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SEDATED_logo_full

SEDATED® 项目(敏感企业数据分析器以消除泄露)专注于防止用户凭证和令牌等敏感数据被推送到 Git。

目录

  • 目的
  • 设置
    • 克隆 SEDATED®
    • 更新 .example 文件
    • 根据需要自定义 /config/custom_configs.sh 变量和函数
    • 推送组织特定实现的 SEDATED®
    • 将预接收钩子指向 SEDATED® 的 pre-receive.sh 文件
  • 本地测试
  • 文件说明
    • pre-receive.sh
    • /config/custom_configs.sh
    • /config/enforced_repos_list.txt
    • /config/regexes.json
    • /config/whitelists/commit_whitelist.txt
    • /config/whitelists/repo_whitelist.txt
    • /testing/regex_testing/regex_test_script.sh
    • /testing/regex_testing/test_cases.txt
  • 自定义
    • 自定义变量
    • 自定义函数
  • 兼容性
    • GitHub
    • GitLab
    • Git
    • 任何其他 Git SCM 工具
  • 贡献
  • 作者
  • 许可证

目的

在当今的 CICD 环境中,需要进行大量的代码更改,开发人员不断推送可能无意中包含敏感信息的代码。这种潜在的敏感数据暴露给组织带来了巨大的风险(2017 OWASP Top Ten #3 - 敏感数据暴露)。SEDATED® 通过自动审查所有传入的代码更改并向开发人员提供即时反馈来解决此问题。如果识别出敏感数据,它将阻止提交被推送到 Git 服务器。

**注意:SEDATED® 仅扫描提交推送中新增或修改的行(在补丁文件中以 + 开头)。对于提交推送中被删除的行(在补丁文件中以 - 开头),SEDATED® 不会扫描。

设置

1. 克隆 SEDATED®

git clone https://github.com/OWASP/SEDATED.git

cd SEDATED/

2. 更新 .example 文件

cp /config/whitelists/commit_whitelist.txt.example /config/whitelists/commit_whitelist.txt

cp /config/whitelists/repo_whitelist.txt.example /config/whitelists/repo_whitelist.txt

cp /config/enforced_repos_list.txt.example /config/enforced_repos_list.txt

3. 根据需要自定义 /config/custom_configs.sh 变量和函数

4. 推送组织特定实现的 SEDATED®

将组织特定的 SEDATED® 实现推送到组织所需的 Git 仓库(GitHub、GitLab、Git 等)。

5. 将预接收钩子指向 SEDATED® 的 pre-receive.sh 文件

在 GitHub Enterprise 实例上完成此操作的说明可在 GitHub_Enterprise_Setup.md 中找到。

本地测试

  • GitHub Docker 设置 - 设置 GitHub Docker 容器作为启用预接收钩子的 Git 服务器以进行本地测试的一般说明。
    • 需要进行一些修改,以使 SEDATED® 按设计运行。
      • 需要用 SEDATED® 的 pre-receive.sh 脚本替换 always_reject.sh。
      • SEDATED® 的附带文件/文件夹结构需要包含在同一目录中,或可以被 pre-receive.sh 脚本访问。
      • 可能还需要一些其他调整,但上述链接中的说明是本地测试的良好起点。

文件说明

pre-receive.sh
  • SEDATED® 的核心和灵魂。
  • SEDATED® 预接收 Git 钩子脚本,结合 SEDATED® 的正则表达式(config/regexes.json),识别推送到 Git 实例的代码中新增或修改的行,这些行包含硬编码的凭证/敏感数据(如 config/regexes.json 中所定义),如果找到包含硬编码凭证/敏感数据的行,则阻止推送。
/config/custom_configs.sh
  • SEDATED® 自定义配置文件,与 pre-receive.sh 一起使用,允许组织自定义其 SEDATED® 实现,而无需修改 SEDATED® 的 pre-receive.sh 文件中的任何源代码,它提供了内置的可自定义变量和函数,这些变量和函数从 pre-receive.sh 中引用。
/config/enforced_repos_list.txt
  • 当 SEDATED®(预接收钩子)在 config/custom_configs.sh 中的 use_enforced_repo_check_custom 标志设置为 "True" 时使用。
  • 允许 SEDATED® 在企业内全局“启用”,但仅在列在此文件中的仓库上“强制”启用。
  • 可以通过在需要强制启用的组织或用户名后追加 /* 来对特定组织或用户名下的所有仓库进行强制启用。
  • 如果 SEDATED® 在组织内全局启用,并且仓库未出现在 /config/enforced_repos_list.txt 文件中,则推送者(如果从命令行推送)将看到一条可自定义的消息(通过 /config/custom_configs.sh 文件自定义),并且 SEDATED® 不会扫描推送中包含的任何代码。
  • 启用/禁用此功能的标志可以在 /config/custom_configs.sh 中找到,并设置为 "True" 或 "False"。
    • "False" - 每个“启用”了 SEDATED® 的仓库也将“强制”启用 SEDATED®。
    • "True" - 只有“启用”了 SEDATED® 并且列在 /config/enforced_repos_list.txt 中的仓库才会“强制”启用 SEDATED®。所有其他“启用”了 SEDATED® 但未列在 /config/enforced_repos_list.txt 中的仓库只会看到一条自定义消息,不会对来自这些仓库的推送进行代码扫描。
  • 此文件可以为空,仅在 config/custom_configs.sh 中的 use_enforced_repo_check_custom 标志设置为 "True" 时才需要存在。
/config/regexes.json
  • 包含用于标记敏感数据/硬编码凭证的正则表达式(regexes)。
  • 这些正则表达式由 GNU grep(在 pre-receive.sh 中)使用 -P 标志消费,使其成为 Perl 兼容的正则表达式(PCRE)。
  • 可以根据需要从此文件中添加或删除正则表达式,但如果使用 /testing/regex_testing/regex_test_script.sh 脚本,则需要通过添加或删除与更新后的正则表达式相关的测试用例来更新 /testing/regex_testing/test_cases.txt 文件,以便 /testing/regex_testing/regex_test_script.sh 的结果准确。
  • 如果在此文件中添加/修改正则表达式,可能由于文件为 JSON 格式,需要额外的转义字符 \。
/config/whitelists/commit_whitelist.txt
  • 在误报情况下使用,如果提交 ID 包含在此文件中,则可以排除一个或多个提交在扫描过程中被检查。
  • 提交 ID 需要在此文件中以回车分隔,如 /config/whitelists/commit_whitelist.txt.example 文件所示。
  • 此文件可以为空,但需要存在。
可选:当开发人员遇到误报时,请求他们向此(commit_whitelist.txt)文件提交拉取请求,以便进行审查。
/config/whitelists/repo_whitelist.txt
  • 包含在此文件中的(组织/用户名)/仓库将完全排除在敏感数据/硬编码凭证的扫描之外,直到从列表中移除。
  • 在大量推送(例如仓库迁移)的情况下使用,此时 SEDATED® 无法在 5 秒窗口内(5 秒窗口是 GitHub 特定的,在其他 Git 实例上可能不同)扫描推送中包含的新/修改代码。
  • (组织/用户名)/仓库名称需要在此文件中以回车分隔,如 /config/whitelists/repo_whitelist.txt.example 文件所示。
  • 此文件可以为空,但需要存在。
/testing/regex_testing/regex_test_script.sh
  • SEDATED® 正则表达式测试脚本,与 testing/regex_testing/test_cases.txt 一起使用,是一种简单、快速的离线方式,用于测试/验证 config/regexes.json 中的正则表达式是否有效并匹配所需的模式,以及是否按预期排除/不匹配。
    • 针对测试用例列表(/testing/regex_testing/test_cases.txt)测试正则表达式,以验证正则表达式是否按预期工作。
    • 包括对正例和负例测试用例(/testing/regex_testing/test_cases.txt)的测试。
    • 运行脚本时必须使用 GNU grep,否则脚本将失败(BSD grep 没有 -P 标志)。
    • 脚本中使用的测试用例从 /testing/regex_testing/test_cases.txt 中获取。
/testing/regex_testing/test_cases.txt
  • 测试用例列表,将被传递到 /testing/regex_testing/regex_test_script.sh 中供其使用。
  • 每个测试用例都附有 >>pass 或 >>fail,告诉 /testing/regex_testing/regex_test_script.sh 脚本对正则表达式的期望。
    • >>pass 表示包含前面字符串的推送将被 SEDATED® 接受(即正则表达式不会标记前面的字符串)。
    • >>fail 表示包含前面字符串的推送将被 SEDATED® 拒绝(即正则表达式会标记前面的字符串)。

自定义

自定义变量和函数旨在允许组织轻松自定义其特定的 SEDATED® 实现,而无需修改执行所有繁重工作的主预接收钩子文件。所有自定义变量和函数都可以在 /config/custom_configs.sh 中找到,该文件中包含的变量说明如下。

自定义变量

  • show_SEDATED_link_custom - 设置为 "True" 以显示指向 OWASP/SEDATED GitHub 仓库的链接(区分大小写),否则设置为 "False"。
  • documentation_link_custom - 添加指向组织特定文档的链接,说明组织希望开发人员如何处理被拒绝的推送和/或关于 SEDATED® 的一般组织特定信息。
    • 当推送被拒绝时,向开发人员显示。
    • 当强制仓库检查设置为 true 且仓库未包含在 enforced_repos_list.txt 文件中时,向开发人员显示。
  • use_enforced_repo_check_custom - "True" 或 "False"(区分大小写)。
    • 有关此标志含义的更多详细信息,请参见上方 /config/enforced_repos_list.txt 的文件说明。
  • enforced_repo_check_true_message_custom 带自定义消息(仅在 use_enforced_repo_check_custom 设置为 "True" 时需要)。
  • obfuscate_output_custom - "True" 或 "False"(区分大小写)。使用此选项可屏蔽 SEDATED® 输出中显示的敏感数据。

自定义函数

  • SET_USER_REPO_NAME_CUSTOM
    • 设置用户/组织/组和仓库名称。
    • 如果使用 GitHub,则使用 GITHUB_REPO_NAME 变量设置用户/组织/组和仓库名称。
    • 如果不使用 GitHub,可以设置自定义变量以获取这些名称。
    • 提供的非 GitHub 名称设置仅用于在纯 Git 中获取名称,但可能需要根据不同的实现(Git SCM)进行调整。
  • PRINT_ERROR_MESSAGE_CUSTOM
    • 允许在遇到错误时打印自定义错误消息。
  • EXIT_SEDATED_CUSTOM
    • 在退出 SEDATED® 时执行额外的自定义操作(例如记录日志、发送指标等)。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。
  • UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM
    • 当 SEDATED® 无法访问仓库白名单文件时,执行额外的自定义操作(例如打印错误消息、记录日志、发送指标等)。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。
  • PUSH_ACCEPTED_CUSTOM
    • 当推送被接受时,执行额外的自定义操作(例如记录日志、发送指标等)。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。
  • UNABLE_TO_ACCESS_REGEXES_CUSTOM
    • 当 SEDATED® 无法访问 regexes.json 文件时,执行额外的自定义操作。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。

兼容性

仅与使用 Git 版本控制系统的 SCM 工具兼容。

  • GitHub
    • 已全面测试(Enterprise v2.15.3)。
    • SEDATED® GitHub Enterprise 设置。
  • GitLab
    • 已初步测试。
    • 可能需要修改 SET_USER_REPO_NAME_CUSTOM 以设置用户/组织和仓库名称。
  • Git
    • 已初步测试。
    • 所有 SEDATED® 文件/文件夹需要放置到 .git/hooks/ 目录中(文档文件夹/文件除外)。
    • 从 pre-receive.sample 中移除 .sample,并将 SEDATED® 的 pre-receive.sh 文件中的代码复制到我们刚刚从 .sample 文件创建的 pre-receive 文件中。
    • 根据实现情况,可能需要使用 git-template 或类似工具。
  • 任何其他 Git SCM 工具
    • 未经测试。
    • 可能需要修改 SET_USER_REPO_NAME_CUSTOM 以设置用户/组织和仓库名称。
    • 可能还需要其他修改才能工作。

贡献

欢迎对本项目做出贡献!

您可以通过以下任一方式贡献:

  • 请提交问题,详细说明您认为可以改进 SEDATED® 的内容以及您认为如何在代码库中实际实现该内容,将您的改进想法提交给我们(或任何可能想接受挑战,将您的想法变为现实并融入 SEDATED® 代码库的社区成员)。
  • 提交包含您的代码更改的拉取请求,以使 SEDATED® 变得更好,我们将进行审查、测试和合并。:)

作者

  • Dennis Kennedy
  • Simeon Cloutier

许可证

SEDATED® 根据 BSD 3-Clause "New" or "Revised" License 进行许可。


**SEDATED® 不保证标记出每个硬编码的凭证、密钥、机密等实例;它使用正则表达式模式匹配,虽然它在捕捉大多数实例方面已经做得相当不错,但并非完美,我们始终欢迎提出想法和/或拉取请求,以帮助使 SEDATED® 变得更好。

下载工具
  • 如果无法访问正则表达式,SEDATED® 将 exit 1 并打印错误消息,但如果需要,在这些情况下可以执行额外的自定义操作(例如打印额外错误消息、记录日志、发送指标等)。
  • PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM
    • 当推送因包含违规内容而被拒绝时,执行额外的自定义操作(例如记录日志、发送指标等)。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。
  • UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM
    • 当 SEDATED® 无法访问提交白名单文件时,执行额外的自定义操作(例如记录日志、发送指标等)。
    • 默认为 : “不执行任何操作”作为额外操作,并且不需要更改。