DeFi Security AllianceRequest an audit
Menu

EVM patterns

Smart Contract Security Standards: Mapping Requirements to Audit Evidence

A named framework helps only when its requirements point to a specific system and review evidence. Smart contract security standards support a scoped assessment; they do not supply the protocol specification or guarantee a safe deployment.

Calipers measuring a translucent code cube against a blue ruler, representing smart contract security standards used to scope an audit.

Key facts

Original census
35 control documents across 11 OWASP SCSVS families
Unit counted
Documents, not individual requirements or passing tests
Largest family
6 component-specific control documents
Scope boundary
Tested code, configuration and assumptions must be identified

What each standard covers

Smart contract security standards turn broad expectations about secure code into named requirements, review procedures or claims of conformance. Those outputs have different meanings. A weakness list helps a reviewer name a failure. A verification requirement asks for evidence that a particular condition holds. A testing guide explains a way to collect that evidence. Buying a review against one does not automatically buy the others.

The OWASP Smart Contract Security Verification Standard, abbreviated SCSVS, is aimed primarily at Solidity contracts on EVM chains. Its companion materials include a testing guide, a weakness enumeration and a checklist. A team can use that family to connect a requirement to a test and then to a finding, while preserving the distinction between those three records.

The Smart Contract Top 10 serves a different purpose. Its named attack categories help a team explain priorities and recognize familiar failure mechanisms. They are not a complete inventory of everything that can invalidate a lending market, bridge or token. Pin the edition. The current OWASP site includes the 2026 list alongside older editions, so an unversioned reference to "the Top 10" can describe different categories in two otherwise identical proposals.

The EEA EthTrust Security Levels specification defines requirements for claims about tested Solidity code. Version 3 describes levels [S], [M] and [Q], conformance requirements and review methods. Its own security considerations limit the assurance to the assessment and the requirements. A claim made by a reviewer is not evidence that every future deployment or dependency will remain safe.

Choose a standard by the decision its evidence supports
ReferenceUseful outputQuestion it cannot settle alone
OWASP SCSVSRequirement IDs linked to an assessmentWhether an excluded integration is secure
OWASP Smart Contract Top 10A versioned risk vocabulary for prioritizationWhether every relevant control was tested
OWASP testing guide and weakness enumerationTest procedures and consistent weakness namesWhether the procedure ran on the deployed revision
EEA EthTrustA documented conformance claim for tested codeWhether the surrounding operation has no remaining risk

Do not infer a control's scope from its abbreviation. In the fetched SCSVS index, the ORACLE group description concerns arithmetic and logic security, while the adjacent weakness catalog uses oracle-related weakness names. Read the actual requirement and cite its stable location. A proposal that merely expands an acronym can silently substitute a different task for the one the standard describes.

Version drift also affects assurance labels. The fetched SCSVS introduction says its earlier verification levels have been reworked as testing profiles, with transitional checklist material still carrying older levels. Copying a level from an old template can therefore create an ambiguous promise. Require the reviewer to identify the precise profile, checklist revision or requirement set being used.

The practical choice is usually a combination: a requirement framework for scope, a weakness taxonomy for reporting and project-specific properties for the behavior that matters to users. Each reference should have a job. Listing more logos on the cover does not establish additional review work.

Mapping to audit scope

Start with an asset and an unacceptable outcome. For a vault, that could be an unauthorized withdrawal or incorrect share issuance. For a bridge receiver, it could be accepting a message from the wrong source application. Then identify the contracts, privileges and external assumptions that could produce that outcome. Only after that mapping should a standard's requirement IDs enter the scope.

A requirement without a target is hard to test. "Review access control" leaves open whether the reviewer will examine the deployment script, a proxy administrator, a governance executor or only the modifiers in the main contract. A useful scope names the relevant addresses or repository paths, the reference commit and the role relationships that must hold after deployment.

Consider a hypothetical upgradeable token. The token implementation restricts minting to a role, but an administrator can replace the implementation. Reviewing the mint modifier alone does not establish the supply policy. The scope must also address who can upgrade, what delay applies, which initialization path sets the roles and how the deployed configuration is compared with the reviewed one.

Example requirement mapping for an upgradeable token
Review objectEvidence requestedAcceptance condition
Mint authorityRole graph and negative authorization testsUnprivileged callers cannot create supply through any scoped entry point
Upgrade authorityProxy type, administrator path and upgrade testsOnly the documented governance path can replace the implementation
InitializationDeployment sequence and initialization stateThe deployed instance cannot be initialized again by another caller
External dependencyPinned version and integration assumptionsThe report states which dependency behavior was assumed rather than reviewed

This is an editorial example, not a claim that these rows exhaust a token audit. Its value is the join between a target, evidence and a decision. A report can mark the requirement satisfied only after stating what was examined. If the evidence is unavailable, the result remains unassessed; a blank checkbox must not become an implicit pass.

