Open standard · v1.0 · CC BY 4.0

Score onchain risk the same way every time.

OVSS, the Onchain Vulnerability Scoring System, rates a smart contract vulnerability from 0.0 to 10.0. It’s open, it’s reproducible, and it’s the scale we use on our own audit findings.

A calculator containing 10 metrics as a way to consistently score vulnerabilities on chain. Each choice is recorded in a short vector string, so anyone can recompute the score and check it.

Calculator

Pick the worst realistic outcome under Impact and the easiest realistic attack under Exploitability. The vector records every choice.

Impact

The worst realistic outcome of this one vulnerability. The highest of the four sets the base impact.

FFunds
No funds are lost, stolen or frozen.−5.4 scoreUnclaimed yield, fees, rewards or royalties are stolen or permanently frozen.−1.2 scorePrincipal is frozen for a time, then becomes available again without anyone losing it.−1.2 scoreAll or nearly all principal at risk is stolen or permanently frozen, or the protocol becomes insolvent.+0.6 score

Some principal is stolen or permanently frozen, or part of the protocol becomes insolvent.

CControl
An unprivileged user can change parameters or configuration they shouldn't.An attacker gains a privileged role: minter, keeper, pauser, oracle updater.An attacker becomes owner, gains the upgrade authority, or changes a governance result.+0.6 score

No change in who controls anything.

AAvailability
Works, but worse: higher gas, griefing, delays.A core function is unusable for a time.A core function is permanently unusable. Use F instead if funds are frozen.

No effect on using the protocol.

DData integrity
Wrong data with limited consequences, e.g. wrong events or view functions.Wrong data that other systems or users act on, e.g. oracle output.

No data others rely on is affected.

Impact modifiers

Whether the damage can be undone, and whether it spreads beyond this protocol.

RReversibility
A pause, admin action or upgrade restores everything, without anyone losing value.−1.7 scoreSome of the damage can be undone.−0.8 score

It can't be undone. The default for stolen funds.

SScope
Other protocols, bridges, integrators or their users are hit too.+0.6 score

Only this protocol and its users are affected.

Exploitability

The easiest realistic path to that outcome.

PRPrivileges required
Needs a specific position, NFT, allowlist entry or account state the attacker can normally obtain.−0.6 scoreOnly a privileged role can do it: a malicious or compromised admin, keeper or multisig.−2.7 score

Anyone can do it.

ACAttack cost
Under about $1,000, or capital that can be flash-loaned and repaid in one transaction.+0.9 scoreLarge own capital at risk, or the attack loses money unless conditions are perfect.−1.0 score

Thousands to hundreds of thousands of dollars at risk, or capital held across transactions.

PCPreconditions
Works in any normal state.+2.3 scoreNeeds a state that happens routinely, e.g. normal price movement.+1.5 score

Needs a specific market state, timing or configuration, e.g. an empty vault at launch.

UIUser interaction
A victim must do something, e.g. sign a message or deposit at a certain moment.−1.1 score

No victim action needed.

Formula. impact = min(10, max(F, C, A, D) × R + S), or 0 when every impact metric is None. score = impact × PR × AC × PC × UI, rounded to one decimal. Bands use the CVSS thresholds: Critical 9.0+, High 7.0+, Medium 4.0+, Low 0.1+.

Citing OVSS. Show the vector, score and band for every finding. Suggested credit: “Scored with OVSS v1.0, the Onchain Vulnerability Scoring System by SecurityWiz, licensed under CC BY 4.0.”

The specification is CC BY 4.0; reference code is MIT. Proposals to change metrics, weights or bands are welcome on GitHub.