Stage 2 summary. Applied practice

8 min 6 concepts 6 figures

Stage 2 turns the vocabulary and risk model from Foundations into the work of designing, building and verifying a system that has to hold up under attack. It starts before any code exists, with threat modelling as a design act, then moves through the identity protocols that decide who gets in, the web and API weaknesses that attackers reach for most, the gates that keep a release honest, and the logging that has to exist before any detection is possible. The through-line is that security is a property you design in and then verify, not a scan you run at the end.

A second argument sits underneath the first. There is a difference between an awareness document that tells you what tends to go wrong and a verification standard that tells you how to prove a specific thing is right. You design against the first and you verify against the second, and confusing them is how teams end up with a tidy checklist and an insecure product. Every topic in this stage is anchored to a documented case, so the reader sees the failure mode rather than the abstraction.

The sections follow the stage's teaching order, so you can read straight through to rebuild the stage in your head, or jump to the concept you need. Each section links back to its module for the full treatment.

What you carry out of this stage

  • Run a data-flow-first threat model with STRIDE and set trust boundaries before design decisions are locked in
  • Explain what OAuth 2.0 delegates and what OpenID Connect adds, and validate a token rather than trusting its contents
  • Map a described web defect to the correct OWASP Top 10:2025 category, including a weakness that moved between editions
  • Choose between the Top 10 as an awareness document and ASVS 5.0 as the verification standard for a given assurance question
  • Distinguish SAST, DAST and SCA and place each as a release gate rather than a rubber stamp
  • Say what to log so that an event can become an alert and then an incident, and why logging everything is not detecting everything

The cybersecurity course: four stages around one governing habit

Each stage hands the next one thing: a shared vocabulary, then design judgement, then an operating capability, with the Govern hub tied to all four, making governance something exercised at every stage rather than added once the technical work is done.

The course runs Foundations to Applied practice to Practice and strategy to Exam, each handing the next a capability, with Govern tied to every stage because risk-led decisions are made throughout, not at the end. Source: NIST CSF 2.0.

The cybersecurity course: four stages around one governing habit A central Govern hub (the governing habit; Govern: risk-led decisions at every stage) sits above four stage cards, tied to each by thin dashed lines. Stages, left to right: Stage 1 Foundations (threats and risk, identity, people and privacy); Stage 2 Applied practice (threat modelling, web and API security, release gates); Stage 3 Practice and strategy (operations and resilience, regulation, OT and AI); Stage 4 Exam and certification (revision, mocks, certificate). A progression line beneath carries what each hands on: a shared vocabulary and risk model, design judgement under attack, an operating and governing capability, and a final outward arrow from Exam to evidence of expertise. THE CYBERSECURITY COURSE · FOUR STAGES AROUND ONE GOVERNING HABIT THE GOVERNING HABIT · NIST CSF 2.0 Govern: risk-led decisions Exercised at every stage, not bolted on at the end STAGE 1 Foundations Threats and riskIdentityPeople and privacy STAGE 2 Applied practice Threat modellingWeb and API securityRelease gates STAGE 3 Practice andstrategy Operations, resilienceRegulationOT and AI STAGE 4 Exam andcertification RevisionMocksCertificate a shared vocabularyand a risk modeldesign judgement underattackan operating andgoverning capabilityevidence ofexpertise

Threat modelling is a design act, done on the data flow before the build

Threat modelling asks a simple question early: what can go wrong here, and what are we going to do about it. The reliable way to answer is to draw the system as a data-flow diagram, mark the trust boundaries where data crosses from one level of control to another, and then walk each element with STRIDE, the six-category prompt for spoofing, tampering, repudiation, information disclosure, denial of service and elevation of privilege. Privacy threats get their own lens, LINDDUN, because a system can be secure and still leak by design.

The value is in the timing. A threat found on a whiteboard costs a conversation, while the same threat found in production costs an incident, so the four-step process of decompose, identify threats, mitigate and validate belongs at design time and then repeats whenever the design changes materially. Trust boundaries do most of the analytical work, because they mark exactly the places where an assumption about who is trustworthy stops holding, which is where an attacker aims.

