Threat Modeling and Attack Surface Analysis Questions
Systematically identifying how a system can be attacked and where its exposure lies. Covers structured methodologies (STRIDE, PASTA, DREAD, OCTAVE, attack trees), enumerating and reducing attack surface, mapping trust boundaries and data flows via DFDs, profiling likely threat actors, and prioritizing identified threats by likelihood and impact during design. Includes applying this methodology to specific architectural substrates (cloud-native and serverless, microservices, ML/AI systems, IoT, CI/CD pipelines, cryptographic subsystems) and operationalizing it as a recurring program (SDLC integration, governance, tooling, KPIs). The proactive 'think like an attacker before you build' discipline: distinct from live penetration testing (the adversarial validation of a built system), from runtime detection/monitoring (recognizing an attack already in progress), and from implementing the resulting security controls (a separate design-and-build discipline).
Explain how you would incorporate the STRIDE framework into threat modeling for a cryptographic subsystem. Provide concrete mappings from each STRIDE category (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege) to cryptographic concerns and give example mitigations for each mapping.
Sample Answer
Direct answer
STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) maps cleanly onto a cryptographic subsystem, a service handling key issuance, encryption, decryption, and signing, but each category takes on a crypto-specific meaning distinct from its usual application-layer reading. Spoofing becomes impersonating a caller to a crypto operation; Tampering becomes undetected modification of ciphertext or signed data; Repudiation becomes the absence of provable authorship for a signed action; Information Disclosure becomes key or plaintext leakage, often through a side channel rather than a direct read; Denial of Service becomes resource exhaustion through expensive cryptographic operations specifically; and Elevation of Privilege becomes a caller authorized for one crypto operation gaining the ability to perform a more sensitive one.
Structured elaboration
STRIDE mapped to a cryptographic subsystem, with an example mitigation for each:
| STRIDE category | Cryptographic concern | Example mitigation |
|---|---|---|
| Spoofing | An attacker impersonates a legitimate caller (a service or user) to invoke crypto operations, most dangerously signing or decrypting, as if they were an authorized identity | Mutual authentication between every caller and the crypto subsystem (mutual Transport Layer Security, mTLS, or signed, short-lived service tokens), so the subsystem never accepts an operation request without cryptographically verifying who is asking |
| Tampering | Ciphertext, a signed payload, or the subsystem's own configuration (which algorithm or key to use) is modified in transit or at rest without detection | Authenticated encryption (an algorithm like AES in Galois/Counter Mode, which provides confidentiality and integrity together) so any modification to ciphertext is detected on decryption, and integrity-protecting the subsystem's own policy and configuration data with its own signature |
| Repudiation | A party denies having authorized or performed a signing operation, and there is no way to prove otherwise | Use asymmetric digital signatures rather than symmetric message authentication codes (MACs) for anything requiring non-repudiation, since a MAC's verifier holds the same key used to generate it and could in principle have generated it themselves, while a signature's private key is held only by the signer; pair this with a tamper-evident audit log recording every signing operation tied to the calling identity and a timestamp |
| Information Disclosure | Key material or plaintext leaks, often not through a direct read but through a side channel: timing differences, verbose error messages that distinguish failure types, or a padding-oracle-style response pattern | Constant-time cryptographic implementations for anything comparing secret values, and generic, non-informative error responses (never distinguishing "invalid padding" from "invalid authentication tag" in a decryption failure, which is exactly the distinction a padding-oracle attack exploits) |
| Denial of Service | Asymmetric cryptographic operations (key exchange, signature verification, decryption with large keys) are computationally expensive relative to typical application logic, so an attacker can exhaust the subsystem's resources by flooding it with expensive operation requests | Per-caller rate limiting and resource quotas specifically on expensive operation types, plus a cheap pre-validation step (checking request shape and authentication first) before committing to the costly cryptographic computation |
| Elevation of Privilege | A caller authorized for one narrow operation (for example, verify a signature) gains the ability to perform a more sensitive one (sign with an arbitrary key, or export key material), usually because the subsystem's authorization model is coarse (a single "has access to crypto service" flag) rather than scoped per operation and per key | Fine-grained, per-operation and per-key authorization enforced inside the subsystem's own trust boundary (not only at an outer API gateway, which a compromised internal caller could bypass), so a caller scoped to "encrypt with key A" cannot also sign, decrypt, or touch key B |
Worked example
Trace a concrete Information Disclosure attack to show why the mitigation in that row matters specifically, and why a mitigation that looks reasonable at first glance can still fail: a decryption endpoint that returns a distinguishable error, "padding error" versus "authentication error," when given manipulated ciphertext. This is the mechanism behind Bleichenbacher-style padding oracle attacks against RSA PKCS#1 v1.5 padding and similar attacks against cipher-block-chaining (CBC) mode encryption: an attacker who cannot decrypt a target ciphertext directly can instead submit many modified variants of it and observe which error message comes back for each. Because the padding-validity error is distinguishable from other failure types, the attacker learns one bit (or a few bits) of information about the underlying plaintext or key material per query, and repeating this thousands of times across carefully chosen modified ciphertexts eventually recovers the plaintext or breaks the key, entirely through the error-message side channel, without ever needing the decryption key directly. The mitigation is not simply "return an error," since any error response at all still requires care: it is returning the same generic error, in the same amount of time (to avoid a timing side channel replacing the message-content side channel), for every failure category, so the attacker's oracle query returns no distinguishing signal regardless of which specific way the decryption failed. This is also a case where authenticated encryption (this table's Tampering mitigation) directly helps the Information Disclosure threat too: an AEAD scheme that checks the authentication tag before ever touching the padding, and fails uniformly either way, removes the distinguishable oracle that a legacy encrypt-then-pad-check design creates.
Trade-offs and pitfalls
The most common mistake is mapping STRIDE to a cryptographic subsystem using application-layer intuitions unchanged, for example treating Information Disclosure as only "can an attacker read the database," when in a crypto subsystem the more dangerous disclosure paths are side channels (timing, error-message shape, power consumption on constrained hardware) that never touch a database at all. A second pitfall is addressing Repudiation with a MAC because it is cheaper and faster than an asymmetric signature, without noticing that a MAC structurally cannot provide non-repudiation, since the party who can verify it can also forge it; the two mechanisms solve different problems and are not interchangeable just because both are called "authentication" in casual usage. A third is stopping at "we return an error for bad requests" as if that alone satisfies the Information Disclosure mitigation, when the worked example above shows that which error, and how consistently and quickly it is returned, is exactly what a padding-oracle style attack exploits; a technically-present error-handling path can still leak everything an attacker needs if it distinguishes failure types. Finally, Elevation of Privilege inside a crypto subsystem is easy to under-scope because the subsystem is often treated as a single trusted unit from the outside ("it's the crypto service, it's secure"), when the more relevant question is whether every caller of that trusted unit is itself constrained to only the specific keys and operations it actually needs.
You are designing threat modeling for a small web service that stores user secrets (API keys and encrypted documents). Describe the step-by-step threat-modeling process you would apply, including assets, actors, entry points, trust boundaries, potential attack scenarios, and practical mitigations for each major risk.
Sample Answer
Direct answer
Threat modeling a small web service that stores user secrets (API keys and encrypted documents) follows a repeatable sequence: list what actually needs protecting, list who interacts with the system, map every place an outsider can reach it, mark where trust level changes as data moves through the system, walk each entry point for a realistic attack scenario, and propose a specific mitigation for each one. The step that most often gets rushed on a small service like this is trust boundaries, because it is tempting to treat "our backend" as one uniform trusted zone, when in practice the boundary between "authenticated as some user" and "authorized to see this specific user's secrets" is exactly where the highest-impact bugs tend to live.
Structured elaboration
1. Assets. What actually needs protecting, ranked by what a compromise would cost: user API keys (secrets that, if leaked, let an attacker impersonate the user to whatever third-party service the key belongs to), the encrypted documents and the keys used to encrypt them, user session tokens and credentials, and the service's own master key or key-management-service (KMS) key used to protect everything else.
2. Actors. Who legitimately or illegitimately interacts with the system: the authenticated end user (owns their own secrets, should never reach anyone else's), an external, unauthenticated attacker attempting to reach the service directly, and the service's own operators or administrators, who hold elevated access and are therefore both a legitimate actor and a potential insider-risk actor.
3. Entry points. Every place an outsider can touch the system: the login/authentication endpoint, the application programming interface (API) endpoints that create, retrieve, or delete a user's stored API keys, the document upload and download endpoints, and any administrative panel used for support or operations.
4. Trust boundaries. Where the level of trust actually changes, not merely where a network hop happens: the boundary between the public internet and the authentication layer (nothing is trusted yet); the boundary between "successfully authenticated" and "authorized for this specific resource," which is the boundary a small service most often gets wrong, since being logged in proves who you are but says nothing about which records you should be allowed to touch; and the boundary between the application backend and the KMS or database holding the actual secret material, which should require its own scoped credential rather than inheriting the application's general database access.
5. Attack scenarios, one plausible path per major risk:
- Credential stuffing against the login endpoint, using credentials leaked from an unrelated breach, to gain a legitimate session and then reach that user's own stored secrets legitimately (from the system's point of view).
- Broken authorization on the key-retrieval endpoint (an insecure direct object reference, where the endpoint checks that a request is authenticated but not that the requested key actually belongs to the requesting user), letting an authenticated attacker enumerate and read other users' API keys just by changing an identifier in the request.
- Secrets leaking into logs or error messages, where a stack trace or debug log inadvertently includes a plaintext API key or document content during a failure, creating a copy of the secret outside the system's actual protection boundary.
- Admin panel compromise, where an attacker who gains access to an operator account (phishing, credential reuse) inherits whatever broad access that panel grants, potentially including the ability to read secrets directly rather than only manage accounts.
6. Mitigations, mapped to the scenarios above:
- Rate limiting and multi-factor authentication (MFA) on the login endpoint blunts credential stuffing even when the attacker holds valid, leaked credentials.
- Explicit per-resource authorization checks on every key and document endpoint (confirming the authenticated user actually owns the specific record requested, not only that they are logged in) closes the broken-authorization path; this needs to be enforced consistently for every operation, not only the ones that seemed obviously sensitive during initial development.
- Structured logging with automatic secret redaction, and treating any logging or error-handling code path that touches a secret value as security-sensitive code requiring its own review, prevents the accidental-leak path.
- Scoping admin access narrowly (support staff should not, by default, be able to view raw secret values, only metadata needed for support) and requiring a separate, logged, deliberate action for the rare case where raw access is genuinely needed, reduces both the insider-risk surface and the value of a single compromised admin account.
Worked example
Trace the broken-authorization scenario concretely, since it is the one most specific to this exact system and the easiest to introduce accidentally. The API key retrieval endpoint is implemented as GET /api/keys/{keyId}, and the handler checks that the request carries a valid session token before returning the key, but does not check that keyId belongs to the session's user, an easy omission when the same handler pattern is copied from an earlier endpoint that happened not to need per-owner scoping. An authenticated attacker, who only needs their own valid, low-privilege account to reach the endpoint at all, can then increment or guess keyId values across other users' records and retrieve API keys that were never theirs, entirely within what looks like a normal authenticated request from the system's perspective, since authentication succeeded correctly every time. The mitigation is not "add more authentication," since the failure was never in authentication, it was in authorization: the fix is adding an explicit ownership check, confirming the key referenced by keyId belongs to the authenticated session's user before returning it, and applying that same check pattern to every other resource-scoped endpoint (documents, any future secret type) rather than fixing this one endpoint in isolation.
Trade-offs and pitfalls
The most common mistake on a service like this is conflating authentication with authorization, treating "the request has a valid session" as equivalent to "the request should see this specific data," which is exactly the gap the worked example exploits; the two checks need to be separate, deliberate steps on every resource-scoped endpoint. A second pitfall is under-scoping trust boundaries to only the perimeter (public internet versus backend) and skipping the internal one between "authenticated" and "authorized," which is where this class of bug actually lives on most small services, not at the network edge. A third, easy to miss on a small team, is treating logging and error handling as separate from the security review process; the code path that formats an error message is not obviously security-sensitive, but if it can ever include a secret value in its output, it is exactly as sensitive as the code that stores that secret in the first place, and deserves the same scrutiny.
Perform a focused threat model on key management for a SaaS product that uses HSMs to sign tokens and encrypt customer data at rest. Identify threats to key confidentiality, integrity, and availability; propose operational controls (rotation, backup, split knowledge, access controls), HSM deployment patterns (single-region vs multi-region, cloud HSM vs on-prem), and discuss trade-offs between latency, cost, and security.
Sample Answer
Direct answer
A focused threat model on hardware security module (HSM) based key management has to score threats separately against each leg of the confidentiality, integrity, availability (CIA) triad, because the controls that protect one leg often do little for another: encrypting key backups protects confidentiality but does nothing for availability if the only HSM holding the live key fails, and dual control protects integrity of key operations but does not by itself protect the key from ever being extracted. The strongest architectures combine operational controls (rotation, backup, split knowledge, access control) with a deployment pattern (single-region vs multi-region, cloud HSM vs on-premises) chosen deliberately for the latency, cost, and security trade-offs the business actually needs, not a default.
Structured elaboration
Threats by CIA leg.
- Confidentiality: the key material itself is extracted or exported in usable form. The main threats are a compromised HSM administrator abusing legitimate export/backup functionality, a firmware or supply-chain compromise of the HSM itself, and side-channel attacks against key operations (timing, power analysis) on lower-assurance hardware.
- Integrity: the key is used to sign or encrypt something it should not, without the key itself being stolen. The main threats are an attacker who compromises the application or service account authorized to call the HSM (so they get to use the key, not steal it), and insufficient authorization checks inside the HSM's policy layer letting a valid credential perform an operation it should not be allowed to perform (for example, a service account scoped for encryption also being able to sign).
- Availability: the key becomes unusable when needed, whether through HSM hardware failure, network partition between the application and a remote HSM, accidental key deletion, or an expired/misrotated key with no valid predecessor still trusted by relying parties.
Operational controls.
- Rotation: define a rotation interval per key class based on how much data or how many operations a compromise would expose, and, critically, plan the overlap window where both the old and new key are valid so in-flight signed tokens or previously encrypted data are not orphaned. Rotation without a tested rollover procedure is a common way availability incidents get created by the rotation itself.
- Backup: key backups must be encrypted under a separate backup key (never stored as extractable plaintext, even "for disaster recovery"), stored in a physically or logically separate location from the primary HSM, and restore-tested on a schedule, not just written and assumed good.
- Split knowledge (and dual control): no single individual should hold enough key-share or credential material alone to reconstruct or use a key outside the HSM's policy engine. This is usually implemented via HSM-native multi-person authorization (an m-of-n quorum of key custodians required to perform sensitive operations like key export or policy change), which protects against both a single malicious insider and a single compromised credential.
- Access control: application-layer access to HSM operations should be scoped per service and per operation (a service that only needs to verify signatures should not hold a credential that can also sign), logged with non-repudiation (the HSM's own audit log, not just the calling application's), and reviewed on the same cadence as any other privileged-access control.
HSM deployment patterns.
- Single-region vs multi-region: single-region minimizes latency and operational complexity but makes the HSM (and, by extension, everything that depends on that key) a regional single point of failure; multi-region replication or clustering trades added complexity and, for some HSM architectures, higher latency on writes or key-state synchronization, for regional failover. Cost moves differently here than it does for stateless compute, and it belongs in the decision explicitly: an HSM is a dedicated appliance or a dedicated cloud instance that is paid for whether or not it is signing anything, so an active-active two-region cluster is roughly double the standing key-management spend of a single region before any cross-region networking, and it does not get cheaper when traffic is low. That is why multi-region is worth justifying per key class rather than adopting as a blanket posture.
- Cloud HSM vs on-premises: a cloud provider's managed HSM service shifts hardware lifecycle, patching, and physical security to the provider (commonly validated to FIPS 140-2 or the newer FIPS 140-3 standard at Level 2 or Level 3, depending on the offering) and typically integrates natively with that provider's identity and access management, at the cost of some loss of physical control and, for the highest-assurance use cases, a trust dependency on the provider's own operational security. On-premises HSMs give full physical control and can meet stricter regulatory or contractual requirements that mandate customer-controlled hardware, at the cost of the organization owning the full operational burden (physical security, firmware patching, spares, staffing 24/7 coverage). The two options also differ in the SHAPE of their cost, not only its size, which matters more than the headline number: cloud HSM is operating expenditure billed per instance-hour with no capital outlay and the option to add or remove capacity, while on-premises is a capital purchase of appliances plus spares, amortized over years, whose recurring cost sits mostly in staffing rather than in the hardware. On-premises can genuinely be cheaper at sustained high call volume and is usually more expensive at low or spiky volume, which is the reverse of the common intuition that owning the hardware must be the cheaper option.
Worked example
Trace a single scenario through both axes: a SaaS product needs an HSM-backed key to sign customer-facing authentication tokens, where a token-signing outage directly blocks every customer login. Availability is the dominant concern for this specific key, more than for a key used only for periodic batch encryption, because the blast radius of unavailability is immediate and customer-visible. That pushes the deployment choice toward multi-region cloud HSM over a single on-premises unit: a single on-premises HSM, even a well-managed one, represents a hardware single point of failure that a token-signing service cannot tolerate, while a multi-region cloud HSM cluster trades a modest latency increase on the signing call (an extra network hop to the HSM endpoint, and potentially cross-region key-state synchronization overhead) for regional failover. The cost side of that choice deserves to be said out loud rather than waved through: multi-region roughly doubles the standing HSM spend, and the honest justification is not that the money is negligible, it is that what the money buys is the removal of a single hardware failure that would take every customer login offline. Framed that way it is a comparison the business can actually make and sign off on, rather than a security-team assertion that redundancy is simply required.
Layer the operational controls onto that choice: rotate the signing key on a defined interval with an overlap window so tokens signed just before rotation remain verifiable until they naturally expire, require dual control (a two-person HSM-native quorum) for any operation that would export or delete the key, encrypt backups under a separate backup key stored in a different logical boundary than the primary key material, and scope access so the token-issuing service can only sign, while a separate, more restricted credential is the only one authorized to rotate or delete keys. This combination directly maps back to the CIA threats above: dual control and scoped access address the integrity threat (a compromised token-issuing service account still cannot rotate or export the key), encrypted, tested backups plus multi-region deployment address the availability threat, and restricting who can invoke export operations at all, combined with the HSM's own non-exportable-by-design key storage, addresses the confidentiality threat.
Trade-offs and pitfalls
The most common mistake is optimizing purely for confidentiality (extraction resistance) while quietly under-investing in availability, because "the key was stolen" is a more dramatic incident to imagine than "the key became unusable," even though an unavailable signing key can take down an entire authentication path just as effectively as a stolen one, and faster. A second pitfall is treating cloud HSM and on-premises HSM as a purely technical decision when it is often a regulatory or contractual one; some data-residency or key-custody requirements mandate customer-controlled hardware regardless of the latency or cost case for a managed service, so the deployment pattern needs to be checked against compliance obligations before the engineering trade-off is even relevant. A third is implementing split knowledge only on paper (a documented policy that two people are supposed to be present) rather than enforced by the HSM's own multi-person authorization quorum; a policy that depends on human process discipline rather than the hardware's own access-control mechanism is not actually split knowledge, it is a procedure that can be, and eventually will be, skipped under operational pressure. Finally, multi-region deployment for availability can quietly weaken the confidentiality story if key material or key-derivation secrets are replicated across regions with different physical security postures; the deployment pattern chosen for availability needs to be re-evaluated against the confidentiality threat model, not assumed to be free.
Explain common risk scoring models used with threat modeling: CVSS, DREAD, and modern alternatives or best practices. Discuss strengths and weaknesses of each, and describe how you'd choose or combine models to communicate risk to both technical teams and business stakeholders.
Sample Answer
Direct answer
Common Vulnerability Scoring System (CVSS) and DREAD (Damage potential, Reproducibility, Exploitability, Affected users, Discoverability) answer different questions, CVSS is a standardized technical severity score, DREAD is a lightweight, team-scored relative-priority tool, and neither alone tells you whether something is actually likely to be attacked. A modern addition, the Exploit Prediction Scoring System (EPSS), closes that specific gap by estimating the probability of real-world exploitation. The strongest practice combines a standardized severity or exploitability signal with an organization-specific business-impact rating, then presents that combination differently to technical and business audiences rather than reporting the same raw number to both.
Structured elaboration
CVSS. A standardized, vendor-neutral score from 0 to 10, maintained by the Forum of Incident Response and Security Teams (FIRST), based on exploitability and impact metrics: attack vector, attack complexity, privileges required, user interaction, scope, and impact on confidentiality, integrity, and availability for the base score, with optional temporal and environmental metric groups that adjust the score for real-world exploit maturity and the specific deployment context. Strengths: standardized and widely adopted, giving a shared, comparable vocabulary across security teams, vendors, and researchers, and technically precise about exploit mechanics. Weaknesses: the base score alone does not reflect the actual likelihood of exploitation against a specific system or the asset's business importance, so a 9.8 against an internal system with no interesting data can rank the same as a 9.8 against a crown-jewel payment system unless the environmental metrics are actually used, which many organizations skip, and speaking a raw CVSS number directly to business stakeholders does not naturally translate into a business decision without added context.
DREAD. Each of the five factors, damage potential, reproducibility, exploitability, affected users, and discoverability, is rated on a scale and combined, commonly averaged, into a single relative score. It was originally developed for lightweight, rater-driven relative prioritization rather than as a standardized industry benchmark. Strengths: simple and fast to apply, and each of its five factors is easy to explain in plain language, how bad, how repeatable, how hard to pull off, how many affected, how easy to find, which can actually make it more approachable to a mixed audience than CVSS's more technical metric vocabulary. Weaknesses: subjective, since ratings depend heavily on who is scoring, unlike CVSS's more structured metric definitions, so scores from different raters or teams are not reliably comparable to each other, and it lacks CVSS's broad industry standardization, a DREAD score is really only meaningful within one team's own consistent rating practice, not across organizations or against externally published scores.
A modern alternative: EPSS. A data-driven score estimating the probability that a vulnerability will actually be exploited in the wild within a near-term window, based on observed exploitation activity and vulnerability characteristics, also maintained by FIRST. Strength: it directly addresses CVSS's biggest practical gap, distinguishing "severe if exploited" from "likely to actually be exploited," the same realized-risk signal that matters for prioritizing a large backlog of findings. Weakness: it is a probability of exploitation, not a measure of impact to a specific organization, so it needs to be combined with asset criticality or business impact rather than used alone. The broader best practice, regardless of which specific score, is to combine a standardized technical or exploitability signal (CVSS and, where available, EPSS) with an organization-specific business-impact rating, rather than relying on any single score as a complete answer.
Choosing and combining scores for two audiences. For technical stakeholders, engineers and security analysts, lead with the standardized, precise scores: CVSS's metric breakdown to explain exactly why something is severe, which specific vector, what privilege is needed, and, where relevant, EPSS or observed-exploitation status to explain urgency. This audience wants the mechanism, not just a label. For business stakeholders, executives, product, or compliance leadership, translate the same underlying findings into business terms: likelihood expressed as "how likely, in plain terms, and why" rather than a raw percentage, and impact expressed in terms the business already tracks, regulatory exposure, customer-facing downtime, or a financial-loss magnitude tier, rather than a confidentiality, integrity, and availability breakdown. A small number of prioritized tiers, critical, high, medium, low, communicates far better to this audience than the underlying numeric scores themselves. The bridge between the two: maintain one underlying scoring approach and present two views of it, a detailed technical view for engineers and a summarized tiered view for business stakeholders, rather than two disconnected narratives that can drift apart or contradict each other when someone compares them.
Worked example
(Illustrative scenario, not a specific published vulnerability.) Consider a hypothetical flaw in a cryptographic library: a weak pseudo-random number generator used for session-key generation, producing predictable keys under specific conditions.
CVSS v3.1 (illustrative): the flaw is reachable over the network, needs no privileges and no user interaction, and breaks the confidentiality of session data without directly altering it, which is the vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N and a base score of 7.5. Quote the vector, not just the number: the vector is what makes the score reproducible by anyone who wants to recompute it, and it is exactly the mechanism-level detail the technical audience below is asking for.
DREAD (illustrative, each factor rated 1-10, then averaged): Damage 8 (compromised session keys enable session hijacking); Reproducibility 6 (requires specific, not universal, conditions to trigger predictable output); Exploitability 7 (once conditions are known, exploitation is straightforward); Affected users 9 (affects any session using the library under the vulnerable configuration); Discoverability 5 (requires cryptographic analysis to notice, not immediately obvious from black-box testing).
DREAD average=58+6+7+9+5=535=7.0EPSS (illustrative): a low-to-moderate initial exploitation probability, since weaponizing the flaw requires cryptographic expertise, flagged for ongoing re-monitoring because EPSS updates as real-world exploitation activity is observed, and a public proof-of-concept would likely raise it quickly.
To technical stakeholders: "CVSS 7.5, vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N, so network-reachable, low complexity, no privileges needed, breaking confidentiality via predictable session-key generation; exploitation probability currently low but expected to rise if a public proof-of-concept for the random-number-generator weakness appears."
To business stakeholders: "A high-severity flaw in how we generate session keys could let an attacker hijack user sessions under specific conditions. Current real-world exploitation likelihood is low but could rise quickly, and because this touches every session across the platform, we are prioritizing a fix within the critical remediation window rather than the normal patch cycle."
Trade-offs and pitfalls
Reporting a raw DREAD or CVSS number to business stakeholders with no translation is a common failure; "it's a 7.0" means nothing to someone who does not work with the scale daily, and repeatedly doing this trains business stakeholders to tune out security reporting entirely. Relying on CVSS base score alone for prioritization, ignoring exploitation evidence and business impact, systematically over-invests in high-severity-but-unlikely findings and under-invests in moderate-severity-but-actively-exploited ones. DREAD's subjectivity means using it for cross-team or cross-organization comparison, for example benchmarking one team's DREAD scores against a vendor's, is not meaningful; it is only self-consistent within one team's own disciplined rating practice. For cryptographic findings specifically, discoverability and exploitability ratings can be systematically mis-scored by raters without cryptographic expertise, rating a subtle cryptographic weakness as hard to discover and low priority when it is actually well known in the cryptographic research community, so pull in genuine cryptographic expertise for that specific factor rather than defaulting to a generalist's intuition.
You are designing a threat model for a new end-to-end encrypted messaging application. Identify and categorize attacker capabilities relevant to cryptographic systems: include passive eavesdroppers, active network attackers, compromised-insiders, constrained/resource-limited adversaries, and advanced future adversaries (e.g., quantum-capable). For each capability explain what actions the adversary can perform, typical indicators, and why capability-based categorization matters for mitigation choices.
Sample Answer
Direct answer
For an end-to-end encrypted (E2EE) messaging application, threat modeling needs a capability ladder, not just a list of generic "attackers," because what a given adversary can actually do determines which mitigation is relevant to them: encrypting message content defeats a passive eavesdropper but does nothing against an active network attacker who can just impersonate an endpoint if there is no key verification, and neither matters against an adversary who can compromise the key-distribution mechanism itself from the inside. The five capability tiers worth distinguishing are the passive eavesdropper, the active network attacker, the compromised insider, the resource-constrained opportunistic attacker, and the advanced future (quantum-capable) adversary, ranked roughly by what they can do to the system rather than by how sophisticated they sound.
Structured elaboration
The five capability tiers, what each can do, and how you would notice one:
| Capability tier | What the adversary can actually do | Typical indicators |
|---|---|---|
| Passive eavesdropper | Observe network traffic in transit (packet timing, size, metadata, encrypted payloads) without altering it; correlate traffic patterns even without breaking the encryption itself | Essentially none observable to the defender, since a purely passive observer never interacts with your system; the design has to assume this capability is always present rather than expect to detect it |
| Active network attacker | Everything a passive eavesdropper can do, plus intercept, modify, inject, replay, or drop packets on-path; attempt to impersonate an endpoint during key exchange (a man-in-the-middle, MITM, position) or force a downgrade to a weaker protocol version | Certificate or key-fingerprint mismatches, unexpected handshake failures or protocol-version negotiation to an older/weaker suite, a user-visible safety-number or key-verification change that the counterparty did not initiate |
| Compromised insider | Legitimate access to some part of the system's infrastructure, most importantly anything the provider itself operates, such as a key-distribution or device-directory service; can attempt to add an unauthorized device key to a user's account or otherwise manipulate key distribution without the provider needing to break the encryption at all | Anomalous device-addition or key-change events not corresponding to a real user action, discrepancies between a user's locally cached key history and what the directory currently serves |
| Resource-constrained adversary | Off-the-shelf tools and modest resources; cannot break well-implemented modern cryptographic primitives directly, but can phish credentials, exploit known unpatched vulnerabilities in outdated clients, or attempt account takeover through weak recovery flows | Failed login clusters, phishing-link reports, exploit traffic matching signatures for known, already-disclosed client vulnerabilities |
| Advanced future (quantum-capable) adversary | Today: passively harvest and store encrypted traffic for later decryption, a strategy usually called "harvest now, decrypt later," since storage is cheap even without the ability to break the encryption yet. In the future, if a cryptographically relevant quantum computer exists: derive private keys from previously observed public key-exchange material and retroactively decrypt harvested sessions | None observable today, since the harvesting itself is indistinguishable from ordinary passive eavesdropping; the relevant signal is not a detection event but the passage of time relative to how long the data must stay confidential |
Why capability-based categorization matters for mitigation choices. A mitigation is only as useful as the capability tier it is designed for, and mismatching the two produces two different failure modes. Underinvestment happens when a system assumes only constrained, opportunistic attackers and never considers an active network attacker or an insider, so it ships strong content encryption with no key-verification mechanism at all, leaving it fully exposed to an on-path MITM despite looking secure on paper. Overinvestment happens when scarce engineering effort goes toward a capability tier that is not realistically relevant to the data in question, for example building elaborate post-quantum key exchange for messages that are meaningfully worthless the moment they are read and deleted, while the application's actual weakest point is a phishable account-recovery flow that any resource-constrained attacker could exploit today. Categorization is what lets a team match mitigation cost and complexity to the capability tier that genuinely threatens a given asset, rather than guessing.
Worked example
Trace the same five-tier categorization applied to two different deployment contexts for otherwise-identical messaging application. For a small team-collaboration tool aimed at general business users, the realistic dominant threat is the resource-constrained adversary (credential phishing, account takeover via a weak password-reset flow, exploiting an unpatched client) and, to a lesser extent, an active network attacker on an untrusted coffee-shop Wi-Fi network; a compromised insider at the provider or a quantum-capable adversary are real tiers in the abstract but not where this specific product's limited security budget should concentrate first. For that context, the mitigation priority is phishing-resistant authentication, prompt patching, and basic transport security, with key verification and post-quantum readiness genuinely lower priority given the data's low sensitivity and short useful lifetime. Now apply the identical five-tier framework to a messaging application built specifically for investigative journalists communicating with sources under an authoritarian government: here the compromised insider and active network attacker tiers move to the top, since a state-level adversary is plausibly positioned to compel or infiltrate infrastructure the provider controls, and mandatory, user-visible key verification (so an inserted device key cannot go unnoticed) becomes a first-priority mitigation rather than a nice-to-have. The advanced future adversary tier also becomes far more relevant here, not because quantum computers exist today, but because source-identifying communications may need to remain confidential for years, making the harvest-now-decrypt-later strategy a real long-horizon concern worth planning cryptographic agility for, in a way it simply is not for the first product's short-lived business chat messages. Same five tiers, same underlying technology, completely different mitigation priority order, because the realistic adversary capability differs by deployment context.
Trade-offs and pitfalls
The most common mistake is treating "encrypted" as a single binary property that answers the whole threat model, when encryption alone defeats only the passive eavesdropper tier; without independent key verification it does nothing against an active MITM, and without a way to detect unauthorized key changes it does nothing against a compromised insider who controls key distribution. A second pitfall is dismissing the quantum-capable tier entirely as science fiction and therefore irrelevant to any near-term decision, which misses that the harvesting half of "harvest now, decrypt later" is happening in the present tense regardless of when decryption capability arrives, so any data with a long required confidentiality lifetime is exposed to this tier today even though the actual break is future. A third is applying one deployment context's realistic capability ranking to a different one without re-checking it, as the worked example shows; the resource-constrained tier being the realistic top priority for a general business chat tool does not transfer to a product whose actual threat profile includes a plausible state-level adversary, and copying a threat model's priority order across products without re-deriving it from the new product's actual users and data is a quiet way to under-protect the higher-stakes deployment.
Unlock Full Question Bank
Get access to all 7 Threat Modeling and Attack Surface Analysis interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.