wshobson/solidity-security

スマートコントラクトのセキュリティベストプラクティスを習得し、一般的な脆弱性を防ぎ、安全なSolidityパターンを実装します。スマートコントラクトの作成、既存のコントラクトの監査、またはブロックチェーンアプリケーションのセキュリティ対策の実装時に使用します。

solidity-security とは?

このスキル(wshobson/solidity-security)は、スマートコントラクト開発者やセキュリティ監査担当者が、Solidityコントラクトの脆弱性を特定・修正し、安全な開発パターンを適用するための包括的なガイドです。再利用可能性攻撃、フロントランニング、整数オーバーフロー、アクセス制御の欠如など、Ethereumや互換ブロックチェーンに特有の一般的な脆弱性クラスとその防止策を網羅しています。主な機能には、OpenZeppelinライブラリを使用した安全なERC20/ERC721トークン実装、Checks-Effects-Interactionsパターン、緊急停止メカニズム、ガス代制限パターン、安全なランダム性生成方法などが含まれます。Claude CodeやClineなどのAIエージェントと連携して動作し、ユーザーがコードベースを提供すると、フレームワーク(Foundry、Hardhat、Truffle)を分析し、脆弱性をスキャンし、Solidityのバージョンや使用されているライブラリに基づいた修正提案を行います。このスキルにより、開発者は監査プロセスを効率化し、高リスクの脆弱性を早期に発見し、DeFiやNFTプロジェクトのセキュリティ基準に準拠したコントラクトを作成できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wshobson/agents/tree/main/skills/solidity-security

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

solidity-security は何をしますか?

スマートコントラクトのセキュリティベストプラクティスを習得し、一般的な脆弱性を防ぎ、安全なSolidityパターンを実装します。スマートコントラクトの作成、既存のコントラクトの監査、またはブロックチェーンアプリケーションのセキュリティ対策の実装時に使用します。

セキュリティの原則

  • 最小権限の原則: コントラクトの機能へのアクセスを必要最低限に制限します。
  • 防御的プログラミング: すべての入力を検証し、失敗に対して適切に処理します。
  • フェイルセーフ設計: 問題発生時にデフォルトで安全な状態に設計します。
  • 経済的セキュリティ: 悪意ある行動に対して経済的インセンティブを考慮します。

一般的な脆弱性と対策

脆弱性説明対策
再利用可能性攻撃悪意あるコントラクトが、呼び出し元のコントラクトの関数を再帰的に呼び出す攻撃Checks-Effects-Interactionsパターンの使用、ReentrancyGuardの導入
整数オーバーフロー算術演算が最大値を超えると予期しない動作が発生Solidity 0.8以降の自動チェック、またはSafeMathの使用
アクセス制御の欠如機密関数への無制限アクセスOpenZeppelinのOwnableやAccessControlの使用
フロントランニングトランザクションの順序操作による不正利益Comit-Revealスキーム、Submarine Sendsの使用
タイムスタンプ依存ブロックタイムスタンプの操作による脆弱性ブロック番号や外部オラクルの使用
ガス不足攻撃ループや複雑な処理によるガス制限超過プルベースの支払い、バッチ処理の制限

安全なパターン

Checks-Effects-Interactionsパターン

function withdraw(uint256 amount) public {
    // チェック
    require(balances[msg.sender] >= amount, "残高不足");

    // 影響
    balances[msg.sender] -= amount;

    // 相互作用
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "送金失敗");
}

緊急停止メカニズム

import "@openzeppelin/contracts/security/Pausable.sol";

contract MyContract is Pausable {
    function sensitiveFunction() public whenNotPaused {
        // 安全な処理
    }
}

プルベースの支払い

mapping(address => uint256) public pendingWithdrawals;

function withdraw() public {
    uint256 amount = pendingWithdrawals[msg.sender];
    pendingWithdrawals[msg.sender] = 0;
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "送金失敗");
}

監査チェックリスト

  • すべての外部呼び出しが安全に処理されているか?
  • アクセス制御が適切に実装されているか?
  • 算術演算が安全に行われているか?
  • ストレージの書き込みが適切に行われているか?
  • イベントが正しく発行されているか?
  • フロントランニング対策が施されているか?
  • ガス制限に配慮した設計か?
  • 緊急停止機構が実装されているか?
  • アップグレード可能性が安全に設計されているか?
  • 依存ライブラリが最新かつ監査済みか?

推奨される静的解析ツール

  • Slither: Solidity用静的解析フレームワーク
  • Mythril: EVMバイトコード用セキュリティ解析ツール
  • Echidna: プロパティベースのファジングツール
  • Foundry: 高速テストとファジングを統合

外部リソース

貢献

GitHubでプルリクエストを作成して、新しいパターンや改善点を提案してください。セキュリティ研究は常に進化しています。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

wshobson/accessibility-compliance

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

wshobson/airflow-dag-patterns

Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.

wshobson/angular-migration

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

wshobson/anti-reversing-techniques

Understand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.

wshobson/api-design-principles

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

wshobson/architecture-decision-records

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

wshobson/architecture-patterns

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

wshobson/async-python-patterns

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

wshobson/attack-tree-construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

wshobson/auth-implementation-patterns

Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.

wshobson/avoid-ai-writing

Audit and rewrite prose so it stops reading as machine-generated. Use this skill when asked to remove AI-isms, clean up AI writing, edit a draft for AI tells, audit a README, changelog, release note, PR description, or blog post for machine-sounding prose, or make text sound less like AI. Supports a detect-only mode, a rewrite mode, and an edit-in-place mode, with optional voice and context profiles.

wshobson/backtesting-frameworks

Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strategies, or building backtesting infrastructure.

wshobson/bash-defensive-patterns

Master defensive Bash programming techniques for production-grade scripts. Use when writing robust shell scripts, CI/CD pipelines, or system utilities requiring fault tolerance and safety.

wshobson/bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

wshobson/bazel-build-optimization

Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.

wshobson/before-you-build

Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.

wshobson/billing-automation

Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.

wshobson/binary-analysis-patterns

Master binary analysis patterns including disassembly, decompilation, control flow analysis, and code pattern recognition. Use when analyzing executables, understanding compiled code, or performing static analysis on binaries.

wshobson/block-no-verify-hook

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

wshobson/brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens — use frontend-design instead.

関連スキル