This module is deliberately the foundation for the rest of the stage. The data-flow-first habit reappears in web and API security, where the boundary between the browser and the server, or between one service and another, is precisely where broken access control lives. Getting the habit here means the later categories land as instances of a pattern rather than as a list to memorise.

OAuth delegates access and OpenID Connect proves identity, and tokens are validated not trusted

Enterprise identity runs on a small set of protocols whose jobs are often confused. OAuth 2.0 is an authorisation protocol: it lets a user delegate limited access to a resource without handing over their password, issuing an access token that says what the bearer may do. OpenID Connect is a thin identity layer on top of OAuth that adds an ID token proving who the user is. SAML does a similar identity job in the older enterprise single sign-on world. Mixing them up, treating an access token as proof of identity, is a classic and dangerous error.

A JSON Web Token is only as trustworthy as its validation. A JWT carries claims that anyone can read, so the security comes entirely from checking the signature, the issuer, the audience and the expiry before believing a word of it. A token whose signature is never validated is just a request parameter the client can forge. This is where the adversary-in-the-middle chain from Foundations reconnects: the session token an attacker steals is exactly the artefact these protocols issue, which is why lifetime and binding matter as much as the strength of the original login.

Verifying that an identity implementation is actually correct is a standards question, and ASVS 5.0.0, released in May 2025 at Global AppSec EU Barcelona, gives OAuth, OpenID Connect and token handling their own standalone chapters. Conditional access policies are how the multi-factor tier model from Foundations becomes enforceable inside a real identity provider, tying the requirement to the sensitivity of what is being reached.

The 2025 web risk taxonomy, and why the Top 10 is not a verification standard

The OWASP Top 10 is a periodically refreshed awareness document, and the November 2025 edition kept Broken Access Control at A01, added Supply Chain Failures at A03, and folded server-side request forgery into the access-control story rather than leaving it as a standalone entry. The point of the list is to direct attention, not to certify a product, so a section that maps a described defect to its 2025 category has to account for the fact that a weakness which was 2021-era SSRF is now part of A01.

The anchoring case is MOVEit in 2023, where the Cl0p group exploited CVE-2023-34362 in a widely used file-transfer product and reached the data of organisations far beyond the direct customer, including through the Zellis payroll route that touched the BBC and British Airways in the UK. Capital One's earlier SSRF breach, which drew an 80 million dollar penalty from the Office of the Comptroller of the Currency, shows the same access-control failure from the cloud-metadata angle.

The design-versus-verify distinction lands hardest here. You design against the Top 10 and you verify against the OWASP Application Security Verification Standard, and the two are not interchangeable. ASVS gives you testable requirements at a chosen assurance level, whereas the Top 10 gives you the ten things most likely to hurt. Because ASVS renumbered its requirement identifiers between the 4.x and 5.0 lines, any quoted control text has to be re-checked against the current standard rather than relabelled.

API security is mostly authorisation, and BOLA is the defining failure

APIs fail differently from web pages, and the OWASP API Security Top 10, whose 2023 edition remains current, makes clear that the dominant problem is authorisation rather than authentication. Broken Object Level Authorisation, listed as API1, is the defining case: an authenticated user asks for an object that is not theirs, by changing an identifier in the request, and the server hands it over because it checked who the caller was but never checked whether they were allowed this particular record.

The fix is unglamorous and consistent: every request for an object must verify that the authenticated principal owns or is permitted that specific object, on the server, on every call, with no reliance on the client to hide the identifier. This is broken object-level authorisation, and it is distinct from broken function-level authorisation, where a user reaches an operation meant for a higher privilege such as an admin-only endpoint. Naming the two apart matters, because they need different checks.

Around the individual checks sits the operational layer. Rate limiting and an API gateway defend availability and contain abuse, giving a single place to enforce authentication, throttle callers and observe traffic. But a gateway that authenticates well and authorises poorly still leaks every record, which is why the object-level check cannot be delegated to the perimeter and has to live with the business logic that knows what ownership means.

Release gates test what a build claims, and a scanner is not an assurance

