用途
该技能在 CIA 平台内强制执行 Hack23 安全开发策略,为 SAST/DAST 集成、依赖扫描、代码签名以及日常开发流程中的策略合规验证提供可操作指引。
适用时机
适用于:审查 PR 的策略合规性;配置 CI/CD 安全扫描流水线;添加或更新依赖;搭建新开发环境;调查安全扫描发现;为发布准备代码;对照策略要求审计既有代码。不适用于:高层 SDLC 规划(应使用 secure-development-lifecycle)、运行时安全监控(应使用 incident-response)、架构级安全设计(应使用 security-architecture-validation)。
策略要求
- 静态应用安全测试(SAST)
必需工具:CodeQL(语义代码分析,GitHub Actions 集成,阻塞条件为零 critical/high)、SonarCloud(代码质量与安全,GitHub Actions,阻塞条件为质量门禁)、SpotBugs(Java 缺陷检测,Maven 插件,建议性)。
CodeQL 配置示例:
- uses: github/codeql-action/analyze@v3 with: languages: java queries: +security-extended
SonarCloud 质量门禁通过的必需条件:无新增 critical 问题;无新增 high 安全热点;新代码覆盖率 ≥ 80%;新代码重复率 < 3%。
开发者操作:推送前本地运行 CodeQL(codeql database create --language=java);创建 PR 后检查 SonarCloud 仪表盘;合并前处理所有 critical/high 发现;对误报记录理由。
- 动态应用安全测试(DAST)
必需扫描:Baseline(OWASP ZAP,每次发布,全应用);API Scan(OWASP ZAP,每次发布,REST 端点);Authenticated(OWASP ZAP,每季度,管理流程)。
ZAP 集成示例:
- name: ZAP Scan uses: zaproxy/action-baseline@v0.14.0 with: target: 'https://staging.cia.hack23.com' rules_file_name: '.zap/rules.tsv'
处理 DAST 发现:Critical/High 阻塞发布并立即修复;Medium 在当前 sprint 内修复;Low/Informational 记入 backlog 并在 30 天内修复。
- 依赖扫描
必需检查:OWASP Dependency Check(已知 CVE 检测,PR 加每周,阻塞 critical/high);Dependabot(自动更新,持续,建议性);GitHub Advisory DB(漏洞告警,持续,阻塞 critical);License Check(许可证合规,PR,阻塞不兼容项)。
Maven 配置示例:
<plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <configuration> <failBuildOnCVSS>7</failBuildOnCVSS> <suppressionFile>dependency-check-suppression.xml</suppressionFile> </configuration> </plugin>
添加新依赖的强制清单:检查 GitHub Advisory DB 已知漏洞;验证许可证兼容性(首选 Apache 2.0);运行 mvn dependency-check:check;审查传递依赖;在 PR 描述中记录理由;确认无 critical/high CVE;如维护 SBOM 则更新。
- 代码签名与完整性
提交签名:
git config --global commit.gpgsign true git config --global user.signingkey <GPG-KEY-ID>
制品完整性:Maven 构建为所有制品生成校验和;发布制品进行签名;Docker 镜像使用内容信任;CloudFormation 模板带版本与校验和。
- 安全编码标准
强制实践:输入验证(所有用户输入,Spring Validation 加自定义);输出编码(所有渲染数据,Vaadin 内置加手动);参数化查询(所有数据库访问,JPA/Hibernate);错误处理(不泄露信息,自定义异常处理器);日志(不记录敏感数据,SLF4J + Logback);认证(Spring Security,框架默认);CSRF 防护(所有状态变更,Spring Security)。
禁止模式:
// 禁止:查询中的字符串拼接 entityManager.createQuery("SELECT p FROM Person p WHERE p.id = " + id);
// 禁止:记录敏感数据 log.info("User login: " + username + " password: " + password);
// 禁止:禁用 CSRF http.csrf().disable(); // 仅在明确说明理由并记录时
// 禁止:硬编码凭据 private static final String API_KEY = "sk-1234567890";
策略合规验证
PR 审查清单:CodeQL 扫描通过(零 critical/high 告警);SonarCloud 质量门禁通过;OWASP Dependency Check 通过(CVSS < 7);未检测到禁止的代码模式;所有用户输入均有输入验证;渲染数据已验证输出编码;代码中无密钥或凭据;提交已签名(GPG 或 SSH);测试覆盖率达阈值(行 80%,分支 70%);安全相关变更已记录。
季度审计清单:所有依赖更新至最新稳定版;无未处理的 critical/high Dependabot 告警;DAST 扫描已完成且发现已处理;安全文档为最新;ISMS 控制已验证;威胁模型已审查并更新;访问控制已审查。
ISMS 对齐
策略领域与标准映射:SAST 对应 ISO 27001 A.8.28、A.8.29,NIST CSF PR.IP-12,CIS Controls CIS 16.4;DAST 对应 A.8.29、A.8.33,DE.CM-8,CIS 16.6;依赖扫描对应 A.8.19、A.8.28,ID.SC-2,CIS 16.7;代码签名对应 A.8.24、A.8.26,PR.DS-6,CIS 2.7;安全编码对应 A.8.25、A.8.28,PR.IP-12,CIS 16.1。
限制:该技能面向 PR 审查、CI/CD 配置、依赖管理、代码签名与合规审计,不涉及高层 SDLC 规划、运行时安全监控和架构级安全设计;具体本地与平台配置需在对应仓库和工作流中落实,其他未在本资料中说明的平台或步骤暂未提供。