Software Securityhome
Fix a findingSearch
Phase 2 · Design

Security design review

A security design review checks, before anything is built, that a design meets its security requirements and answers the threats found for it. A qualified reviewer who did not create the design walks through it with the designers and records findings that must be resolved.

Some flaws exist only in how the parts fit together. An API that accepts the tenant named in the request, a worker that trusts the tenant in its job and a download that checks only who created the job can each look correct on its own, yet together they hand one tenant's data to another. A reviewer reading the whole flow before code exists catches this while the fix is still a change to a diagram.

Who
An AppSec engineer, an architect or a security champion from another team, with the designers present
When
After the threat model and before the affected part is built; again if the design changes materially
How often
For every design that meets the review triggers, such as a new trust boundary, auth changes or sensitive data
You end up with
A recorded decision (accepted, accepted with conditions or blocked) and findings tracked as issues with owners

Do this

  1. Define which designs need review

    Write the triggers down: a new service or external integration, a new trust boundary, changes to authentication, authorization or tenant rules, new sensitive data, money movement, admin or support paths, and departures from the standard patterns (Secure design patterns). Smaller changes can rely on the team's own threat model.

  2. Collect the review packet

    Ask the designers for the design document, the data-flow diagram with trust boundaries, the threat model and its responses (Threat modeling), the security requirements, the data classes and any departures from standard patterns. Without a diagram, the reviewer cannot see who chooses each tenant or object ID.

  3. Choose a reviewer who did not design it

    NIST SSDF task PW.2.1 calls for a qualified person who was not involved with the design, automated processes in the toolchain, or both. An AppSec engineer, an architect or a security champion from another team can do it; keep the designers in the room to answer questions.

  4. Check the design against the requirements

    For each security requirement, find where the design meets it, interface by interface. Check the general mechanisms OWASP SAMM lists for architecture validation: authentication, authorization, user and rights management, secure communication, data protection, key management and logging. For each identifier, ask who chooses it and what verifies it.

  5. Check each threat has a design-level answer

    Walk the threat list and name the design feature that counters each threat, as SAMM's Architecture Assessment practice describes. Ask whether the model missed anything: background jobs, admin tools, caches and partner callbacks are common gaps. Check failure handling: what happens when a dependency times out or a permission check throws an error.

  6. Record the findings and a decision

    File each finding as an issue with an owner and the part of the design it blocks, and decide: accepted, accepted with conditions, or blocked until fixed. If a requirement cannot be met, change the design or the risk response, as SSDF PW.2.1 suggests, and record any accepted risk with an owner and a date to revisit.

  7. Feed recurring findings back

    When the same finding appears in several reviews, fix its cause: update the pattern catalog, the reference architecture or the requirement baseline (Security requirements), so the next design starts from the corrected version. OWASP SAMM describes this at its highest Architecture Assessment level.

Done when

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

Mark it in the gap check

Common mistakes

  • Reviewing after the code is written. Design findings then become rework, or risks accepted because the release date is close.
  • Letting the designer review their own design. Their assumptions are the blind spots the review exists to catch.
  • Reviewing slides instead of the data flow. Without boundaries and identity sources, nobody can see who chooses each tenant or object ID.
  • Leaving findings in meeting notes. Untracked findings are not fixed before the affected part is built, which is the point of the review.
  • Reviewing only the main path. Support access, tenant switching, retries, queued jobs and error handling are where designs often break.

Threat model, design review or code review?

Three checks at different moments. Each one answers a question the others cannot.

Threat model, design review or code review?: table
QuestionThreat modelingSecurity design reviewSecurity code review
WhoThe team building the changeA qualified reviewer who did not design itA reviewer other than the author
WhenDuring designAfter the threat model, before buildingOn each pull request
AsksWhat can go wrong?Does the design meet the requirements and answer the threats?Does this code implement the design safely?
OutputThreats with responses, owners and testsFindings and a decisionReview comments and fixes
NIST SSDF 1.1PW.1PW.2PW.7

Tools and guides

Standards

NIST SSDF 1.1
PW.2 Review the Software Design to Verify Compliance with Security Requirements and Risk Information

Sources

  1. NIST SP 800-218: Secure Software Development Framework (SSDF) Version 1.1. February 2022.
  2. OWASP SAMM: Architecture Assessment
  3. OWASP SAMM: Architecture Assessment, stream A (Architecture Validation)
  4. OWASP SAMM: Architecture Assessment, stream B (Architecture Mitigation)
  5. OWASP Threat Modeling Cheat Sheet

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.