Skip to content
FlowScript templates

Webhook ingestion threat model

Review forged, replayed, out-of-order and flooded events in webhook ingestion, and who owns each control; ordinal scores and coverage are illustrative assumptions. Typed FlowScript for threat modelling. Keywords: threat model, STRIDE, risk matrix, security.

Template previewFlowScript
RISK MATRIX · STRIDEIllustrative Webhook ingestion threat modelLIKELIHOOD →IMPACT →1122334455R1R2R3R4RESIDUAL RISK · RANKEDR3 · Out-of-order updateL:2 · I:3 · tampering6R2 · Replay of old eventL:1 · I:5 · tampering5R1 · Forged eventL:1 · I:4 · spoofing4R4 · Event floodL:1 · I:2 · dos2

What this template contains

Source
80 lines

Make it your own.

// Review forged, replayed, out-of-order and flooded events in webhook ingestion, and who owns each control; ordinal scores and coverage are illustrative assumptions.
// Synthetic worked example: all entities, schedules and measurements are illustrative.
// Every string below is EXAMPLE text from a fictional model: replace it.
// Replace assumptions and inputs before applying this model to actual work.

threat_model assessment {
  title: "Illustrative Webhook ingestion threat model"
  framework: "STRIDE"
  scope: "Design review; scores are illustrative ordinal judgements"
}

asset asset_0 {
  name: "Inbound event stream"
  value: "Protect confidentiality, integrity and availability"
  classification: "restricted"
}

asset asset_1 {
  name: "Processed operation ledger"
  value: "Protect confidentiality, integrity and availability"
  classification: "restricted"
}

threat r1 {
  title: "R1 · Forged event"
  // Scenario: Sender identity is not verified
  asset: asset_0
  category: "spoofing"
  likelihood: 3
  impact: 4
}

control control_0 {
  title: "Verify provider signatures on raw payload bytes"
  mitigates: [r1]
  type: "preventive"
  coverage: 0.6
  owner: "System owner; validate residual risk"
}

threat r2 {
  title: "R2 · Replay of old event"
  // Scenario: A valid event is submitted repeatedly
  asset: asset_1
  category: "tampering"
  likelihood: 2
  impact: 5
}

control control_1 {
  title: "Deduplicate by immutable event identifier"
  mitigates: [r2]
  type: "preventive"
  coverage: 0.6
  owner: "System owner; validate residual risk"
}

threat r3 {
  title: "R3 · Out-of-order update"
  // Scenario: An older event overwrites newer state
  asset: asset_0
  category: "tampering"
  likelihood: 4
  impact: 3
}

control control_2 {
  title: "Require sequence or version checks"
  mitigates: [r3]
  type: "preventive"
  coverage: 0.6
  owner: "System owner; validate residual risk"
}

threat r4 {
  title: "R4 · Event flood"
  // Scenario: Unbounded event volume fills the queue
  asset: asset_1
  category: "dos"
  likelihood: 3
  impact: 2
}

control control_3 {
  title: "Rate-limit and isolate bounded queues"
  mitigates: [r4]
  type: "preventive"
  coverage: 0.6
  owner: "System owner; validate residual risk"
}

view risks: risk_matrix