核心用法
Insecure Defaults Detection 是一款针对生产环境安全配置审计的专业技能,专注于识别fail-open(故障开放)漏洞——即应用在缺少安全配置时继续运行而非安全终止的行为模式。
核心检测模式
1. Fallback Secrets:SECRET = env.get('KEY') or 'default' 类模式,识别环境变量缺失时的硬编码回退
2. Default Credentials:硬编码的 username/password、api_key 等凭据对
3. Fail-Open Security:AUTH_REQUIRED = env.get(X, 'false') 等默认关闭安全功能的配置
4. Weak Crypto:MD5/SHA1/DES/RC4/ECB 等弱加密算法在安全场景中的使用
5. Permissive Access:CORS *、权限 0777、public-by-default 等过度宽松的访问控制
显著优点
- 区分安全模式:明确区分 fail-open(危险)与 fail-secure(安全)两种行为模式
- 生产导向:专注于生产可达代码,自动排除测试夹具、示例文件、开发工具
- 完整工作流:SEARCH→VERIFY→CONFIRM→REPORT 四阶段流程,确保每个发现都有代码路径追踪和生产影响验证
- 反辩识机制:内置常见合理化借口的反驳逻辑,如"开发默认值""生产配置会覆盖"等
潜在局限
- 语言特定性:示例以 Python/Node.js/Ruby 为主,其他语言需自行调整正则模式
- 上下文敏感:某些弱加密用于非安全场景(如校验和)时需人工判断
- 配置追踪依赖:需配合 Dockerfile、K8s YAML 等部署配置分析才能完全确认生产影响
- 误报风险:动态配置加载模式可能产生假阳性
适合人群
- 安全审计工程师、DevSecOps 工程师
- 需要进行生产代码审查的开发团队
- 负责预部署安全检查的 CI/CD 维护者
常规风险
- S+ 级风险:硬编码 JWT 密钥、数据库密码导致完全系统接管
- 权限提升:默认关闭的认证机制允许未授权访问
- 信息泄露:DEBUG 模式默认开启暴露敏感堆栈信息
使用建议
严格遵循"When NOT to Use"排除清单,对每处发现执行代码路径追踪,优先修复 CRITICAL 级别的生产配置缺失问题。