Skip to content

安全测试规范

定义安全测试策略、测试用例和自动化方案


安全测试类型

类型目的执行频率
静态分析 (SAST)代码漏洞检测每次 PR
依赖扫描 (SCA)依赖漏洞检测每日
动态测试 (DAST)运行时漏洞检测每周
渗透测试模拟真实攻击每季度

静态安全分析

代码扫描规则

规则类别检测项严重级别
硬编码密钥API Key、图案Critical
敏感数据泄露日志中的私钥Critical
不安全随机数Math.random() 用于加密High
XSS 漏洞innerHTML, dangerouslySetInnerHTMLHigh
不安全依赖eval(), Function()Medium

自动化检测

PR 提交


静态分析扫描

    ├── Critical ──► 阻止合并

    ├── High ──► 阻止合并 + 通知

    ├── Medium ──► 警告

    └── Low ──► 记录

敏感信息检测模式

类型检测模式动作
私钥/[0-9a-f]{64}/i阻止
助记词12/24 个单词序列阻止
API Key已知格式的 Key警告

依赖安全扫描

漏洞评级

级别CVSS要求
Critical9.0-10.024h 内修复
High7.0-8.97 天内修复
Medium4.0-6.930 天内修复
Low0.1-3.9下次发布修复

扫描配置

依赖扫描策略:
- 每日自动扫描所有依赖
- PR 时检查新增依赖
- Critical/High 漏洞阻止合并
- 生成修复建议报告

处理流程

发现漏洞


评估影响范围

    ├── 有补丁 ──► 升级依赖

    └── 无补丁

         ├── 可替换 ──► 更换依赖

         └── 不可替换 ──► 添加缓解措施 + 监控

安全功能测试

认证测试

测试用例验证点
正确图案解锁成功解锁
错误图案 5 次显示延迟警告
错误图案 10 次账户锁定
生物识别取消回退图案锁
生物识别 3 次失败强制图案锁

加密测试

测试用例验证点
助记词加密存储存储中无明文
不同图案产生不同密文密文不同
图案验证正确图案能解密
错误图案解密解密失败
随机数唯一性每次加密 IV 不同

输入验证测试

测试用例输入预期结果
地址 XSS<script>alert(1)</script>拒绝/转义
金额溢出99999999999999999显示错误
负数金额-100拒绝
SQL 注入'; DROP TABLE;--无影响
路径穿越../../etc/passwd拒绝

授权测试

测试用例验证点
DWEB 授权显示显示请求方信息
授权拒绝正确返回拒绝
签名内容展示可读格式显示
恶意签名请求警告提示

渗透测试场景

场景 1: 助记词窃取

攻击路径:

  1. 尝试从存储读取助记词
  2. 尝试从内存 dump 获取
  3. 尝试通过日志获取
  4. 尝试通过网络拦截

验证点:

  • 存储加密
  • 内存及时清理
  • 日志无敏感数据
  • 无网络传输

场景 2: 中间人攻击

攻击路径:

  1. 代理拦截 HTTPS 请求
  2. 尝试篡改 API 响应
  3. 尝试伪造交易

验证点:

  • SSL 证书验证
  • 响应签名验证
  • 本地签名不可篡改

场景 3: 钓鱼攻击

攻击路径:

  1. 伪造授权页面
  2. 诱骗用户签名
  3. 窃取资产

验证点:

  • 显示请求来源
  • 签名内容可读
  • 可疑请求警告

场景 4: 重放攻击

攻击路径:

  1. 截获已签名交易
  2. 重复广播交易

验证点:

  • nonce 机制防重放
  • 交易幂等性

安全测试自动化

CI 集成

┌─────────────────────────────────────┐
│              PR 提交                 │
└──────────────┬──────────────────────┘

    ┌──────────┼──────────┐
    │          │          │
    ▼          ▼          ▼
┌───────┐ ┌───────┐ ┌───────┐
│ SAST  │ │  SCA  │ │ 单元  │
│ 扫描  │ │ 扫描  │ │ 测试  │
└───┬───┘ └───┬───┘ └───┬───┘
    │         │         │
    └─────────┼─────────┘


        ┌───────────┐
        │ 结果汇总  │
        └─────┬─────┘

    ┌─────────┼─────────┐
    │         │         │
    ▼         ▼         ▼
 通过      警告      失败


         阻止合并

安全测试报告

SecurityTestReport {
  timestamp: number
  
  staticAnalysis: {
    critical: number
    high: number
    medium: number
    low: number
    findings: Finding[]
  }
  
  dependencyAudit: {
    vulnerabilities: Vulnerability[]
    outdatedPackages: number
  }
  
  securityTests: {
    passed: number
    failed: number
    skipped: number
    failures: TestFailure[]
  }
}

安全测试环境

隔离要求

要求说明
独立环境不影响生产数据
测试钱包使用测试网
模拟攻击安全沙箱内
数据清理测试后清除

测试数据

数据来源安全要求
测试助记词预生成不含真实资产
测试私钥预生成测试网专用
攻击向量OWASP持续更新

漏洞响应

发现漏洞后

发现漏洞


评估严重性

    ├── Critical ──► 立即修复 + 通知

    ├── High ──► 24h 内修复

    └── Medium/Low ──► 排期修复


修复并验证


更新测试用例


复盘总结

漏洞赏金

  • SHOULD 建立漏洞赏金计划
  • MUST 提供安全问题报告渠道
  • MUST 及时响应安全报告

本章小结

  • 多层次安全测试:静态分析、依赖扫描、动态测试、渗透测试
  • 自动化集成到 CI,阻止带漏洞的代码合并
  • 完整的安全功能测试用例覆盖
  • 渗透测试场景模拟真实攻击
  • 漏洞发现后快速响应机制

Released under the MIT License.