Separate implementation properties from environmental assumptions. A contract might correctly reject an expired signature while assuming that an off-chain service issued the signature to the intended person. The first statement is a code property. The second depends on a service and its key management. A contract standard can inform that boundary without proving the off-chain assumption.

For each row, allow explicit outcomes: supported, contradicted, not applicable or not assessed. A not-applicable decision needs a reason. For example, a requirement tied to an upgrade path may be inapplicable to an immutable deployment, but the reviewer should establish immutability rather than accept a project description. A not-assessed row should identify the missing evidence and the party able to supply it.

The smart contract threat model supplies the adverse outcomes behind this map. The protocol invariant specification supplies behavioral statements that generic requirements cannot invent for the project. Together they keep a standards-based scope connected to an actual protocol rather than a reusable checklist with its name changed.

Retain the mapping after remediation. A changed contract can affect several requirements even when it fixes a single finding. Record which rows were re-examined, which evidence was regenerated and which assumptions stayed outside the review. This makes a follow-up assessment comparable with the initial one.

Using the standards in an RFP

An RFP should make competing offers comparable before anyone estimates effort. Attach the repository revision, deployment architecture, expected changes during the engagement and the requirement mapping. State whether the engagement includes a conformance claim, a conventional audit report or a technical gap assessment. These deliverables are related, but their acceptance conditions differ.

Ask the bidder to return the mapping with additions and exclusions. A useful response may identify a requirement you omitted or explain why a proposed test does not apply. That is stronger evidence of understanding than an unconditional promise to "cover OWASP." Require enough detail to distinguish the planned work from a list of tools the firm owns.

A standards claim needs an evidence chainA missing link interrupts the assurance claim: a named standard without a target or a result without evidence does not complete the chain.Versioned ruleScoped targetRecorded evidenceQualified claim
A standards claim needs an evidence chain. A missing link interrupts the assurance claim: a named standard without a target or a result without evidence does not complete the chain.
  1. Freeze the exact requirement set so later readers can identify the reference.
  2. Bind each applicable rule to a contract, role or integration assumption.
  3. Preserve the test, review note or proof that supports the assessment.
  4. State the result, limitations and the revision to which the claim applies.

Require the report to distinguish automated checks from manual review and formal verification. The methods can complement one another, but their outputs are not interchangeable. A scanner result concerns the properties its detectors recognize. A manual review documents an analyst's reasoning within a scope. A proof establishes a statement under a formal model and assumptions. None should be relabeled as another method to make the scope sound broader.

A practical acceptance package includes a scope manifest, the assessment matrix, detailed findings and a remediation record. The matrix should link to evidence without forcing every reader to rerun the entire project. For an executable test, preserve the tool version and invocation. For a manual finding, provide the affected path and the reasoning. For a proof, identify the property and any model restrictions.

Agree on evidence retention before the assessment. A requirement row should identify its reviewer, target revision, result and supporting artifact. If a test is nondeterministic, preserve the seed or failing input needed to reproduce the observation. If the result depends on a manual judgment, preserve the rationale rather than only a checked box. The package should let a later reviewer distinguish evidence that was collected from evidence that was merely requested. This also makes an incomplete engagement visible without forcing the project to characterize every unfinished row as a vulnerability.

Use a change rule before work begins. If the team replaces an oracle, introduces a new role or changes the upgrade mechanism during review, the original mapping may no longer describe the system. The rule should say who decides whether the change is in scope, how the cost is recalculated and whether the final report covers the new revision. Otherwise, a standards reference can conceal a moving target.

RFP language that makes an answer reviewable
Ambiguous requestMore useful requestWhy it changes the decision
Follow security best practicesReturn an applicability matrix for the named standard revisionExclusions become visible before the engagement
Run all security toolsName the checks and the evidence retained for each scoped propertyA tool list no longer substitutes for coverage
Certify the protocolIdentify the tested code, conformance level and limits of the proposed claimThe buyer can tell what the reviewer is actually asserting
Verify all fixesList the remediation revision and the requirements re-examinedA new defect cannot disappear behind a closed issue label

The audit RFP guide expands the procurement questions beyond standards, including staffing and scheduling. When gathering offers through the audit scope builder, submit the same technical package to each firm. The Pharos Production member profile is one provider reference; a directory entry itself does not establish conformance with your chosen requirement set.

Do not turn price into a surrogate for scope. A cheaper offer may exclude deployment review or remediation, while a more expensive one may still leave economic assumptions unspecified. Compare the returned matrices first. Ask about any material difference before treating the quotes as estimates for the same work.

Gaps the standards leave

A standard cannot write the business specification for the team. It can require that authorization or arithmetic be checked, but it cannot decide who should have the right to seize collateral or which rounding direction the product intends. An internally consistent implementation can still implement the wrong policy. That gap belongs in the specification and threat model.

