3.6 KiB
3.6 KiB
Security Score Interpretation
Overview
This document explains how to interpret security scores from various scanning tools.
SolidityScan Scores
Score Range: 0-100
90-100 (Excellent)
- Production ready
- Minimal security risks
- Follows best practices
- No critical vulnerabilities
70-89 (Good)
- Minor improvements recommended
- Some security concerns
- Should address medium-severity issues
- Generally safe for production
50-69 (Fair)
- Should address issues before production
- Multiple security concerns
- Review high-severity issues
- Consider security audit
0-49 (Poor)
- Must fix before production
- Critical security vulnerabilities
- Significant security risks
- Requires immediate attention
Common Vulnerabilities
Critical (Score Impact: -20 to -50)
- Reentrancy: Unauthorized external calls
- Integer Overflow: Arithmetic operations
- Access Control: Unauthorized access
- Unchecked External Calls: Missing error handling
High (Score Impact: -10 to -20)
- Gas Optimization: Inefficient code
- Timestamp Dependence: Block timestamp usage
- Front-running: Transaction ordering
- Denial of Service: Resource exhaustion
Medium (Score Impact: -5 to -10)
- Code Quality: Best practices
- Documentation: Missing comments
- Error Handling: Incomplete error handling
- Event Logging: Missing events
Low (Score Impact: -1 to -5)
- Naming Conventions: Style issues
- Code Duplication: Repeated code
- Unused Variables: Dead code
- Style Issues: Formatting
Improving Scores
Quick Wins
- Fix Critical Issues: Address reentrancy, overflow
- Add Access Control: Implement proper permissions
- Error Handling: Add require/assert statements
- Events: Emit events for important actions
Medium-Term
- Code Review: Regular security reviews
- Testing: Comprehensive test coverage
- Documentation: Document security decisions
- Best Practices: Follow Solidity best practices
Long-Term
- Security Audits: Regular professional audits
- Formal Verification: Mathematical proofs
- Bug Bounties: Community security testing
- Continuous Improvement: Ongoing security work
Score Tracking
Baseline
Establish baseline scores for:
- New contracts: Target 90+
- Existing contracts: Improve gradually
- Critical contracts: Must be 95+
Trends
Monitor score trends:
- Improving: Good progress
- Stable: Maintain current level
- Declining: Investigate and fix
Goals
Set score goals:
- Q1: Average score 80+
- Q2: Average score 85+
- Q3: Average score 90+
- Q4: Average score 95+
Integration with CI/CD
Score Thresholds
Set minimum score thresholds:
# In CI/CD pipeline
- name: Check Security Score
run: |
SCORE=$(solidityscan --api-key $API_KEY --project-path . --format json | jq '.score')
if [ $SCORE -lt 80 ]; then
echo "Security score $SCORE is below threshold 80"
exit 1
fi
Blocking Deployments
Block deployments if:
- Score < 70 for critical contracts
- Score < 80 for new contracts
- Critical vulnerabilities present
Reporting
Dashboard
View scores in:
- SolidityScan dashboard
- Blockscout UI
- CI/CD reports
- Security dashboard
Alerts
Set up alerts for:
- Score drops below threshold
- New critical vulnerabilities
- Score improvements
- Scan failures