Version: 1.1
Last updated: 2026-08-05
Wave program: Stellar Wave 8 — August 2026
| Field | Value |
|---|---|
| Project | RytScan |
| Tagline | Soroban security scanner for Stellar smart contracts |
| Repository | BreachDirect/RytScan |
| Category | Security tooling · Static analysis · Soroban |
Soroban contracts on Stellar handle real assets. Common vulnerability classes — missing authorization, panic aborts, unchecked token transfers, missing events, TTL archival bugs — recur across Wave repos but are often caught only at review time or after testnet incidents.
Existing tools (OpenZeppelin soroban-scanner, Sanctifier) are powerful but heavyweight. Wave contributors need a fast, zero-config scanner they can run locally and in CI during the 7-day sprint.
RytScan maps to recurring patterns in the Stellar Wave issue catalog:
| Wave pattern | RytScan response |
|---|---|
| Soroban event emission for indexers | EVENT-001 rule (Lumenpulse #269) |
| Contract security before testnet deploy | AUTH-001, TOKEN-001, PANIC-001 |
| CI security gates on contract PRs | --fail-on high + JSON reports |
| Backend/indexer reliability | Events flagged early reduce silent state changes |
Wave 8 goal: Ship Phase 1.5 CLI — 9 detectors, SARIF output for Code Scanning, and CI enforcement — so Wave contributors can gate contract PRs on day one of the sprint.
RytScan provides:
rytscan scan <path>— walk Soroban Rust sources and run security rules- Rule catalog — 9 Phase 1/1.5 detectors aligned with stellar-dev-skill vulnerability classes
- Fixture contracts — vulnerable + clean samples for regression tests
- CI-ready output — text, JSON, and SARIF v2.1.0 (GitHub Code Scanning), with a configurable failure threshold
- Soroban developers submitting Wave PRs
- Repo maintainers triaging
Stellar Wavesecurity issues - Auditors doing first-pass static review before deep analysis
| Deliverable | Status |
|---|---|
rytscan-core rule engine |
✅ |
rytscan-cli binary (scan, rules) |
✅ |
| 6 built-in security rules | ✅ |
| Vulnerable + clean fixture contracts | ✅ |
| PRD + architecture documentation | ✅ |
| JSON + text report formats | ✅ |
Success criteria:
-
cargo testpasses - Scanning
fixtures/vulnerable-vaultproduces ≥ 4 findings - Scanning
fixtures/clean-tokenproduces 0 high/critical findings -
rytscan ruleslists all rule IDs - Documented Wave 8 alignment
| Deliverable | Status |
|---|---|
| ARITH-001, ASSERT-001, UNSAFE-001 rules (9 total) | ✅ |
SARIF v2.1.0 output (--format sarif) |
✅ |
| CI workflow (fmt, clippy, tests, fixture smoke) | ✅ |
GitHub Action: BreachDirect/rytscan-action |
Planned |
Success criteria (Phase 1.5):
-
cargo clippy --workspace --all-targets -- -D warningspasses -
cargo test --workspacepasses (12 tests) - Vulnerable fixture triggers all 9 rules
- Clean fixture triggers 0 findings
- SARIF output validates against the 2.1.0 shape
- CI gates PRs on fmt + clippy + tests + smoke
- Replace line-based heuristics with
synAST traversal - GitHub Action:
BreachDirect/rytscan-action - Rule suppressions via
rytscan.tomlconfig
- WASM size / export surface checks post-build
- Testnet smoke probes via
stellar contract invoke - Cross-reference static findings with simulation traces
- Web dashboard for scan history and severity trends
- Drips Wave issue matcher (suggest rules from issue title/body)
- VS Code diagnostics extension
- Formal verification (Z3)
- Runtime on-chain guards
- Full duplicate of OpenZeppelin detector SDK
- Web UI
| Metric | Phase 1 | Phase 4 |
|---|---|---|
| Built-in rules | 9 | 20+ |
| False positive rate (fixtures) | ≤ 1 per clean fixture | ≤ 5% |
| Scan time (1 contract) | < 100ms | < 50ms |
| Wave repos adopting CI gate | 0 | 10+ |