| name | secure-sdlc-checklist |
| description | Phase-by-phase secure software development lifecycle (SSDLC) checklist for org-owned products: requirements, design, implementation, verification, release, and operations. Use when secure SDLC, 安全开发生命周期, SSDLC, security release gate, security requirements, or embedding security into the delivery pipeline without turning the work into pure exploit hunting.
|
Secure SDLC Checklist
Run a security-aware delivery lifecycle for systems your org owns or is
contracted to build. This skill is process and gate methodology — which
controls belong in which phase, who owns them, and what “done” looks like —
not a vulnerability-class exploit playbook.
Scope And Authorization
- In scope: Org products, platforms, services, and features under change
control; internal SDLC policy; authorized vendor/assurance reviews of your
process maturity.
- Out of scope: Using this checklist to justify unauthorized testing of
third-party systems; replacing a named bug-bounty or pentest engagement with
“we have SDLC docs.”
- Prefer documented policy and release gates over ad-hoc heroics. If threat
models or asset inventory are missing, hand design-time work to
threat-modeling-stride and surface inventory to recon-and-methodology
only when authorized.
- Treat process artifacts as sensitive when they list production hosts, admin
paths, or residual risk acceptances. Redact credentials, tokens, PII, and
customer data from checklists and tickets.
- Org security policy, compliance frameworks (e.g., internal SOC2 control map,
PCI scope), and existing stage gates outrank generic examples here.
Use When
- Standing up or auditing a secure SDLC for a product team
- Chinese/English teams: 安全开发生命周期, SSDLC, 安全门禁, 发布安全检查
- Defining phase gates (requirements → design → code → test → release → ops)
- Mapping security work to sprint/release rituals without inventing a second process
- Preparing for audit questions: “where is security in the lifecycle?”
- Aligning AppSec, engineering, and product on ownership per phase
Do not use as primary for:
| Need | Skill instead |
|---|
| STRIDE workshop / DFD threat register | threat-modeling-stride |
| Running/triaging SAST or DAST scanners | sast-dast-tooling-usage |
| Implementation reliability/security/tests baseline | code-quality-standards |
| Unit test design / AAA / naming | unit-testing-style |
| Authorized external bounty process | bug-bounty-methodology |
| Secrets vault/rotation hygiene only | secrets-management-hygiene |
| SBOM / dependency provenance only | sbom-and-supply-chain |
| CI stage wiring only | ci-cd-pipeline-patterns |
Core Idea
Secure SDLC = shift-left design risk + in-pipeline verification + release
accountability + feedback from ops.
Each phase has entry criteria, activities, exit criteria, and a
named owner. Scanner findings and pen tests feed the loop; they do not
replace design-time controls or secure coding standards.
Typical phase map (adapt names to org: “Definition of Ready,” “Definition of
Done,” CAB, etc.):
| Phase | Security focus | Primary artifacts |
|---|
| 0. Governance | Policy, roles, risk appetite | RACI, severity SLAs, tool allowlist |
| 1. Requirements | Abuse cases, data class, compliance | Security reqs, acceptance criteria |
| 2. Design | Trust boundaries, STRIDE | Threat model, ADRs, control design |
| 3. Implementation | Secure coding, secrets, deps | Code, reviews, unit tests |
| 4. Verification | SAST/DAST/SCA, tests, review | Scan reports, test evidence |
| 5. Release | Gate decisions, SBOM, signing | Release checklist, attestations |
| 6. Operations | Patch, IR, monitoring, backlog | Incidents, metrics, model updates |
Workflow
0. Establish governance (once per product / org unit)
- Name security owners: eng lead, product, AppSec liaison (or shared duty).
- Publish severity definitions and fix SLAs (Critical/High/Med/Low) aligned
with org risk matrix — do not invent a second scale if one exists.
- Define tooling allowlist: SAST, SCA, secret scan, DAST, image scan
(
sast-dast-tooling-usage, sbom-and-supply-chain, secrets-management-hygiene).
- Define gate strength by change type: hotfix vs major feature vs new
public surface vs regulated data.
- Record exceptions process: who may accept residual risk, max duration,
review date required.
- Link delivery tools: tickets → threat ids / finding ids → release notes.
1. Requirements phase
Entry: problem statement, rough users, data categories known or draft.
| Activity | Concrete technique |
|---|
| Data classification | Tag PII, payment, credentials, health, exportable bulk data |
| Security requirements | Write testable reqs: “admin export requires MFA + audit event with actor id” |
| Abuse / misuse cases | For each user story: “malicious user does X with Y privilege” |
| AuthN/Z expectations | Roles, tenants, service-to-service trust assumptions |
| Compliance hooks | Map to org controls (logging, retention, encryption, residency) |
| Non-goals | Explicitly out-of-scope features and third-party trust |
Exit criteria:
2. Design phase
Entry: requirements exit met; architecture sketch exists.
| Activity | Concrete technique |
|---|
| Trust boundaries | Internet ↔ edge ↔ app ↔ data; admin plane; tenant isolation |
| Threat model | Run threat-modeling-stride for new boundaries, data classes, or admin surfaces |
| Control selection | AuthZ server-side, crypto, rate limits, audit, input validation strategy |
| Secrets design | No secrets in client; vault/OIDC injection (secrets-management-hygiene) |
| Dependency posture | New package/registry risk; pin/lock policy (sbom-and-supply-chain) |
| Abuse-resistant APIs | IDOR-resistant object access, least privilege defaults |
Exit criteria:
3. Implementation phase
Entry: design exit for the change; branch/PR workflow active.
| Activity | Concrete technique |
|---|
| Secure coding baseline | Apply code-quality-standards on every production change |
| Input/output handling | Validate at trust boundaries; encode at sinks; parameterized queries |
| AuthZ in depth | Server-side checks per object/action; never client-only role flags |
| Secrets | Load from platform store; .env.example placeholders only |
| Unit tests for security-relevant behavior | unit-testing-style: authz deny paths, parsing edges, crypto wrappers |
| Peer review | Checklist includes authZ, injection surfaces, secret leak, logging redaction |
| Pre-commit / IDE | Format, lint, optional secret pre-scan |
Exit criteria:
4. Verification phase
Entry: code merged or release candidate built; CI green on functional tests.
| Activity | Concrete technique |
|---|
| SAST + SCA + secrets + image | Run and triage via sast-dast-tooling-usage + sbom-and-supply-chain |
| DAST / authenticated scan | Staging or lab only; scoped targets; rate limits |
| Manual / focused tests | Authz matrix, IDOR dual-account, injection on new params |
| Security regression | Prior High/Critical still fixed; new abuse cases from design |
| External program (if any) | Scope-bound bounty or pentest handoff → bug-bounty-methodology / SOW |
Exit criteria:
5. Release phase
Entry: verification exit; deploy artifact identified by digest/SHA.
| Activity | Concrete technique |
|---|
| Release checklist | Auth, crypto, logging, rollback, feature flags, config flags |
| Provenance | Image digest, SBOM attached, signatures if policy requires |
| Config & secrets | Prod secrets from env store; no debug flags; least privilege IAM |
| Change record | Link threat model version, open exceptions, scanner baseline |
| Comms | Security-relevant user/admin notes when behavior changes |
| Rollback | Documented; kill switch / flag for risky features (feature-flag-patterns) |
Exit criteria:
6. Operations and feedback
Entry: change live (or pilot cohort).
| Activity | Concrete technique |
|---|
| Monitor | Auth failures, 4xx/5xx spikes, WAF signals, dependency alerts |
| Patch cadence | OS/base image/lib CVEs within SLA; emergency path for KEV-class |
| Incident response | Contain → rotate secrets → fix → postmortem → SDLC update |
| Backlog hygiene | Security debt aged with same visibility as product debt |
| Model refresh | Reopen threat-modeling-stride on new trust boundary or data class |
| Metrics | MTTR for Critical, % PRs with security tests, scanner fix lag, exception count |
Exit / continuous:
Phase Gate Summary (printable)
| Gate | Must be true before advancing |
|---|
| Req → Design | Security acceptance criteria + data class on risky stories |
| Design → Build | Threat model (or justified skip) + control decisions recorded |
| Build → Verify | Secure review + unit/deny-path tests + no secrets in VCS |
| Verify → Release | Severity policy met; findings owned; evidence by SHA |
| Release → Ops | Digest deploy, secrets/config correct, rollback known |
| Ops → Next | Incidents and scanner debt feed requirements/design |
Justified skip: document who skipped which gate, why (e.g., pure docs change),
and automatic re-entry triggers.
Org Context Patterns
| Org shape | Adaptation |
|---|
| Startup / small team | Collapse gates into PR template + staging DAST weekly; still keep threat notes for auth/PII |
| Regulated / enterprise | Formal RACI, CAB for High residual risk, mandatory SBOM and audit trail |
| Platform / multi-tenant | Extra design gate: tenant isolation and admin plane STRIDE every major API |
| Mobile + API | Separate client and API checklists; never put confidential secrets in clients |
| ML/LLM product | Add ai-ml-security + llm-prompt-injection under design/verify for model and tool surfaces |
Anti-Patterns
- “Security = one annual pentest” with no design or CI gates
- Scanner greenwash: fail-open
continue-on-error on Critical SAST/SCA
- Threat model after ship with no link to the change that needed it
- Infinite exception renewals without owners or expiry
- Treating bounty reports as the only requirements input
- Security checklist that is pure tool names with no exit criteria or RACI
- Blocking every Low informational finding equally with Critical (noise → bypass)
Routing
| Situation | Primary | Helper |
|---|
| Secure SDLC phases, gates, RACI, 安全开发生命周期 | This skill | — |
| Design-time STRIDE / DFD / 威胁建模 | threat-modeling-stride | this skill for phase placement |
| SAST/DAST when/how/triage | sast-dast-tooling-usage | this skill for verify/release gates |
| Secure implementation and code review baseline | code-quality-standards | always on code changes |
| Unit test design for security-relevant behavior | unit-testing-style | code-quality-standards |
| Authorized bug bounty / external hunter process | bug-bounty-methodology | this skill for intake into backlog |
| Secrets lifecycle | secrets-management-hygiene | this skill |
| SBOM / SCA / provenance | sbom-and-supply-chain | this skill |
| CI job wiring, OIDC, artifacts | ci-cd-pipeline-patterns | this + SAST/DAST skill for scan jobs |
| Estate recon before modeling (authorized) | recon-and-methodology | threat-modeling-stride |
Routing notes (required helpers)
code-quality-standards: baseline for every implementation and fix flowing from SDLC gates.
threat-modeling-stride: design-phase primary when boundaries, data class, or admin surface change.
unit-testing-style: shape deny-path and invariant tests in implementation/verification.
bug-bounty-methodology: when external authorized hunters are part of verify/ops feedback — not a substitute for internal gates.
sast-dast-tooling-usage: own scanner operation and triage; this skill only places them on the timeline.
Checklist
Governance
Requirements
Design
Implementation
Verification
Release
Operations
Hygiene
Rules
- Process evidence and owned gates beat tool logos on a slide.
- Every Critical/High finding or design threat has an owner and a due/review date.
- Justified skips are written decisions — silence is not a skip.
- Implementation always carries
code-quality-standards; scanners never replace review.
- External bounty/pentest is an input to the lifecycle, not the lifecycle itself.
- Reopen design controls when trust boundaries or data classes change.
- Authorized org systems only; methodology is defensive and assurance-oriented.
Note
This skill is the lifecycle orchestrator for secure delivery. Hand STRIDE
workshops to threat-modeling-stride, scanner operation to
sast-dast-tooling-usage, code quality to code-quality-standards, unit design
to unit-testing-style, and external programs to bug-bounty-methodology.
Keep phase exit criteria and RACI as the SSOT for “are we ready to ship?”