Audit staking
Audits Solidity staking and reward protocols for vulnerabilities including front-running first deposit to steal initial rewards, reward dilution via direct transfers, precision loss in reward calculations causing rounding to zero, flash deposit/withdraw griefing diluting rewards, update not called after reward distribution causing stale index, and balance caching issues during claims (project)From its SKILL.md
npx -y skills add auditmos/skills --skill audit-stakingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.3 KB, as published. Nobody here has run it
Staking & Reward Auditor
When to Use
- Auditing staking mechanisms, reward distribution, yield farming
- User mentions: staking, rewards, yield, farming, rewardPerToken, deposit, withdraw, claim, first depositor
- Analyzing reward calculations, index updates, share dilution
- Reviewing deposit/withdraw flows, precision handling
Audit Workflow
IMPORTANT: Announce skill usage at the start of analysis
Begin with: "I'm using the audit-staking skill to analyze this contract for staking and reward vulnerabilities..."
-
Scan for staking operations
- Search:
stake,deposit,withdraw,claim,rewardPerToken,totalSupply,balanceOf,earned,updateReward - Focus: reward calculations, first depositor, direct transfers, precision loss, flash actions
- Search:
-
Check against vulnerability patterns
- Reference
reference.mdfor complete checklist - Compare code against
example.md
- Reference
-
Validate exploitability
- Check access control first - grep for
onlyOwner|onlyAdmin|onlyGovernancemodifiers - Can non-privileged actors exploit? (first depositor steal, direct transfer dilution, flash griefing)
- Can direct transfers dilute rewards?
- Do small amounts round to zero?
- Can flash deposits/withdraws grief stakers?
- Is update called after distribution?
- Are balances cached correctly?
- Verify no compensating protections exist
- Downgrade severity if admin-only unless direct user impact
- Check access control first - grep for
-
Generate report
- Use deliverable template below
- Include reward theft/dilution analysis and PoC
- Rank by severity
Core Vulnerability Patterns
See reference.md for full checklist. Key patterns:
- Front-running first deposit → attacker steals initial WETH rewards via sandwich attack
- Reward dilution via direct transfer → sending tokens directly increases totalSupply without staking
- Precision loss in rewards → small stakes or frequent updates cause rewards rounding to zero
- Flash deposit/withdraw griefing → large instant deposits dilute rewards for existing stakers
- Update not called after distribution → stale index causes incorrect reward calculations
- Balance caching issues → claiming updates cached balance incorrectly
Code examples: See example.md
Severity Criteria
Critical: First depositor can steal all initial rewards, direct transfer dilution enabling theft, flash deposit/withdraw draining rewards, MUST be exploitable by non-privileged actors High: Precision loss causing rewards to round to zero for legitimate users, stale index after distribution, MUST be exploitable by non-privileged actors Medium: Suboptimal reward distribution timing, griefing via large flash actions without theft, admin-only reward configuration issues with user impact Low: Gas inefficiencies in reward calculations, missing events, admin-only parameter issues without immediate user impact
IMPORTANT: Admin-only reward functions (onlyOwner, onlyAdmin, onlyGovernance) are MEDIUM or LOW severity unless:
- Invalid reward parameters directly steal/brick user rewards
- Missing validation enables admin rug pull of staking pool
- Error cascades to all users immediately (e.g., division by zero in reward calculation)
False Positives - Do NOT Flag
- Protocols requiring minimum stake amounts (prevents dust)
- Reward tokens same as staking tokens by design
- Intentional admin-only initial deposit
- View functions with documented staleness
- Protocols with explicit front-running protection
Deliverable Format
MANDATORY: Before deliverable, verify each checklist.md item against codebase. Flag violations as findings.
Use template: templates/report-template.md
Each finding includes: severity, pattern #, file/lines, description, vulnerable code, reward theft analysis, PoC, remediation.
Key Principles
- Separate tokens - reward token must differ from staking token
- No direct transfers - track staked amounts separately from balances
- Precision protection - minimum stake, scale factors for small amounts
- Index updates - call updateReward before and after distribution
- Flash protection - time locks or minimum stake duration
- Balance integrity - careful caching during claims
Output Guidelines
DO:
- Reference specific lines and functions
- Provide reward theft scenarios with calculations
- Show PoCs demonstrating reward extraction
- Calculate precision loss magnitude
- Map update call timing
DON'T:
- Report intentional design choices (same token staking)
- Flag missing features with alternative mechanisms
- Ignore precision implications (critical for accuracy)
- Miss edge cases (first deposit, zero stakes)