Economic behavior is another boundary. A lending protocol may use correctly implemented arithmetic and a well-formed oracle interface while accepting a price source that can move too easily for its collateral policy. The assessment needs assumptions about liquidity, observation windows and liquidation behavior. A generic compliance row cannot supply those assumptions or establish that they remain true in production.

Operational changes can invalidate an otherwise accurate review. A new administrator, a changed signer threshold, a frontend release or a replaced deployment dependency may sit outside the tested code. Keep a separate operational register for changes that affect the trust boundary. Use the standard as an input to that register, then assign an owner and a review trigger to each material assumption.

Residual questions after a standards assessment
BoundaryQuestion to retainEvidence owner
Product intentDoes the specified behavior match the promises made to users?Product and protocol engineering
Economic assumptionsCan market conditions invalidate the model used during review?Protocol risk team
Deployment identityDoes the live bytecode and configuration match the reviewed target?Release engineering
OperationsCan keys, infrastructure or frontend changes bypass the reviewed contract controls?Security and operations
Future changesWhich modifications require another assessment?Governance and the accountable release owner

A useful limitation is specific enough to affect a decision. "Security cannot be guaranteed" is true but gives a launch team little to act on. "The upgrade administrator configuration was supplied by the client and was not verified on-chain" identifies a remaining task. The team can then verify the configuration, commission that work or explicitly accept the uncertainty.

Keep unresolved requirements visible in the public report where disclosure is appropriate. Readers should be able to distinguish an accepted risk from an untested area and a remediated defect from a proposed fix. The audit report field guide explains why those statuses carry different meanings. A standard's name should make the record easier to compare, not flatten its qualifications.

The stopping condition is an accountable decision: the relevant requirements have evidence, the exclusions have reasons and the remaining assumptions have owners. That is a workable basis for a release review. A badge without that record is not enough.

Original census: 35 control documents

Method

Source and selection
Select every docs/SCSVS/controls/SCSVS-FAMILY-N.md document from the complete OWASP repository tree at the recorded commit. Group by the literal family identifier.
Retrieved
Observation
35 matching control documents across 11 families; all other repository entries excluded.

Results

Recorded observations on
Control familyDocuments
ARCH3
AUTH3
BLOCK2
BRIDGE4
CODE3
COMM4
COMP6
CRYPTO3
DEFI2
GOV3
ORACLE2

The repository census found 35 control documents across 11 families. The component-specific family contains 6 files; three families contain 2 each. These are file counts, not counts of individual assertions or required audit hours.

That distinction matters when comparing scopes. A bidder who promises one checked box per document may still be grouping several requirements into one answer. Use the census as an inventory cross-check, then inspect the actual requirements and applicability decisions. A larger family should not automatically receive more budget without considering the protocol's attack surface.

Limits

  • Complete control-document path census at the recorded OWASP repository commit, not a sample of audits.
  • No contract was tested and no certification was evaluated. Document count does not measure security effectiveness.
  • The control framework can change; retain the recorded commit with the scope instead of relying on a moving branch.

The reproducible record is kept in the repository: seo/research/articles-42-51-2026-09-06/surveys.py and seo/research/articles-42-51-2026-09-06/survey-42.json. These file paths are not public downloads.

Frequently asked questions

Can a reviewer reuse an earlier standards mapping after a chain migration?

Use it as a starting inventory, then reassess compiler behavior, deployment configuration and chain-specific assumptions. Preserve unchanged evidence only where the reviewer can justify its continued applicability.

How should a team handle a requirement that contradicts its product specification?

Record the conflict before claiming conformance. Decide whether the product must change, whether the requirement is inapplicable with a defensible reason or whether the conformance claim must be narrowed.

Should the public report expose sensitive operational details?

Publish enough scope and limitation information to make the claim understandable. Keep exploitable operational details in a controlled appendix when necessary, while identifying the evidence owner and the fact that the appendix exists.

Comments

6
  1. Chloe N.

    Requirement IDs help trace a review, but each ID still needs a target and an evidence record. A list of framework names would not tell me which deployed behavior was checked.

  2. Ben O.

    The distinction between a weakness catalog and a verification requirement makes procurement language clearer. Naming a defect class is different from specifying how a reviewer must test a control.

  3. Adam B.

    Could the requirement mapping include an example marked not applicable, with its rationale? That would make exclusions easier to compare across proposals.

  4. Eva S.

    The document census should stay separate from the number of requirements or passing checks. One control document can contain several obligations with different evidence needs.

  5. Maya K.

    For a vault, I would put the intended rounding rule in the project specification before mapping the arithmetic checks. A general standard cannot choose the product's accounting policy.

  6. Ethan L.

    The RFP should state what counts as acceptance for each deliverable. A gap assessment and a claim of conformance need different supporting records, even if they cite the same framework.

Leave a comment

Share a question or observation about this article.

10 to 3,000 characters.