- Add SYNOR_BOOTSTRAP_PEERS env var for runtime seed node configuration - Implement secrets provider abstraction for faucet wallet key security (supports file-based secrets in /run/secrets for production) - Create WASM crypto crate foundation for web wallet (Ed25519, BIP-39) - Add DEPLOYMENT.md guide for testnet deployment - Add SECURITY_AUDIT_SCOPE.md for external security audit preparation - Document seed node deployment process in synor-network Security improvements: - Faucet now auto-detects /run/secrets for secure key storage - CORS already defaults to specific origins (https://faucet.synor.cc) - Bootstrap peers now configurable at runtime without recompilation
259 lines
7.7 KiB
Markdown
259 lines
7.7 KiB
Markdown
# Synor Blockchain Security Audit Scope
|
|
|
|
This document defines the scope for external security audits of the Synor blockchain.
|
|
|
|
---
|
|
|
|
## 1. Overview
|
|
|
|
**Project**: Synor - High-throughput blockDAG with quantum-resistant cryptography
|
|
**Language**: Rust (core), TypeScript (web wallet)
|
|
**Audit Priority**: High (pre-mainnet requirement)
|
|
|
|
### Key Innovations to Audit
|
|
- GHOSTDAG consensus with PHANTOM ordering
|
|
- Hybrid Ed25519 + Dilithium3 post-quantum signatures
|
|
- WASM-based smart contract VM
|
|
- Custom UTXO model with parallel validation
|
|
|
|
---
|
|
|
|
## 2. Audit Scope by Priority
|
|
|
|
### 2.1 Critical Priority (Must Audit)
|
|
|
|
#### Cryptographic Primitives (`crates/synor-crypto/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| Keypair generation | `src/keypair.rs` | Entropy sources, secure randomness |
|
|
| Ed25519 signatures | `src/signature.rs` | Signature malleability, validation |
|
|
| Dilithium3 PQC | `src/dilithium.rs` | Parameter validation, side-channel resistance |
|
|
| Hybrid signatures | `src/hybrid.rs` | Composition correctness, fallback behavior |
|
|
| Address derivation | `src/address.rs` | Bech32m encoding, checksum validation |
|
|
| Key encryption | `src/lib.rs` | AES-256-GCM, Argon2 parameters |
|
|
|
|
**Specific Concerns**:
|
|
- Verify Dilithium3 implementation matches FIPS 204 draft
|
|
- Check for timing side-channels in signature verification
|
|
- Validate entropy sources on different platforms
|
|
|
|
#### Consensus (`crates/synor-consensus/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| GHOSTDAG | `src/ghostdag.rs` | K-cluster selection, anticone calculation |
|
|
| Ordering | `src/ordering.rs` | Topological sort, merge set computation |
|
|
| Block validation | `src/validation.rs` | PoW verification, timestamp checks |
|
|
| Difficulty adjustment | `src/difficulty.rs` | DAA window, manipulation resistance |
|
|
| Finality | `src/finality.rs` | Finality depth, reorg resistance |
|
|
|
|
**Specific Concerns**:
|
|
- GHOSTDAG K parameter (K=18) sufficient for 10 BPS?
|
|
- DAA vulnerability to timestamp manipulation
|
|
- Selfish mining / withholding attack resistance
|
|
|
|
#### DAG Structure (`crates/synor-dag/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| Block storage | `src/store.rs` | Hash collision handling |
|
|
| Parent selection | `src/relations.rs` | Tip selection algorithm |
|
|
| Blue score | `src/blue_score.rs` | Score computation correctness |
|
|
|
|
### 2.2 High Priority
|
|
|
|
#### Smart Contract VM (`crates/synor-vm/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| WASM executor | `src/executor.rs` | Sandbox escape, memory isolation |
|
|
| Gas metering | `src/gas.rs` | Metering accuracy, DoS prevention |
|
|
| Host functions | `src/host.rs` | Input validation, state access |
|
|
| Memory management | `src/memory.rs` | Bounds checking, overflow |
|
|
|
|
**Specific Concerns**:
|
|
- WASM sandbox escape vulnerabilities
|
|
- Gas exhaustion attacks
|
|
- Host function privilege escalation
|
|
- Stack overflow in recursive contracts
|
|
|
|
#### Transaction Processing (`crates/synor-types/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| Transaction structure | `src/transaction.rs` | Signature verification order |
|
|
| UTXO management | `src/utxo.rs` | Double-spend prevention |
|
|
| Script validation | `src/script.rs` | Opcode security |
|
|
|
|
### 2.3 Medium Priority
|
|
|
|
#### Network Layer (`crates/synor-network/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| P2P protocol | `src/service.rs` | Message validation, DoS vectors |
|
|
| Peer reputation | `src/reputation.rs` | Ban bypass, sybil resistance |
|
|
| Rate limiting | `src/rate_limit.rs` | Token bucket implementation |
|
|
| Sync protocol | `src/sync/` | Malicious peer handling |
|
|
|
|
**Specific Concerns**:
|
|
- Eclipse attack resistance
|
|
- Network partition detection accuracy
|
|
- Gossipsub topic amplification
|
|
|
|
#### Storage (`crates/synor-storage/`)
|
|
|
|
| Component | File | Focus Areas |
|
|
|-----------|------|-------------|
|
|
| Block storage | `src/block_store.rs` | Corruption recovery |
|
|
| UTXO set | `src/utxo_store.rs` | Consistency guarantees |
|
|
| Pruning | `src/pruning.rs` | Data availability after prune |
|
|
|
|
### 2.4 Lower Priority
|
|
|
|
#### RPC API (`crates/synor-rpc/`)
|
|
|
|
| Component | Focus Areas |
|
|
|-----------|-------------|
|
|
| JSON-RPC handlers | Input validation, injection |
|
|
| WebSocket | Connection limits, memory exhaustion |
|
|
| Rate limiting | Bypass prevention |
|
|
|
|
#### Governance (`crates/synor-governance/`)
|
|
|
|
| Component | Focus Areas |
|
|
|-----------|-------------|
|
|
| DAO voting | Vote weight manipulation |
|
|
| Treasury | Withdrawal limits, timelocks |
|
|
| Proposals | Execution safety |
|
|
|
|
#### Node Application (`apps/synord/`)
|
|
|
|
| Component | Focus Areas |
|
|
|-----------|-------------|
|
|
| Configuration | Secrets handling |
|
|
| Service orchestration | Race conditions |
|
|
| CLI wallet | Key storage security |
|
|
|
|
---
|
|
|
|
## 3. Out of Scope
|
|
|
|
The following are **not** in scope for the initial audit:
|
|
|
|
- Third-party dependencies (covered by cargo-audit)
|
|
- Web wallet frontend (separate web security audit)
|
|
- DevOps/infrastructure security
|
|
- Physical security of node operators
|
|
- Social engineering vectors
|
|
|
|
---
|
|
|
|
## 4. Threat Model
|
|
|
|
### 4.1 Adversary Capabilities
|
|
|
|
| Level | Description | Mitigations Expected |
|
|
|-------|-------------|---------------------|
|
|
| L1 | Remote attacker, no stake | Network protocol security |
|
|
| L2 | Minority miner (<33% hashrate) | Consensus security |
|
|
| L3 | Majority miner (>50% hashrate) | Finality guarantees |
|
|
| L4 | Quantum computer access | Dilithium3 signatures |
|
|
| L5 | Nation-state (future) | Quantum + classical resistance |
|
|
|
|
### 4.2 Key Security Properties
|
|
|
|
1. **Consensus Safety**: No conflicting finalized blocks
|
|
2. **Liveness**: Transactions confirm within reasonable time
|
|
3. **Censorship Resistance**: No single entity can block transactions
|
|
4. **Key Security**: Private keys protected from extraction
|
|
5. **Quantum Resistance**: Secure against future quantum computers
|
|
|
|
---
|
|
|
|
## 5. Prior Work & References
|
|
|
|
### Consensus
|
|
- PHANTOM/GHOSTDAG papers (Sompolinsky & Zohar)
|
|
- Kaspa implementation reference
|
|
- DAGKnight improvements
|
|
|
|
### Cryptography
|
|
- FIPS 204 (Dilithium) draft specification
|
|
- Ed25519 (RFC 8032)
|
|
- Bech32m (BIP-350)
|
|
- Argon2 (RFC 9106)
|
|
|
|
### Smart Contracts
|
|
- WASM specification
|
|
- Wasmtime security model
|
|
|
|
---
|
|
|
|
## 6. Deliverables Expected
|
|
|
|
1. **Full Report**: Detailed findings with severity ratings
|
|
2. **Executive Summary**: Non-technical overview
|
|
3. **Findings by Category**:
|
|
- Critical (immediate action required)
|
|
- High (fix before mainnet)
|
|
- Medium (fix within 30 days)
|
|
- Low (best practice improvements)
|
|
- Informational (suggestions)
|
|
|
|
4. **Proof of Concepts**: For any exploitable vulnerabilities
|
|
5. **Remediation Verification**: Re-check after fixes
|
|
|
|
---
|
|
|
|
## 7. Audit Timeline
|
|
|
|
| Phase | Duration | Description |
|
|
|-------|----------|-------------|
|
|
| Kickoff | 1 day | Scope review, access setup |
|
|
| Crypto Audit | 2 weeks | synor-crypto, synor-consensus |
|
|
| VM Audit | 1 week | synor-vm, contract security |
|
|
| Network Audit | 1 week | synor-network, P2P protocols |
|
|
| Report | 1 week | Findings documentation |
|
|
| Remediation | 2 weeks | Fix implementation |
|
|
| Verification | 3 days | Re-audit of fixes |
|
|
|
|
**Total**: ~7 weeks
|
|
|
|
---
|
|
|
|
## 8. Contact & Resources
|
|
|
|
### Repository Access
|
|
- Main repo: `github.com/g1-technologies/synor` (private until audit)
|
|
- Test vectors: `docs/test-vectors/`
|
|
- Architecture docs: `docs/architecture/`
|
|
|
|
### Points of Contact
|
|
- Technical Lead: [To be assigned]
|
|
- Security Lead: [To be assigned]
|
|
|
|
### Development Environment
|
|
- Rust 1.75+
|
|
- `wasm32-unknown-unknown` target
|
|
- All tests: `cargo test --workspace`
|
|
- Benchmarks: `cargo bench --workspace`
|
|
|
|
---
|
|
|
|
## 9. Previous Audits
|
|
|
|
None (first external audit)
|
|
|
|
---
|
|
|
|
## 10. Changelog
|
|
|
|
| Date | Version | Changes |
|
|
|------|---------|---------|
|
|
| 2026-01-08 | 1.0 | Initial scope document |
|
|
|
|
---
|
|
|
|
*Prepared for Phase 7: Production Readiness*
|