Solaris

Coverage-guided, structure-aware, and stateful fuzzer that systematically explores program state space to discover edge cases and vulnerabilities through bytecode-level instrumentation.

Purpose-Built Fuzzing Infrastructure for Solana

Off-the-shelf fuzzing tools cannot effectively test Solana smart contracts. We have engineered a complete instrumentation and fuzzing stack specifically for sBPF bytecode, enabling capabilities that distinguish our audits from traditional security firms

Program Analysis & State Space Exploration

We model protocol state machines and construct decision trees that guide our fuzzing tools toward critical state transitions, using schema-driven input generation to track instruction sequences and systematically explore execution paths and discover vulnerabilities in complex protocol logic.

Bytecode-Level Coverage Instrumentation

Traditional audits cannot quantify code coverage. Our custom sBPF runtime instrumentation tracks execution at the bytecode level, providing empirical metrics on audit thoroughness.

Program Bytecode
0x1000 ldxdw r1, [r10-8]
0x1008 add64 r1, r2
0x1010 jgt r1, 0xFFFFFFFF, 0x1020
0x1018 syscall sol_invoke_signed
0x1020 stxdw [r10-16], r0
0x1028 exit
Edge Coverage
67%
Unique Edges
1,247
New Paths
423

Structure-Aware Input Generation

Random fuzzing generates invalid inputs rejected early in execution or during deserialization. Our schema-aware mutation engine respects protocol data structures and instruction formats, ensuring test cases penetrate deep into program logic.

Mutating Schema
message VaultInstruction {   uint64 amount = 1000;   bytes destination = 11111111111111111111111111111111;   optional AccountMeta signer = {     bytes pubkey = TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA;     bool is_writable = true;   }; }
Fuzzing...

Automated Invariant Validation

Our automated framework tests invariants across millions of execution paths, systematically validating critical security properties and security guarantees.

Balance Conservation
Σ(balances) = constant
✓ Passing
Access Control
authorized(caller) → allowed(action)
✓ Passing
State Consistency
total_supply ≥ Σ(holdings)
✓ Passing
Overflow Protection
∀x: x + y ≤ MAX_U64
⟳ Checking
Validating Invariants...

How It Works

A systematic approach to fuzzing Solana programs

01

Define Schema

Model program instructions and their parameters using structured schemas

02

Write Harness

Implement fuzzing harness that translates structured inputs into program instructions

03

Run Fuzzer

Execute fuzzer with coverage-guided mutations to explore program states

04

Analyze Results

Review discovered bugs, crashes, and invariant violations with reproducing test cases

Additional Features

Coverage Reports

Export visual code coverage reports to validate fuzzing campaign efficacy and demonstrate testing thoroughness

Corpus Management

Maintain and evolve test case corpus to maximize coverage and minimize redundancy

Crash Reporting & Reproduction

Reproduce bugs with a single test case for easy debugging and analysis

Use Cases

Security Testing

Invariant Discovery Edge Case Detection Vulnerability Research

Pre-Deployment

Program Hardening Coverage Analysis Regression Testing

Continuous Integration

Automated Fuzzing CI/CD Pipelines Quality Assurance

Intelligent Fuzz Testing for Solana Programs

Get early access to Solaris for Solana

Request Access View All Products