Shift-left security moves testing earlier so that defects are caught while they are cheap, and it does so through a set of automated gates in the delivery pipeline. Three techniques cover most of the ground and each sees something the others cannot. Static application security testing reads the source without running it and finds insecure patterns. Dynamic testing exercises the running application and finds what only appears at runtime. Software composition analysis inventories third-party dependencies and flags known-vulnerable versions.

A software bill of materials records exactly which components and versions a build contains, which is what makes composition analysis and later incident response possible: when the next Log4Shell lands, the first question is which of our systems even contains the component, and an SBOM answers it in minutes rather than weeks. The forward pointer is to Stage 3, where SLSA and code signing add provenance so that the bill of materials can be trusted rather than merely produced.

The trap the whole module guards against is treating a green scan as an assurance. A scanner reports what it recognised, not that the system is secure, so its output is evidence to weigh rather than a verdict to accept. A gate that passes because nobody read the findings is theatre, and the discipline is to make the pipeline fail on the findings that matter and to keep the signal high enough that the failures are believed.

Logging is the ground detection stands on, and more logs is not more detection

Detection cannot see what was never recorded, so logging is the precondition for everything in security operations. The discipline starts with a security event taxonomy, deciding what is worth logging in the first place: authentication successes and failures, privilege changes, access to sensitive data, configuration changes and network flows. Structured logging, where each event is a consistent set of fields rather than free text, is what lets a machine reason over the record instead of a human grepping through it.

A security information and event management system collects those logs centrally and runs detection rules across them, and Sigma is the vendor-neutral format for writing those rules so that a detection can move between platforms. The reason to care about structure and standards is that a rule is only as good as the fields it can rely on being present and consistently named.

The central operational failure is alert fatigue, and it is why more rules is not more detection. A SIEM tuned to alert on everything drowns the analyst who has to triage it, so the real signals are missed inside the noise. Good detection is therefore an exercise in restraint and tuning, not volume, and it feeds a distinction the reader must hold: an event is anything logged, an alert is an event a rule thought worth surfacing, and an incident is an alert a human confirmed as real. Stage 3 turns single rules into a detection-as-code lifecycle.

The traps this stage warns against

  • Treating the OWASP Top 10 as a checklist that, once ticked, means the application is secure.

    Instead: The Top 10 is an awareness document that directs attention. Design against it, but verify against ASVS 5.0, which gives testable requirements at a chosen assurance level.

  • Trusting the claims inside a JSON Web Token because the token is present.

    Instead: A JWT's claims are readable by anyone. Validate the signature, issuer, audience and expiry on every request; an unvalidated token is a forgeable request parameter.

  • Reading a clean SAST, DAST or SCA report as an assurance that the system is secure.

    Instead: A scanner reports what it recognised, not that the product is safe. Treat its output as evidence to weigh, make the pipeline fail on the findings that matter, and keep the signal high enough to be believed.

  • Logging everything on the assumption that more data means more detection.

    Instead: Volume produces alert fatigue and buries the real signal. Decide a security event taxonomy, log it in a structured form, and tune rules for signal rather than coverage.

Core distinctions

  • Authentication proves who a caller is; authorisation decides what that caller may do, and at the API layer the dominant failure is authorisation, not authentication
  • OAuth 2.0 delegates limited access with an access token; OpenID Connect adds an ID token that proves identity, so an access token is not evidence of who the user is
  • SAST reads source without running it, DAST exercises the running application, and SCA inventories third-party dependencies for known-vulnerable versions
  • The OWASP Top 10 is an awareness document you design against; ASVS is a verification standard you test against, and the two are not interchangeable
  • An event is anything logged, an alert is an event a rule surfaced, and an incident is an alert a human confirmed, so most events never become incidents
  • Broken object-level authorisation lets a user reach another user's record by changing an identifier; broken function-level authorisation lets a user reach an operation above their privilege

That is Stage 2 in one place. Threat modelling before the build, identity that delegates access and proves who is asking, the 2025 web and API weaknesses and the standard that verifies against them, release gates that stay honest, and the logging that any detection depends on. The applied scenario practice now puts those design and verification judgements under pressure with realistic situations, so the common mistakes get caught before you carry design judgement under attack into Stage 3.

Sources and further reading