Agent skill

Web3 Role Misconfiguration Case Study

by tradecatlabs in tradecatlabs/vibe-coding-cn

Worked bug bounty case study of a yield aggregator: target scoring, fund-flow mapping, prior audit triage and a verdict per bug class, with role misconfiguration in focus.

MITAuto-check passedSecurity

Install Web3 Role Misconfiguration Case Study

skills CLI
$ npx skills add tradecatlabs/vibe-coding-cn --skill web3-case-study-role-misconfig -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tradecatlabs/vibe-coding-cn web3-case-study-role-misconfig --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tradecatlabs/vibe-coding-cn.git skills-src && mkdir -p .claude/skills && cp -r skills-src/research/vibe-cybersecurity-cn/skills/web3-bug-bounty-hunting/web3-case-study-role-misconfig .claude/skills/web3-case-study-role-misconfig && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
web3-case-study-role-misconfig
GitHub stars
17k
Used in
2 other repos
Token cost
~3.5k tokens
SKILL.md length
1,017 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

Worked bug bounty case study of a yield aggregator: target scoring, fund-flow mapping, prior audit triage and a verdict per bug class, with role misconfiguration in focus.

  • Works in 10 steps: Accounting Desync — 2 FINDINGS → Access Control — 1 FINDING (CRITICAL/HIGH) → Incomplete Path — Known (Risk Accepted) → …
  • Studying a worked example of scoring a Web3 bug bounty target
  • SKILL.md covers TARGET PROFILE (Anonymized), ARCHITECTURE + FUND FLOW, KNOWN ISSUES (Risk Accepted by… and BUG CLASS VERDICTS, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

This case study applies a ten-class Web3 bug bounty method to an anonymized yield aggregator, with access control and role misconfiguration as the featured class. It opens with a target profile covering protocol type, maximum bounty, TVL, the core contracts Vault.sol and RewardsDistributor.sol, program age and prior audits, then a scorecard that totals 8 out of 10 and recommends hunting.

It then maps the architecture and fund flow from deposit through lending, harvest and swap to the reward token, lists the key state variables, and records known issues from two earlier audits that the team accepted as risk and that should not be reported again. Bug class verdicts follow, beginning with accounting desync. The reasoning highlights a prior audit that flagged a missing role check without confirming the role was never granted, which marks where to look.

When your agent uses it

  • Studying a worked example of scoring a Web3 bug bounty target
  • Learning how prior audit findings accepted as risk guide where to look
  • Walking through all ten bug classes against one yield aggregator

Example prompts

  • “Walk me through how the yield aggregator case study scores its target.”
  • “Using this case study as a model, draft a verdict table by bug class for our vault contracts.”
  • “Explain why the role misconfiguration matters in the aggregator case study.”

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Accounting Desync — 2 FINDINGS
  2. Access Control — 1 FINDING (CRITICAL/HIGH)
  3. Incomplete Path — Known (Risk Accepted)
  4. Off-by-One — CLEAN
  5. Oracle Price — CLEAN
  6. ERC4626 Vaults — NOT APPLICABLE
  7. Reentrancy — CLEAN
  8. Flash Loan — CLEAN (Economically)
  9. Signature Replay — NOT APPLICABLE
  10. Proxy/Upgrade — NOT APPLICABLE

What it can do on your machine

Read from SKILL.md and the folder at commit 5b76a8f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are solidity and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Web3 Role Misconfiguration Case Study loads about 3.5k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,017 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from tradecatlabs/vibe-coding-cn at commit 5b76a8f, republished under its MIT licence (© tradecatlabs). 1,017 words, ~3,499 tokens.

Download SKILL.mdSave it as .claude/skills/web3-case-study-role-misconfig/SKILL.md (or your agent's skills folder).
name
web3-case-study-role-misconfig
description
Case study - role misconfiguration bug class applied to a yield aggregator protocol. Use as a template for applying all 10 bug classes to a single target.
Contains
architecture walkthrough, all bug class verdicts, 2 findings (DISTRIBUTOR_ROLE never granted, dust harvest DoS), complete PoC templates, report drafts…

CASE STUDY: ROLE MISCONFIGURATION IN A YIELD AGGREGATOR

Bug Class: Access Control | Severity: Critical/Medium | Payout Range: $10K–$50K This file shows how to apply the full 10-class methodology to a real yield aggregator target.


TARGET PROFILE (Anonymized)

FieldValue
Protocol TypeYield aggregator — stablecoin → lending protocol → harvest → DEX → reward token
Max Bounty$50K (Critical)
TVLLow (fresh program, under $100K)
Core ContractsVault.sol, RewardsDistributor.sol
Program Age~5 days when hunted (fresh = low competition)
Prior AuditsFirm A (16 findings, all Risk Accepted) + Firm B (18 findings, all Risk Accepted)

Scorecard: Max bounty (+2) + custom math (+1) + recent code (+1) + known prior audits (+1) + public source (+1) + program new (+2) = 8/10 → HUNT

Why this scores high: Fresh program on a live bounty platform + prior audits that accepted all risk = team is aware of issues but hasn't patched them. Hunt for what auditors missed or flagged but accepted.


ARCHITECTURE + FUND FLOW

User deposits Stablecoin
    ↓ deposit(uint256 amount)
Vault.sol stores:
  - deposits[user] += amount
  - totalDeposited += amount
  - depositTimestamp[user] = block.timestamp
    ↓ safeTransferFrom(user, address(this), amount)
    ↓ lendingProtocol.supply(stablecoin, amount, address(this), 0)
  Interest-bearing token accrues in Vault.sol balance
    ↓ (periodic) _performHarvest()
  aToken balance > totalDeposited + DUST_THRESHOLD
    ↓ lendingProtocol.withdraw(stablecoin, harvestAmount - 1, address(this))
    ↓ dex.exactInputSingle(stablecoin → rewardToken)
    ↓ RewardsDistributor.distribute(rewardToken, amount)
  RewardsDistributor tracks:
  - cumulativeRewardPerShare updates
  - users can call claimFor(user) to collect rewardToken

User withdraws:
    ↓ withdraw(uint256 amount)
  if block.timestamp < depositTimestamp[user] + LOCK_PERIOD:
    withdrawFee applies (e.g. 0.5%)
  lendingProtocol.withdraw(stablecoin, amount, user)

Key state variables:

  • deposits[user] — user principal (stablecoin)
  • totalDeposited — sum of all principals
  • depositTimestamp[user] — last deposit time (affects withdrawal fee)
  • cumulativeRewardPerShare — reward index in RewardsDistributor
  • lastClaimedReward[user] — user's last reward index

KNOWN ISSUES (Risk Accepted by Team — Do NOT Submit)

Firm A Findings (16 total, all Risk Accepted)

All standard: missing events, gas optimizations, reentrancy guards present (CEI followed), centralization risks (owner can pause), single oracle (DEX swap is operational, not security-critical).

Firm B Findings (18 total, all Risk Accepted)

Including:

  • HAL-01: withdrawFee can be changed by owner (centralization)
  • HAL-05: deposit() resets depositTimestamp even on partial top-ups → extends lock period for existing deposits
  • HAL-08: Missing check for DISTRIBUTOR_ROLE being set (flagged but did NOT verify it was never granted)
  • Various gas and event issues

Pattern: Firm B flagged "missing check" but didn't verify the role was actually ungranted. This is the gap to exploit.


BUG CLASS VERDICTS

1. Accounting Desync — 2 FINDINGS

Finding 1: The -1 Stranding Pattern

solidity
// In _performHarvest():
harvestAmount = aToken.balanceOf(address(this)) - totalDeposited - 1; // strands 1 wei

The hardcoded -1 strands 1 wei of stablecoin per harvest permanently. Over thousands of harvests, this accumulates. Severity: LOW/INFORMATIONAL (no user loss, just protocol dust accumulation).

Finding 2: Dust Harvest DoS ← VALID MEDIUM

Scenario: Accumulated harvest amount is very tiny (< DEX minimum swap)
1. harvest() calls dex.exactInputSingle(stablecoin → rewardToken)
2. DEX returns 0 (amount too small to produce any output)
3. RewardsDistributor.distribute(0) is called
4. If distribute() reverts on 0 amount → harvest is permanently frozen
5. Users can still withdraw principal but all future yield is lost

Verification: Check if distribute(0) reverts. Check DEX minimum swap threshold.
2. Access Control — 1 FINDING (CRITICAL/HIGH)

Finding: DISTRIBUTOR_ROLE Never Granted ← MAIN FINDING

solidity
// RewardsDistributor.sol
bytes32 public constant DISTRIBUTOR_ROLE = keccak256("DISTRIBUTOR_ROLE");

function claimFor(address user) external {
    require(hasRole(DISTRIBUTOR_ROLE, msg.sender), "Not distributor");
    // ... distribute rewardToken to user
}

Problem: DISTRIBUTOR_ROLE is defined but NEVER granted in the constructor or any initialization function. No address holds this role. claimFor() can never succeed — all reward tokens are permanently locked.

How Firm B missed it: They flagged "missing check for whether role is set" — but their fix recommendation was "add a require that checks the role exists." They didn't verify that getRoleMemberCount(DISTRIBUTOR_ROLE) == 0 on the live deployment.

Severity Assessment:

  • If harvest HAS already happened: CRITICAL (funds locked forever)
  • If harvest never happened yet: HIGH (permanent lock when it does happen)
  • Impact × Likelihood × Exploitability: 3 × 3 × 3 = 27 → CRITICAL

Verification commands:

bash
# Check if any address has DISTRIBUTOR_ROLE (replace with actual address)
cast call <REWARDS_DISTRIBUTOR_ADDR> \
  "getRoleMemberCount(bytes32)(uint256)" \
  "$(cast keccak 'DISTRIBUTOR_ROLE')"
# Expected: 0 = confirmed bug

# Alternative: Etherscan → Events → filter "RoleGranted"
# If no RoleGranted events with DISTRIBUTOR_ROLE hash = confirmed
3. Incomplete Path — Known (Risk Accepted)

Firm B HAL-05: deposit() resets depositTimestamp[user] even on partial top-ups, extending the lock period for all existing deposits. Risk Accepted by team.

4. Off-by-One — CLEAN

All boundary operators (>=, <) in Vault.sol and RewardsDistributor.sol are correct.

5. Oracle Price — CLEAN

Protocol does NOT use price oracles for security decisions (no lending, no liquidation, no collateral). The DEX swap is operational (converting yield), not security-critical. MEV/sandwich risk exists but is a griefing/efficiency issue, not a theft vulnerability.

6. ERC4626 Vaults — NOT APPLICABLE

Uses a custom 1:1 share model, NOT ERC4626:

  • deposits[user] tracks exact principal
  • No share price, no share-based rounding
  • Transfers between users are blocked
  • First depositor inflation attack does NOT apply
7. Reentrancy — CLEAN

Follows CEI (Checks-Effects-Interactions) correctly:

  • deposits[user] += amount BEFORE lendingProtocol.supply()
  • deposits[user] -= amount BEFORE lendingProtocol.withdraw()
  • Missing nonReentrant guard, but CEI makes it safe. Not submittable without PoC.
Show full SKILL.md (427 more words)Show less
8. Flash Loan — CLEAN (Economically)

Flash loan attack would attempt: deposit → dilute harvest → withdraw to steal yield. The withdrawFee makes this unprofitable:

  • Attacker deposits $1M → harvest dilutes → attacker gains $0 extra yield
  • But: attacker pays withdrawal fee to exit
  • Net: negative expected value → NOT PROFITABLE
9. Signature Replay — NOT APPLICABLE

No signature-based functions, no EIP-2612 permit, no meta-transactions.

10. Proxy/Upgrade — NOT APPLICABLE

Not upgradeable proxies. No proxy pattern.


WHAT TO SUBMIT

SUBMIT (2 findings):

Finding 1 — CRITICAL/HIGH:

Title: DISTRIBUTOR_ROLE never granted in RewardsDistributor.sol,
       permanently locking all reward tokens

Root Cause: DISTRIBUTOR_ROLE is defined but grantRole() is never called
            in constructor or initialization. No address holds this role.

Impact: All rewards distributed by harvest() are permanently locked —
        claimFor() always reverts.
        Users receive zero yield despite depositing and paying withdrawFee.

Attack Path: Not an attack — passive failure. Any harvest → rewards locked forever.

Severity: Critical (if harvest has occurred) / High (if not yet)

Finding 2 — MEDIUM:

Title: _performHarvest() dust harvest causes permanent DoS on yield distribution

Root Cause: When accumulated yield rounds to < DEX minimum swap amount,
            exactInputSingle() returns 0 output. distribute(0) may revert or
            permanently advance the reward index with no rewards.

Impact: After a dust harvest, all subsequent harvests may fail permanently.

Severity: Medium (requires specific conditions but permanently impacts yield)
DO NOT SUBMIT:
  • The -1 stranding (informational, design choice)
  • depositTimestamp reset (Risk Accepted by team)
  • Missing nonReentrant (CEI is followed; no PoC = no submission)
  • Owner centralization (excluded by design in Immunefi SC programs)
  • Any of the already-acknowledged findings from prior audits

COMPLETE POC TEMPLATE: ROLE NEVER GRANTED

solidity
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import "forge-std/Test.sol";
import "forge-std/console.sol";

interface IRewardsDistributor {
    function DISTRIBUTOR_ROLE() external view returns (bytes32);
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleMemberCount(bytes32 role) external view returns (uint256);
    function claimFor(address user) external;
}

contract RoleNeverGrantedTest is Test {
    // Replace with actual deployed address from target
    address constant REWARDS_DISTRIBUTOR = address(0xYOUR_TARGET_ADDRESS);

    IRewardsDistributor distributor;

    function setUp() public {
        // Fork at current block
        vm.createSelectFork(vm.envString("MAINNET_RPC_URL"));
        distributor = IRewardsDistributor(REWARDS_DISTRIBUTOR);
    }

    function testDistributorRoleNeverGranted() public {
        bytes32 DISTRIBUTOR_ROLE = distributor.DISTRIBUTOR_ROLE();

        uint256 memberCount = distributor.getRoleMemberCount(DISTRIBUTOR_ROLE);
        console.log("Addresses with DISTRIBUTOR_ROLE:", memberCount);

        // Should be 0 — proving no one can call claimFor()
        assertEq(memberCount, 0, "DISTRIBUTOR_ROLE has 0 members (confirmed bug)");

        // Verify claimFor() reverts for any user
        address testUser = address(0x1234);
        vm.expectRevert(); // "AccessControl: account does not have role"
        distributor.claimFor(testUser);

        console.log("CONFIRMED: claimFor() reverts for all users.");
        console.log("All rewards permanently locked.");
    }
}

Run:

bash
forge test --match-test testDistributorRoleNeverGranted -vvvv \
  --fork-url $MAINNET_RPC_URL

Expected output:

Addresses with DISTRIBUTOR_ROLE: 0
CONFIRMED: claimFor() reverts for all users.
All rewards permanently locked.

[PASS] testDistributorRoleNeverGranted()

REPORT TEMPLATE

Title: Missing DISTRIBUTOR_ROLE grant permanently locks all rewards for all users

Bug Description: RewardsDistributor.sol defines DISTRIBUTOR_ROLE and requires it to call claimFor(). However, grantRole(DISTRIBUTOR_ROLE, ...) is never called in the constructor, any initialization function, or any privileged setter. No address holds this role. claimFor() always reverts.

The Vault contract calls RewardsDistributor.distribute() after each harvest, successfully depositing reward tokens into the distributor. However, these tokens can never be claimed — permanently locked.

Root Cause: Constructor is missing grantRole(DISTRIBUTOR_ROLE, vaultContract).

Impact: All yield earned by all depositors is permanently locked in RewardsDistributor.sol. Users cannot receive any return from their deposits.

Impact category: Permanent freezing of funds

Proof of Concept: [Run PoC above against deployed contract]

Remediation: Add grantRole(DISTRIBUTOR_ROLE, address(vault)) in RewardsDistributor constructor, OR add a setDistributor(address) function callable only by admin.


VALIDATION CHECKLIST (7-Question Gate)

QuestionDISTRIBUTOR_ROLEDust Harvest DoS
Can attacker use it NOW?Yes (passive — already locked)Yes (needs small harvest)
Impact in program's list?Permanent freezing of funds ✓Temporary/permanent DoS ✓
In-scope contract?RewardsDistributor.sol ✓Vault.sol ✓
Requires admin access?No — passive ✓No — anyone can trigger ✓
Already known/acknowledged?No ✓No ✓
Economically viable?Yes — passive lock ✓Yes — dust accumulates ✓
Already public?No ✓No ✓
VERDICTSUBMITSUBMIT

LESSONS: WHAT TO LOOK FOR ON SIMILAR TARGETS

This pattern (role defined, never granted) appears frequently in:

  1. Any contract using OpenZeppelin AccessControl — check every bytes32 public constant *_ROLE — verify each one has a corresponding grantRole() call in constructor
  2. Distributor/reward contracts — these are often deployed separately and the grant is "supposed to happen" during deployment setup
  3. Contracts with multiple initialization steps — if setup requires calling multiple functions in sequence, the grant is often missed

Grep to find candidates:

bash
# Find all role definitions
grep -r "bytes32 public constant.*ROLE" ./src/

# Verify each role has a grantRole call
grep -r "grantRole" ./src/

# If roles > grantRole calls → investigate each missing grant

Protocols to check for this pattern: Any protocol where RewardsDistributor, FeeDistributor, YieldDistributor, or Distributor is a separate contract from the main vault.


→ NEXT: 08-ai-tools.md

© tradecatlabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in research/vibe-cybersecurity-cn/skills/web3-bug-bounty-hunting/web3-case-study-role-misconfig of tradecatlabs/vibe-coding-cn.

Open the folder on GitHubat commit 5b76a8f

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in tradecatlabs/vibe-coding-cn, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Web3 Role Misconfiguration Case Study next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Web3 Role Misconfiguration Case Study compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Web3 Role Misconfiguration Case Study this skilltradecatlabs/vibe-coding-cn17k2 repos~3.5kAutomated safety check: PassMIT
Web3 Smart Contract Auditawarexone/Agentic-Bug-Hunter5.3k3 repos~4.5kAutomated safety check: PassMIT
Smart Contract Auditelophanto/EloPhanto106—~2.7kAutomated safety check: PassCustom licence
Solidity Vulnerability Scanneralt-research2/SolidityGuard104—~1.6kAutomated safety check: NotesCustom licence
Solidity Securityccashwell/evm-cortex131—~1.5kAutomated safety check: PassMIT
Pashov Audit Pipelineccashwell/evm-cortex131—~5.5kAutomated safety check: PassMIT

Similar skills

  • Web3 Smart Contract Audit

    awarexone/Agentic-Bug-Hunter

    Guides smart contract audits and bounty target selection with ten DeFi bug classes, kill signals, a Foundry PoC template and grep patterns.

    5.3k GitHub starsUsed in 3 repos~4.5k tokens
    SecurityAuto-check passed
  • Smart Contract Audit

    elophanto/EloPhanto

    A skill your agent uses when reviewing a Solidity, Vyper, or Rust (Solana/Anchor) smart contract for paid audit work or pre-launch sanity check.

    106 GitHub stars~2.7k tokensUpdated 9 days ago
    SecurityAuto-check passed
  • Solidity Vulnerability Scanner

    alt-research2/SolidityGuard

    Comprehensive Solidity contract security scanner detecting 104 vulnerability patterns across reentrancy, access control, arithmetic, DeFi, proxy, and token categories.

    104 GitHub stars~1.6k tokensUpdated 4 mo ago
    Backend & APIsAuto-check: notes
  • Solidity Security

    ccashwell/evm-cortex

    Security-focused Solidity development patterns. An agent skill from ccashwell/evm-cortex.

    131 GitHub stars~1.5k tokensUpdated 10 days ago
    Backend & APIsAuto-check passed
  • Pashov Audit Pipeline

    ccashwell/evm-cortex

    A skill your agent uses when performing a comprehensive smart contract security audit.

    131 GitHub stars~5.5k tokensUpdated 10 days ago
    Backend & APIsAuto-check passed
  • Fizz

    pashov/skills

    Generate Echidna/Medusa-compatible Solidity fuzz suites from Foundry or Hardhat projects.

    1.2k GitHub starsUsed in 2 repos~11k tokens
    SecurityAuto-check passed

More from tradecatlabs/vibe-coding-cn

All 17 skills in this repo
  • Auto Skill Builder

    tradecatlabs/vibe-coding-cn

    Meta-skill that turns docs, APIs, code or specs into a reusable skill with references and a quality gate, and refactors skills that are unclear or misfire.

    17k GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Web3 Smart Contract Grep Arsenal

    tradecatlabs/vibe-coding-cn

    A master set of ten grep command blocks that surface likely vulnerability classes in Solidity source within the first 30 minutes of auditing a new protocol.

    17k GitHub starsUsed in 2 repos~3.3k tokens
    Auto-check passed
  • Auto tmux Operator

    tradecatlabs/vibe-coding-cn

    Operates tmux sessions like an administrator: reads pane output, sends keys, inspects many panes at once, and coordinates multiple AI terminals through a swarm state script, built on oh-my-tmux.

    17k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Web3 Bug Bounty AI Tools

    tradecatlabs/vibe-coding-cn

    A selection guide to AI-driven tools for Web3 bug bounty work, from autonomous web pentesters to smart contract bug finders, with notes on authorization.

    17k GitHub starsUsed in 2 repos~3.9k tokens
    Auto-check: warnings
  • Runs Slither and Mythril against Solidity contracts to find reentrancy, overflow and access-control bugs before mainnet deployment, then triages and reports findings.

    17k GitHub starsUsed in 1 repo~738 tokens
    Auto-check passed
  • Math Computation

    tradecatlabs/vibe-coding-cn

    Runs reproducible math computations and counterexample searches with SymPy, NumPy and mpmath, logging evidence without presenting results as proofs.

    17k GitHub stars~881 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Web3 Role Misconfiguration Case Study

What does Web3 Role Misconfiguration Case Study do?

Worked bug bounty case study of a yield aggregator: target scoring, fund-flow mapping, prior audit triage and a verdict per bug class, with role misconfiguration in focus. This case study applies a ten-class Web3 bug bounty method to an anonymized yield aggregator, with access control and role misconfiguration as the featured class.sol, program age and prior audits, then a scorecard that totals 8 out of 10 and recommends hunting.

When should I use Web3 Role Misconfiguration Case Study?

Web3 Role Misconfiguration Case Study fits situations like: studying a worked example of scoring a Web3 bug bounty target; learning how prior audit findings accepted as risk guide where to look; walking through all ten bug classes against one yield aggregator.

How do I install Web3 Role Misconfiguration Case Study in Claude Code?

Run `npx skills add tradecatlabs/vibe-coding-cn --skill web3-case-study-role-misconfig -a claude-code`. Or copy the skill folder (research/vibe-cybersecurity-cn/skills/web3-bug-bounty-hunting/web3-case-study-role-misconfig in tradecatlabs/vibe-coding-cn) into .claude/skills/web3-case-study-role-misconfig in your project. Claude Code loads it when a task matches its description.

How do I install Web3 Role Misconfiguration Case Study in Codex?

Run `npx skills add tradecatlabs/vibe-coding-cn --skill web3-case-study-role-misconfig -a codex`. Or copy the skill folder (research/vibe-cybersecurity-cn/skills/web3-bug-bounty-hunting/web3-case-study-role-misconfig in tradecatlabs/vibe-coding-cn) into .agents/skills/web3-case-study-role-misconfig in your project. Codex loads it when a task matches its description.

Can I use Web3 Role Misconfiguration Case Study in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tradecatlabs/vibe-coding-cn --skill web3-case-study-role-misconfig -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/web3-case-study-role-misconfig, .gemini/skills/web3-case-study-role-misconfig, .github/skills/web3-case-study-role-misconfig and .opencode/skills/web3-case-study-role-misconfig in your project.

What does Web3 Role Misconfiguration Case Study need to run?

SKILL.md names no scripts, command-line tools or credentials: Web3 Role Misconfiguration Case Study is instructions for the agent only.

Does Web3 Role Misconfiguration Case Study access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Web3 Role Misconfiguration Case Study safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Web3 Role Misconfiguration Case Study use?

Web3 Role Misconfiguration Case Study is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Web3 Role Misconfiguration Case Study use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Web3 Role Misconfiguration Case Study?

Skills that share tags, products or a category with Web3 Role Misconfiguration Case Study: Web3 Smart Contract Audit (awarexone/Agentic-Bug-Hunter, 5.3k stars), Smart Contract Audit (elophanto/EloPhanto, 106 stars), Solidity Vulnerability Scanner (alt-research2/SolidityGuard, 104 stars) and Solidity Security (ccashwell/evm-cortex, 131 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Web3 Role Misconfiguration Case Study?

tradecatlabs (a GitHub user) maintains it in tradecatlabs/vibe-coding-cn, which has 17,386 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 10, 2026.

Source: tradecatlabs/vibe-coding-cn on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.