🛡️ Solana Smart Contract Security Toolkit (solsec)
A comprehensive security analysis tool for Solana smart contracts that helps developers identify vulnerabilities before deployment through static analysis and fuzz testing.
✨ Features
- Static Analysis: Detect common vulnerabilities in Anchor and native Rust programs
- Fuzz Testing: Auto-generate fuzzing harnesses from IDL files
- Multiple Report Formats: JSON, HTML, Markdown, and CSV outputs
- Plugin System: Extensible architecture for custom security rules
- CI/CD Integration: GitHub Actions support with automated security checks
- Professional Reports: Beautiful HTML reports with severity rankings and actionable recommendations
🚀 Quick Start
Installation
From Crates.io (Recommended)
From Source
Basic Usage
# Scan a Solana program for security issues
# Run fuzz testing
# Generate an HTML report
📖 Commands
solsec scan
Run static analysis on your Solana smart contracts.
solsec fuzz
Run fuzz testing on smart contracts.
solsec report
Generate human-readable reports from analysis results.
solsec plugin
Manage security rule plugins.
🔧 Configuration
Create a solsec.toml configuration file:
# Enable/disable specific rules
= [
"integer_overflow",
"missing_signer_check",
"unchecked_account",
"reentrancy"
]
= []
# Rule-specific settings
[]
[]
= ["test_*", "mock_*"]
[]
= ["transfer", "withdraw"]
🔍 Built-in Security Rules
| Rule | Severity | Description |
|---|---|---|
integer_overflow |
Medium | Detects potential integer overflow vulnerabilities |
missing_signer_check |
High | Identifies missing signer validation in instruction handlers |
unchecked_account |
Critical | Finds accounts used without proper validation |
reentrancy |
High | Detects potential reentrancy vulnerabilities |
🔌 Plugin Development
Create custom security rules by implementing the Rule trait:
use ;
use Path;
use Result;
;
// Plugin interface
pub extern "C"
pub extern "C"
Build your plugin as a dynamic library:
🤖 CI/CD Integration
GitHub Actions
Add the following to your .github/workflows/security.yml:
name: Security Scan
on:
push:
branches:
pull_request:
branches:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install solsec
run: |
curl -L https://github.com/hasip-timurtas/solsec/releases/latest/download/solsec-linux-x86_64.tar.gz | tar xz
sudo mv solsec /usr/local/bin/
- name: Run security scan
run: |
solsec scan ./programs --output ./security-results --format json
solsec report ./security-results --output ./security-report.html
- name: Upload security report
uses: actions/upload-artifact@v3
with:
name: security-report
path: |
./security-results/
./security-report.html
- name: Fail on critical issues
run: |
if [ -f ./security-results/*.json ]; then
critical_count=$(jq '[.[] | select(.severity == "critical")] | length' ./security-results/*.json)
if [ "$critical_count" -gt 0 ]; then
echo "❌ Critical security issues found!"
exit 1
fi
fi
Pre-commit Hook
#!/bin/sh
# .git/hooks/pre-commit
if [; then
critical_count=
if [; then
fi
fi
📊 Report Examples
HTML Report
Beautiful, interactive HTML reports with:
- Executive summary with issue counts by severity
- Detailed findings with code snippets
- Actionable recommendations
- Responsive design for all devices
JSON Report
Machine-readable format perfect for:
- CI/CD pipeline integration
- Custom tooling and analysis
- Data processing and metrics
Markdown Report
Developer-friendly format for:
- README documentation
- Pull request comments
- Documentation sites
🛠️ Development
Building from Source
Running Tests
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📚 Examples
Check out the examples/ directory for:
- Sample Solana programs with vulnerabilities
- Custom plugin implementations
- CI/CD configuration templates
- Integration with various development workflows
🤝 Community
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: Solana Security Community
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- The Solana Foundation for supporting security tooling
- The Rust security community for best practices
- Contributors and early adopters
⚠️ Important: This tool helps identify potential security issues but does not guarantee complete security. Always conduct thorough testing and consider professional security audits for production applications.
Built with ❤️ by Hasip Timurtas