a2a-security-review
Review agent-to-agent (A2A) / multi-agent-system trust: peer identity and authentication, message integrity, capability-negotiation trust, and delegation-chain…
Score a vulnerability with CVSS v4.0: derive the metric vector (Base, plus Threat/Environmental refinement where context supports it), compute the exact score via the official algorithm, and explain each metric choice. Use whenever a finding needs a defensible severity rather
$ npx -y skills add jassics/awesome-claude-security --skill cvss --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cvssContext preview
The summary Claude sees to decide when to auto-load this skill.
Score a vulnerability with CVSS v4.0: derive the metric vector (Base, plus Threat/Environmental refinement where context supports it), compute the exact score via the official algorithm, and explain each metric choice. Use whenever a finding needs a defensible severity rather
name: cvss description: >- Score a vulnerability with CVSS v4.0: derive the metric vector (Base, plus Threat/Environmental refinement where context supports it), compute the exact score via the official algorithm, and explain each metric choice. Use whenever a finding needs a defensible severity rather than a guess.
A defensible CVSS 4.0 score: the full vector string, numeric score, severity band, and a one-line justification per metric — computed exactly, not eyeballed or hand-calculated.
CVSS 3.1's base score was a closed-form arithmetic formula reasoning could walk through step by step. CVSS 4.0 is not: it maps the vector to one of 270 "MacroVectors" (via 6 equivalence classes) and looks up/interpolates a score from a table defined in the official specification. Reproducing that table from memory is exactly the kind of thing that looks plausible and is quietly wrong. Reason through *which metric values apply* from the evidence (that part is still judgment), then get the actual number from `scripts/cvss4-score.py`, which wraps the `cvss` PyPI package (RedHat Product Security's implementation of the official algorithm) rather than reimplementing the lookup table.
Exploitability:
need a specific pre-existing condition — a race window, a prior misconfiguration already in place — beyond the attacker's own actions?)
Impact — **two separate sets**, replacing 3.1's single Scope-gated C/I/A:
**Vulnerable System** itself (the thing with the flaw).
**Subsequent System** (anything downstream the vulnerable system can affect but didn't itself contain the flaw) — None / Low / High for both sets.
This is the single most important conceptual change from 3.1: there is no `Scope` metric anymore. Where 3.1 forced a binary Unchanged/Changed judgment call (the most-misjudged metric in that spec), 4.0 asks directly "what happens to the vulnerable system" and "what happens beyond it" as two independently-scored impact sets. If a flaw only affects the component that has it, leave SC/SI/SA at None. If exploiting it lets an attacker reach data or systems outside that component's own authority (as with the KubeHawk agent finding — its own cluster-wide RBAC read access meant compromising it disclosed data belonging to the whole cluster, not just the agent pod), that belongs in VC (what the agent itself discloses) with the broader blast radius reasoned about in the writeup even though CVSS 4.0's SC/SI/SA is specifically about *causing* impact on a separate system, not merely *having read access* to one — be precise about which set actually applies.
Concept / Attacked. Renamed from 3.1's "Temporal" group.
Requirements for the affected asset — how much does *this* organization depend on it), plus Modified Base metrics (`MAV`, `MAC`, `MAT`, `MPR`, `MUI`, `MVC`, `MVI`, `MVA`, `MSC`, `MSI`, `MSA`) if a compensating control or asset-specific context changes a Base value. There is no separate "environmental formula" to run afterward — `cvss4-score.py` computes the final score from whatever combination of Base/Threat/Environmental metrics the vector contains in one pass.
Automatable, Recovery, Value Density, Vulnerability Response Effort, Provider Urgency. Include these in the writeup when they materially affect how a reader should prioritize the finding, but don't expect them to move the number.
Unchanged from 3.1: `0.0` None · `0.1–3.9` Low · `4.0–6.9` Medium · `7.0–8.9` High · `9.0–10.0` Critical.
1. Reason through each Base metric from the evidence; note assumptions explicitly (especially for AT, and for which impact set — VC/VI/VA vs SC/SI/SA — actually applies). 2. Add Threat/Environmental metrics only if the engagement/report context actually supports them (a known exploit-maturity signal, a stated asset criticality, a documented compensating control) — don't invent values to fill out the vector. 3. Build the vector string: `CVSS:4.0/AV:_/AC:_/AT:_/PR:_/UI:_/VC:_/VI:_/VA:_/SC:_/SI:_/SA:_` (append any Threat/Environmental metrics after the Base block). 4. Run the script to get the exact score:
python3 <plugin-root>/scripts/cvss4-score.py "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
Requires the `cvss` package (`pip install cvss`); the script fails open (exit 2) rather than fabricating a score if it's missing. 5. Report the score, vector, and a one-line rationale per metric — state assumptions so the score can be challenged and reproduced.
CVSS 4.0: <score> (<Severity>) Vector: CVSS:4.0/AV:_/AC:_/AT:_/PR:_/UI:_/VC:_/VI:_/VA:_/SC:_/SI:_/SA:_ Rationale: AV=… AC=… AT=… PR=… UI=… VC=… VI=… VA=… SC=… SI=… SA=…
consequence you describe — this replaces Scope as the metric most likely to be misjudged, so state the reasoning, not just the letter values.
severity — use CVSS 4.0 there now, not 3.1.
A Claude Code plugin marketplace for the full cybersecurity & GenAI-security lifecycle — from recon and threat modeling to detection engineering, GRC, and CISO-level strategy. A pentester knows which OWASP test bends a broken-access-control endpoint.
Repo: jassics/awesome-claude-security
Review agent-to-agent (A2A) / multi-agent-system trust: peer identity and authentication, message integrity, capability-negotiation trust, and delegation-chain…
Test the agent execution harness/runtime itself — LangChain/LangGraph, AutoGen, CrewAI, custom ReAct-style loops, or computer-use/browser-use agents — for…
Assess an autonomous / tool-using AI agent for security end-to-end: tool privileges, autonomy and approval boundaries, excessive agency, memory/state…
Test what an AI agent will actually do without human confirmation, including under injected-goal / prompt-injection scenarios, to validate its autonomy and…
Review the security of MCP (Model Context Protocol) servers/clients an agent uses: server trust tier, tool/resource description and result poisoning,…
Inventory the tools/functions an AI agent can call and audit their privileges, side effects, and approval requirements to find excessive-agency and…