スキル一覧に戻る
IvanTorresEdge

vulnerability-patterns

by IvanTorresEdge

0🍴 1📅 2026年1月13日
GitHubで見るManusで実行

SKILL.md


name: vulnerability-patterns description: Common vulnerability patterns in Solidity and how to prevent them. Use when reviewing contracts for security issues or learning about common exploits.

Vulnerability Patterns Skill

Reference skill for common Solidity vulnerability patterns. This skill references detailed checklists in the security-audit skill.

When to Use

Use this skill when:

  • Learning about common vulnerabilities
  • Reviewing code for security issues
  • Understanding exploit techniques
  • Preventing known vulnerabilities

For comprehensive security auditing, see:

  • security-audit: Complete audit methodology and checklists
  • testing-patterns: Security testing approaches
  • contract-patterns: Secure implementation patterns

Common Vulnerability Categories

Critical Vulnerabilities

  1. Reentrancy - See security-audit/checklists/common-vulnerabilities.md

    • Classic reentrancy (same function)
    • Cross-function reentrancy
    • Read-only reentrancy
  2. Access Control - See security-audit/checklists/access-control-checklist.md

    • Missing access modifiers
    • Incorrect authorization
    • Privilege escalation
  3. Integer Issues - See security-audit/checklists/common-vulnerabilities.md

    • Overflow/underflow (pre-0.8)
    • Division by zero
    • Precision loss
  4. Oracle Manipulation - See security-audit/checklists/defi-checklist.md

    • Flash loan attacks
    • Price manipulation
    • Stale price data

High Severity

  1. Unchecked External Calls
  2. Delegatecall Injection
  3. Signature Replay
  4. Front-Running
  5. Denial of Service

Medium Severity

  1. Timestamp Dependence
  2. Tx.origin Authentication
  3. Floating Pragma
  4. Uninitialized Storage

Quick Vulnerability Reference

Reentrancy

// ❌ Vulnerable
function withdraw() public {
    uint amount = balances[msg.sender];
    (bool success, ) = msg.sender.call{value: amount}("");
    balances[msg.sender] = 0;  // Too late!
}

// ✅ Secure
function withdraw() public nonReentrant {
    uint amount = balances[msg.sender];
    balances[msg.sender] = 0;  // Update first
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success);
}

Access Control

// ❌ Missing modifier
function mint(address to, uint amount) public {
    _mint(to, amount);
}

// ✅ Protected
function mint(address to, uint amount) public onlyOwner {
    _mint(to, amount);
}

Integer Overflow

// ❌ Pre-0.8 vulnerable
pragma solidity 0.7.6;
uint256 balance = type(uint256).max;
balance += 1;  // Overflows silently

// ✅ Solidity 0.8+ safe
pragma solidity 0.8.30;
uint256 balance = type(uint256).max;
balance += 1;  // Reverts

Testing for Vulnerabilities

Reentrancy Test

contract Attacker {
    Target public target;

    function attack() external payable {
        target.deposit{value: msg.value}();
        target.withdraw();
    }

    receive() external payable {
        if (address(target).balance > 0) {
            target.withdraw();
        }
    }
}

function test_ReentrancyAttack() public {
    vm.expectRevert();  // Should revert
    attacker.attack{value: 1 ether}();
}

Access Control Test

function test_RevertWhen_UnauthorizedMint() public {
    vm.prank(attacker);
    vm.expectRevert("Ownable: caller is not the owner");
    token.mint(attacker, 1000);
}

Resources

Detailed Vulnerability Information:

Related Skills:

  • security-audit/checklists/common-vulnerabilities.md - Complete vulnerability checklist
  • security-audit/checklists/defi-checklist.md - DeFi-specific vulnerabilities
  • security-audit/checklists/upgrade-checklist.md - Upgrade-related issues

Note: This is a reference skill. For comprehensive security auditing, use the security-audit skill which contains detailed checklists and methodologies.

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です