网淘吧来吧,欢迎您!

Insecure Defaults Detection

2026-03-31 新闻来源:网淘吧 围观:14
电脑广告
手机广告

不安全默认配置检测

发现故障开放应用程序因配置缺失而以不安全方式运行的漏洞。区分可利用的默认配置与安全崩溃的故障安全模式。

  • 故障开放(严重): SECRET = env.get('KEY') or 'default'→ 应用程序使用弱密钥运行
  • 故障安全(安全): SECRET = env['KEY']→ 配置缺失时应用程序崩溃

使用场景

  • 生产环境应用程序的安全审计(认证、加密、API安全领域)
  • 配置文件审查部署文件、基础设施即代码模板、Docker配置
  • 代码审查环境变量处理与密钥管理
  • 部署前检查硬编码凭证或弱默认配置

禁用场景

以下情况请勿使用此技能:

Insecure Defaults Detection

  • 测试夹具明确限定于测试环境(位于test/spec/__tests__/目录中的文件)
  • 示例/模板文件(使用.example.template.sample后缀的文件)
  • 仅用于开发的工具(本地开发用的Docker Compose、调试脚本)
  • 文档中的示例位于README.md或docs/目录中
  • 构建时配置在部署时会被替换
  • 缺失即崩溃的行为指应用在缺少正确配置时无法启动(故障安全机制)

当有疑问时:追踪代码路径以确定应用是运行默认设置还是崩溃。

应拒绝的合理化借口

  • "这只是一个开发环境的默认设置"→ 如果它进入生产代码,就是一个发现的问题
  • "生产配置会覆盖它"→ 验证生产配置是否存在;如果不存在,代码层面的漏洞仍然存在
  • "没有正确的配置,这永远不会运行"→ 通过代码追踪来证明;许多应用会静默失败
  • "它在认证后面"→ 深度防御;会话一旦被攻破,仍然可以利用弱默认设置
  • "我们会在发布前修复它"→ 现在就记录;"以后"很少会来

工作流程

对每一个潜在的发现问题,遵循以下工作流程:

1. 搜索:进行项目发现并查找不安全的默认设置

确定语言、框架和项目惯例。利用这些信息进一步发现如秘密存储位置、秘密使用模式、带凭证的第三方集成、加密技术以及其他相关配置。进一步利用信息分析不安全的默认配置。

示例在以下位置搜索模式:**/config/**/auth/**/database/以及环境文件中:

  • 后备密钥: getenv.*\) 或 ['"]process\.env\.[A-Z_]+ \|\| ['"]ENV\.fetch.*默认:
  • 硬编码凭据: password.*=.*['"][^'"]{8,}['"]api[_-]?key.*=.*['"][^'"]+['"]
  • 弱默认值: DEBUG.*=.*trueAUTH.*=.*falseCORS.*=.*\*
  • 加密算法: MD5|SHA1|DES|RC4|ECB在安全背景下

根据发现结果调整搜索方法。

关注生产环境可访问的代码,而非测试固件或示例文件。

2. 验证:实际行为

对于每个匹配项,追踪代码路径以理解运行时行为。

需要回答的问题:

  • 这段代码何时执行?(启动时 vs. 运行时)
  • 如果配置变量缺失会发生什么?
  • 是否有强制安全配置的验证?

3. 确认:生产影响

确定此问题是否影响生产环境:

如果生产配置提供了变量 → 较低严重性(但仍然是代码级漏洞) 如果生产配置缺失或使用默认值 → 严重

4. 报告:附带证据

报告示例:

Finding: Hardcoded JWT Secret Fallback
Location: src/auth/jwt.ts:15
Pattern: const secret = process.env.JWT_SECRET || 'default';

Verification: App starts without JWT_SECRET; secret used in jwt.sign() at line 42
Production Impact: Dockerfile missing JWT_SECRET
Exploitation: Attacker forges JWTs using 'default', gains unauthorized access

快速验证清单

回退密钥: SECRET = env.get(X) or Y→ 验证:应用是否在没有环境变量的情况下启动?密钥是否用于加密/身份验证? → 跳过:测试固件、示例文件

默认凭据:硬编码用户名/密码配对 → 验证:在部署配置中是否活跃?运行时是否无覆盖? → 跳过:已禁用的账户、文档示例

故障开放安全: AUTH_REQUIRED = env.get(X, 'false')→ 验证:默认是否不安全(false/禁用/宽松)? → 安全:应用崩溃或默认安全(true/启用/限制)

弱加密:安全上下文中使用MD5/SHA1/DES/RC4/ECB → 验证:是否用于密码、加密或令牌? → 跳过:校验和、非安全哈希

宽松访问:跨域资源共享(CORS)*,权限0777,默认公开 → 验证:默认是否允许未授权访问? → 跳过:经过明确配置且有正当理由的宽松设置

调试功能:堆栈跟踪、自省、详细错误信息 → 验证:是否默认启用?是否在响应中暴露? → 跳过:仅限日志记录、不面向用户

如需查看详细示例与反例,请参考examples.md文件。

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部
上一篇:MoltStreet 下一篇:Clawdbot Sync

相关文章

您是本站第389116名访客 今日有1篇新文章/评论