Skip to content
Back to skills

Threat Model Check

ASecurity

Verify attack prerequisites are realistic. Block unrealistic threat models pre-submission. Matches "threat model", "attack prerequisites", "prereq check"

  • 6 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
securityrustgobashapi

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add R00T-Kim/Terminator --skill threat-model-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Threat Model Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Threat Model Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/r00t-kim-threat-model-check/badge)](https://www.skillsdirectory.com/skills/r00t-kim-threat-model-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: threat-model-check
description: Verify attack prerequisites are realistic. Block unrealistic threat models pre-submission. Matches "threat model", "attack prerequisites", "prereq check"
user-invocable: true
argument-hint: <finding-description-or-file>
allowed-tools: [Read, Bash]
---

# Threat Model Consistency Check

## CRITICAL RULES (NEVER VIOLATE)
1. **BLOCK → finding MUST NOT be sent to exploiter**
2. **3+ prerequisites = unrealistic attack scenario** → automatic BLOCK
3. **D-Bus/local access → BLOCK unless root escalation chain exists**

Verifies that a finding's attack prerequisites are consistent with the program's threat model.
Threat model breaches account for 19% of all failures (MCP, Immutable, OPPO).

## Input
- `$ARGUMENTS`: finding description text or report file path

## Procedure

### Step 1: Extract Attack Prerequisites
Read finding and classify what the attacker must control:

| Prerequisite Category | Description | Realism |
|-----------------------|-------------|---------|
| Network access | Reachable from internet | HIGH (common) |
| User credentials | Valid account/token required | MEDIUM (phishing etc.) |
| Code execution | Execute code on target system | LOW (already compromised) |
| Infrastructure access | Server/cloud access | VERY LOW |
| Physical access | Physical device access | VERY LOW |
| Insider | Internal org privileges | VERY LOW |
| Victim device access | Access to victim's device | LOW |
| MitM position | Network intermediary position | LOW-MEDIUM |

### Step 2: Prerequisite Count Verdict
```
prerequisite_count = number of categories attacker must control

if prerequisite_count == 0-1:
    → PASS (realistic attack scenario)
elif prerequisite_count == 2:
    → WARN ("2 prerequisites — attack feasibility may be low")
elif prerequisite_count >= 3:
    → BLOCK ("3+ prerequisites — unrealistic attack scenario")
```

### Step 3: Program Threat Model Cross-check
```
Read targets/<target>/program_rules_summary.md  # program threat model
```

Special rules:
- **D-Bus/local access** → no root escalation chain → **BLOCK**
- **Admin/governance access** → "admin trust assumed" program → **BLOCK**
- **Physical access required** → no remote exploit → **WARN** (low severity)
- **User interaction required** → 1-click = OK, complex scenario = **WARN**

### Step 4: Output
```
[THREAT-MODEL] Finding: <summary>
[THREAT-MODEL] Prerequisites:
  - [category1]: <description> (realism: HIGH/MEDIUM/LOW)
  - [category2]: <description> (realism: HIGH/MEDIUM/LOW)
[THREAT-MODEL] Prerequisite count: N
[THREAT-MODEL] Program threat model match: YES/NO
[THREAT-MODEL] Result: PASS / WARN(<reason>) / BLOCK(<reason>)
```

## Few-Shot Examples

### PASS (1 prerequisite) — Remote API IDOR
```
Finding: GET /api/invoices/{id} returns any user's invoice without auth check
Prerequisites: [Network access] (realism: HIGH)
Prerequisite count: 1
→ PASS — realistic, single prerequisite, internet-reachable API
```

### WARN (2 prerequisites) — Authenticated SSRF
```
Finding: Authenticated user can trigger SSRF via webhook URL parameter
Prerequisites: [Network access] + [User credentials]
Prerequisite count: 2
→ WARN — feasible but requires valid account. Disclose prerequisite honestly
```

### BLOCK (3+ prerequisites) — Local D-Bus + SUID + config
```
Finding: D-Bus method bypasses polkit, then SUID binary reads config with secret
Prerequisites: [Local access] + [D-Bus session] + [Specific SUID binary present]
Prerequisite count: 3
Program OOS: "local access bugs OOS unless root escalation"
→ BLOCK — 3 prerequisites + no root chain + matches program OOS rule
```

## Lessons Learned
- **MCP (Immutable)**: "attacker can modify MCP server code" premise → program judged "intended behavior"
- **OPPO**: "static analysis alone claims RCE" → no execution environment access to prove → Informative
- **AXIS D-Bus**: local access + D-Bus call → no root escalation chain → OOS
- **Keeper EPM**: "unauthenticated" claim → only tested with enrolled user → peer credential checking existed

> **REMINDER**: BLOCK = never send to exploiter. More prerequisites = lower severity (adjust CVSS PR/UI).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.