160 lines
3.6 KiB
Markdown
160 lines
3.6 KiB
Markdown
|
|
# 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)
|
||
|
|
|
||
|
|
1. **Reentrancy**: Unauthorized external calls
|
||
|
|
2. **Integer Overflow**: Arithmetic operations
|
||
|
|
3. **Access Control**: Unauthorized access
|
||
|
|
4. **Unchecked External Calls**: Missing error handling
|
||
|
|
|
||
|
|
### High (Score Impact: -10 to -20)
|
||
|
|
|
||
|
|
1. **Gas Optimization**: Inefficient code
|
||
|
|
2. **Timestamp Dependence**: Block timestamp usage
|
||
|
|
3. **Front-running**: Transaction ordering
|
||
|
|
4. **Denial of Service**: Resource exhaustion
|
||
|
|
|
||
|
|
### Medium (Score Impact: -5 to -10)
|
||
|
|
|
||
|
|
1. **Code Quality**: Best practices
|
||
|
|
2. **Documentation**: Missing comments
|
||
|
|
3. **Error Handling**: Incomplete error handling
|
||
|
|
4. **Event Logging**: Missing events
|
||
|
|
|
||
|
|
### Low (Score Impact: -1 to -5)
|
||
|
|
|
||
|
|
1. **Naming Conventions**: Style issues
|
||
|
|
2. **Code Duplication**: Repeated code
|
||
|
|
3. **Unused Variables**: Dead code
|
||
|
|
4. **Style Issues**: Formatting
|
||
|
|
|
||
|
|
## Improving Scores
|
||
|
|
|
||
|
|
### Quick Wins
|
||
|
|
|
||
|
|
1. **Fix Critical Issues**: Address reentrancy, overflow
|
||
|
|
2. **Add Access Control**: Implement proper permissions
|
||
|
|
3. **Error Handling**: Add require/assert statements
|
||
|
|
4. **Events**: Emit events for important actions
|
||
|
|
|
||
|
|
### Medium-Term
|
||
|
|
|
||
|
|
1. **Code Review**: Regular security reviews
|
||
|
|
2. **Testing**: Comprehensive test coverage
|
||
|
|
3. **Documentation**: Document security decisions
|
||
|
|
4. **Best Practices**: Follow Solidity best practices
|
||
|
|
|
||
|
|
### Long-Term
|
||
|
|
|
||
|
|
1. **Security Audits**: Regular professional audits
|
||
|
|
2. **Formal Verification**: Mathematical proofs
|
||
|
|
3. **Bug Bounties**: Community security testing
|
||
|
|
4. **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:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# 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
|
||
|
|
|
||
|
|
## References
|
||
|
|
|
||
|
|
- [SolidityScan Documentation](https://docs.solidityscan.com)
|
||
|
|
- [Security Scanning Process](docs/SECURITY_SCANNING.md)
|
||
|
|
- [Security Best Practices](docs/SECURITY.md)
|
||
|
|
|