Software Securityhome
Fix a findingSearch
Secure SDLC

Find the gaps in your secure SDLC

One question for each of the 34 practices: is it in place? For one product or team it takes about ten minutes. Each practice links to what it is and how to start.

Your answers stay in this browser and are never sent anywhere. Export them to share with your team.

1. Planning

What does this change handle, and what must it never allow?

  1. Security requirements

    Done when: Each requirement names the test or review that proves it, and the Definition of Done says which changes need a security review.

  2. Abuse cases

    Done when: Abuse cases sit in the backlog with the control and the test that answer each one, or a recorded risk acceptance.

  3. Data classification

    Done when: The ticket names the data classes, their retention and the obligations in scope.

2. Design

Where are the trust boundaries, and what can go wrong at each?

  1. Threat modeling

    Done when: Each threat has an owner and a decision: mitigate with a named control and test, accept with an expiry date, or change the design.

  2. Secure design patterns

    Done when: The design names the pattern used at each boundary, and any departure is a recorded decision.

  3. Security design review

    Done when: Review findings are tracked like bugs and resolved before the affected part is built.

3. Development

Does the code keep untrusted input, secrets and privileges where they belong, and can the pipeline that builds it be trusted?

  1. Secure coding

    Done when: Each weakness class the change touches has a test that fails on the vulnerable pattern.

  2. Secrets out of code

    Done when: No secret is in the repository or its history, and a leaked one can be rotated without changing code.

  3. Dependency selection

    Done when: New dependencies are reviewed in the pull request, and the lockfile pins every one.

  4. Security code review

    Done when: Branch rules require an approving review from someone other than the author before merge.

  5. AI coding assistants

    Done when: Generated code goes through the same review and checks, and agents run with scoped permissions.

  6. CI security checks

    Done when: The blocking criteria are written down, findings are triaged within an agreed time, and exceptions expire.

  7. Pipeline hardening

    Done when: Workflow permissions are read-only by default, and release jobs cannot be triggered from forks.

4. Testing

Does the running software resist what the threat model predicted?

  1. Automated security tests

    Done when: Security tests run in CI with the other tests and fail the build when a control regresses.

  2. SAST and DAST

    Done when: Confirmed findings have a reproducing test, and suppressed false positives have a recorded reason.

  3. Fuzzing

    Done when: Fuzzing runs on a schedule, and each crash it finds becomes a test.

  4. ASVS verification

    Done when: Every requirement in scope has evidence another engineer can repeat.

  5. Penetration testing

    Done when: Each test has a written scope, and its findings are fixed or accepted with an owner.

5. Release

Is what reaches production what you built, configured safely?

  1. Artifact signing

    Done when: The deploy step rejects unsigned artifacts and artifacts signed by an unexpected identity.

  2. SBOM and provenance

    Done when: Every release has an SBOM and verifiable provenance that consumers can check.

  3. Secure defaults

    Done when: A pre-release check of the deployed system confirms the headers, error pages and exposed paths, and a failure blocks the release.

  4. IaC and containers

    Done when: Policy checks run on IaC and manifests in CI, and the cluster rejects workloads that break them.

  5. Runtime secrets

    Done when: Each workload can read only its own secrets, and they rotate without a code change.

  6. Staged rollout

    Done when: Rollback has been exercised, and a bad release can be stopped before it reaches everyone.

6. Maintenance

Will you notice an attack, and can you fix a vulnerability quickly?

  1. Security logging

    Done when: Alerts exist for the events the threat model cares about, and the logs have been used in an exercise.

  2. Vulnerability intake

    Done when: Reports and component advisories reach a named owner within days, and a security.txt file on every public host says where to report.

  3. Risk-based prioritization

    Done when: Each confirmed finding has an owner and a due date from a written policy, and overdue findings are visible.

  4. Dependency patching

    Done when: Each dependency finding has a recorded decision with evidence, and known-exploited ones are fixed first.

  5. Advisories and incidents

    Done when: The incident plan has a named owner and has been exercised, and advisories go out in a standard, machine-readable format.

  6. Root cause analysis

    Done when: Each significant vulnerability has a recorded root cause, and the changes it calls for are owned backlog items for the earlier phases.

Security program: around every phase

Who owns security, and how do you know the practices are working?

  1. Owners and champions

    Done when: Every product, finding and exception has a named owner, and each team's champion has protected time and takes part in design reviews.

  2. Role-based training

    Done when: Each team's training topics come from the findings it actually gets, and its repeat findings are compared before and after.

  3. Exceptions and metrics

    Done when: Metrics are reviewed on a set schedule, and every open exception has a risk owner and an expiry date.

  4. SSDF and SAMM mapping

    Done when: Each SSDF practice or SAMM activity you claim links to current evidence, and each gap has an owner and a date.

Find your next answer

Type to search. Search runs in your browser.

Searches run in your browser, but the host can infer them from the index files they load. The address shows your search so you can bookmark or share it.