omermaksutii/rugproof/dos-vectors
Claude Code and agent skill by omermaksutii/rugproof
- community
Checking that the SKILL.md file is still in the repository.
Detect denial-of-service vectors — unbounded loops, gas griefing, push-payment chokepoints, block-stuffing exposure, revert-on-receive blocking. Activate on loops over user-controlled arrays, batch withdrawals, push-style payouts, queues, auctions with "highest-bidder" refunds, large airdrops.
Install
npx vskill@latest install omermaksutii/rugproof/dos-vectorsSKILL.md
DoS vector detection
When this applies
- Loops iterating over user-supplied or unbounded arrays
- Push-style payment patterns (contract pushes value to N recipients)
- Auctions that refund the previous highest bidder via direct transfer
- Mass
claim()/distribute()functions - Queues / stacks of withdrawals
- Functions whose gas cost scales with
nusers /ntokens - L2 forced inclusion mechanics
Detection patterns
Unbounded loop over user-controlled array (CRITICAL-HIGH)
Worse if attacker can grow holders (e.g. anyone can register).
Push-payment with revert-on-receive (HIGH)
Use pull-payments: store credits, let users withdraw.
.transfer (2300 gas) blocks smart-wallet receivers (MEDIUM-HIGH)
Smart wallets (Gnosis Safe, Argent) have fallback functions that need >2300 gas. Their users can't receive — effectively DoS for them.
Gas griefing via large calldata (HIGH on relayers)
Relayer pays gas; user provides bloated calldata to grief. Cap calldata length or charge per-byte.
external reentrant fee-loop DoS (HIGH)
Withdrawals from each strategy in a vault — if any strategy reverts, the entire withdraw fails. Use try/catch per strategy.
Block-stuffing exposure (MEDIUM)
Auction ending exactly at block.number == N lets an attacker fill the block to prevent your bid. Use deadline windows + sniping protection (extend on late bid).
Underflow-revert DoS on legacy 0.7.x code (MEDIUM)
Unchecked subtraction in Solidity ≥0.8 reverts on underflow — function permanently broken if state lands in that range.
selfdestruct to force ether on a contract that asserts address(this).balance == X (HIGH)
Anyone can selfdestruct to your contract and break a balance-equality check. Don't rely on address(this).balance equality. (Note EIP-6780 changed selfdestruct semantics — see [[selfdestruct-eip6780]].)
Forced inclusion on Arbitrum / Optimism (LOW-MEDIUM)
On rollups, anyone can force-include a tx via L1 — affects "exclusive sequencer" assumptions in auctions.
Severity rubric
| Pattern | Severity | |
|---|---|---|
| Unbounded loop attacker can grow → permanent function failure | Critical | |
Push-payment to attacker-controlled receive() blocks core flow | High | |
| Per-strategy revert blocks entire vault withdraw | High | |
Smart-wallet receivers can't get .transfer payouts | Medium-High | |
| Auction block-stuffing | Medium | |
| Balance-equality reliance | High | |
| Force-include L2 sequencer assumption | Medium | |
| Calldata gas-grief on relayer | Medium | |
| Bounded-but-large loop costing >block gas | Medium |
Remediation patterns
- Pull over push — credit balances, users withdraw.
- Per-iteration isolation — try/catch around per-element work in batch ops.
- Batch caps —
require(arr.length <= MAX). - Pagination —
distribute(start, end). - Use `call` not `transfer` — forward all gas, then check return.
- Don't rely on `address(this).balance` equality — track expected balance separately.
- Auction extensions — extend deadline on late bid to defeat block-stuffing.
False-positive notes
- Loops over a contract-controlled small bounded array (e.g. fixed 3 strategies) are fine — note the bound.
- Internal admin functions where DoS only hurts the admin → Info.
Related
- [[unchecked-calls]]
- [[selfdestruct-eip6780]]
- [[reentrancy]]
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/dos-vectors/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/omermaksutii/rugproof/dos-vectors)