厦门信息化系统行业常见场景:甲方一句话,测试跑断腿。
“系统要上线,领导要求安全检测全覆盖,你挑个方法,下周给报告。”
接到这条消息,很多测试同学就开始纠结:
源代码审计(SAST)?
漏洞扫描(DAST)?
渗透测试(PenTest)?
三者不是谁替代谁,而是一套组合拳。
这篇文章,厦门国睿软件测试刘老师总结 8 年 100+ 软件测试踩坑经验,用 1 张决策表 + 3 个实战 Case + 1 套落地模板,一次性讲清。
1、一张表看懂差异
维度 | 源代码审计(SAST) | 漏洞扫描(DAST) | 渗透测试(PenTest) |
一句话总结:
SAST 管生,DAST 管养,PenTest 管杀。
2、实战案例:三种方法怎么排兵布阵
Case A:银行支付核心(Java/Spring)
阶段 1:SAST
工具:SonarQube + FindSecBugs
结果:发现 3 个 AES 硬编码密钥、1 个 反序列化 gadget
修复:统一接入 KMS,升级 Commons-Collections
阶段 2:DAST
工具:AWVS + 自研流量回放
结果:发现 JWT 未校验签名、CORS 允许*通配符
修复:配置白名单 + 校验 alg
阶段 3:PenTest
场景:模拟外部攻击者
结果:利用 水平越权 + IDOR 批量拉取他人订单
修复:增加 数据权限注解 + 行级 ACL
结论:SAST 提前止损 70%,DAST 堵住 20%,PenTest 补上最后的 10% 业务逻辑洞。
Case B:政务小程序(NodeJS/Serverless)
代码仓库 300+ 函数,SAST 误报爆炸(>5000 条)
采用 增量扫描:只扫本次 MR 变更文件,误报降到 120 条
DAST 对 Serverless URL 不友好(API Gateway 动态路由)
在 CI 里启动离线容器镜像,让 DAST 直接扫容器 IP
PenTest 发现 小程序登录态复用
利用 session_key 重放,获取任意用户手机号
修复:后端加 openid 绑定校验
Case C:IoT 固件(C/C++)
SAST:Coverity 扫出 117 个缓冲区溢出
但受限于交叉编译工具链,误报率 40%
用 自定义规则 过滤掉驱动层宏
DAST:固件无 Web 界面,直接 网络协议 fuzzing(Peach)
发现 MQTT 明文认证
PenTest:拿到硬件调试口,JTAG 导出固件,逆向私钥
最终推动 TPM 安全启动
3、落地模板:1 天搭好流水线
3.1 工具选型(开源)
3.2 GitLab CI 示例
yaml
stages: [sast, dast, pentest]
sast:
stage: sast
image: sonarsource/sonar-scanner-cli
script: sonar-scanner
allow_failure: true
dast:
stage: dast
image: owasp/zap2docker-stable
script: |
zap-baseline.py -t http://web:8080 -r dast.html
artifacts:
reports:
junit: dast.xml
pentest:
stage: pentest
when: manual # 人工触发
image: metasploitframework/metasploit-framework
script: msfconsole -q -x "use auxiliary/scanner/http/http_login; set RHOSTS web; run; exit"
3.3 结果聚合
统一推送到 DefectDojo
自动打标签:sast/dast/pentest
看板一眼看出哪类漏洞还在增长
4、常见疑问 FAQ
1.Q:只做 DAST 行不行?
A:可以,但只能发现“表面伤”,代码级和业务逻辑洞永远扫不到。
2. Q:SAST 误报太高怎么破?
A: 用 增量扫描+ 自定义过滤规则
把 OWASP Top 10 规则 权重调高,其余降级
3. Q:PenTest 频率?
A: 上线前必做
生产环境每半年一次
重大版本变更加一轮
5、一张思维导图收个尾
安全检测
├── 1. 编码阶段:SAST(快、早、便宜)
├── 2. 测试阶段:DAST(广、易、自动)
└── 3. 上线前:PenTest(深、准、贵)
下次领导再问“全覆盖怎么做”,直接甩这张图。
把三种方法串成一条流水线,漏洞发现窗口从上线后提前到编码前,安全事故少一半。
你所在公司现在用到了哪几种?踩过哪些坑?如在厦门需要做软件安全测试报告,欢迎咨询厦门国睿软件测试刘老师 133-4500-4525,一起交流软件测试解决方案!#软件安全检测报告#