SuperAPI AI 工具集

insecure-defaults

安全与审计

查看项目

更新于 10-16 05:38

技能介绍

用途

insecure-defaults 是一个用于检测源代码中不安全默认配置的安全扫描技能。它面向代码审查、安全审计、服务部署前检查以及对第三方或遗留代码的审阅,帮助在问题进入生产环境之前发现不安全的默认设置。

主要能力

该技能在五个风险类别中扫描源代码:

  1. 弱加密算法:标记 MD5、SHA1、DES、RC4 以及 AES ECB 模式等已损坏或弱算法。
  2. 默认与硬编码凭据:标记代码和配置文件中的字面密码、默认管理员凭据以及硬编码 API 令牌。
  3. Fail-open 模式:标记静默继续而非安全失败的宽泛异常处理,这类模式可能绕过认证、授权或校验逻辑。
  4. 不安全的框架默认值:检查常见的不安全框架设置,例如 Django DEBUG 模式、通配符 CORS、宽松的 Content-Security-Policy,以及被禁用的安全中间件。
  5. 不安全的 TLS/SSL 默认值:标记禁用的证书校验、接受过期证书,以及使用已废弃的 TLS 版本。

对每个发现项,技能会报告文件位置、解释风险,并推荐安全替代方案。最终输出包含风险汇总、修复优先级参考和安全默认值参考。

使用方式

前置条件:

  • grep(标准、始终可用)
  • semgrep(可选,通过结构匹配提升准确率):
pip install semgrep
# verify
semgrep --version
  • 环境变量 SECSKILL_SCAN_PATH:要扫描的代码库根目录

输入变量:

  • SECSKILL_SCAN_PATH:必填,要扫描的代码库根目录
  • SECSKILL_OUTPUT_DIR:可选,结果输出目录(默认:./output)
  • SECSKILL_EXTENSIONS:可选,逗号分隔的包含文件扩展名(默认:py,js,ts,java,go,rb,php,cs,cpp,c,yaml,yml,toml,env,cfg,conf,ini,properties)
  • SECSKILL_USE_SEMGREP:可选,设为 false 即使安装了 semgrep 也跳过(默认:自动检测)

工作流程:

  1. 环境设置:读取环境变量、校验扫描目录、创建输出目录、生成带时间戳的报告文件路径、构建 grep 的 include 标志、检测 semgrep 是否可用。
  2. 弱加密算法扫描:使用 grep 模式匹配以及可选的 semgrep 规则。
  3. 默认/硬编码凭据扫描:匹配字面密码、API key、默认凭据等,并在打印前对值进行掩码处理。
  4. Fail-open 模式扫描:匹配静默异常处理模式。
  5. 不安全框架默认值扫描:匹配 Django DEBUG、CORS 通配符、CSP、Cookie 安全开关、HSTS 等。
  6. 不安全 TLS/SSL 默认值扫描:匹配禁用校验、过期证书、旧协议版本等。
  7. 风险汇总与建议:统计各类别发现项,输出修复优先级与安全默认值参考,并保存报告文件。

完成条件:

  • 五类均已扫描并打印结果
  • 每个发现项包含文件路径和行号
  • 生成风险汇总表
  • 报告文件写入输出目录

适用场景

  • 在代码审查期间捕捉不安全默认值,避免其进入生产环境
  • 作为新代码库或不熟悉代码库安全审计的一部分
  • 在部署服务前检查框架与运行时设置
  • 审查团队继承的第三方或遗留代码

限制与注意事项

  • 默认过滤 test/、spec/ 和 _test. 文件中的发现项,因为测试夹具会故意使用弱值;如需完整覆盖可重新包含它们。
  • 该技能使用静态模式匹配,无法评估运行时配置或通过环境变量注入的值,应始终辅以对部署配置的人工审查。
  • 该技能适合与 secret-scan(git 历史中的凭据泄露)和 security-headers(HTTP 层默认值)搭配使用。
  • 已知失败模式包括:grep 选项无效(shell 兼容性问题,建议显式用 bash 运行)、测试文件误报过多(添加项目特定路径到 grep -v 排除)、semgrep 规则未找到(规则 ID 随版本变化,可用 semgrep --config auto 或访问 semgrep.dev 查询)、编译型语言缺少发现项(grep 无法检查字节码,应在编译前扫描源码并将 .class/.pyc 加入排除)、凭据值出现在报告中(掩码 sed 模式未匹配引号风格,需扩展 sed 掩码表达式)。