360 Secure SkillHub
360 安全技能中心

Solidity Guardian

针对 Solidity 智能合约的安全分析 Skill:用 Node 脚本做模式匹配,检测重入、权限缺失、弱随机数等 40+ 漏洞并按严重度分级,提供修复建议,生成 Markdown 审计报告,可选与 Slither 联合分析,并支持 Hardhat/Foundry 项目与 CI。

aviclaw
aviclaw
热度 63.25
最近更新 2026-05-18 12:02:17
分类:安全依赖:代码执行 / 读写文件应用场景:代码审查 / 报告撰写 / DevOps

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add solidity-guardian
Metadata
name
solidity-guardian
version
1.0.0
description
Smart contract security analysis skill. Detect vulnerabilities, suggest fixes, generate audit reports. Supports Hardhat/Foundry projects. Uses pattern matching + best practices from Trail of Bits, OpenZeppelin, and Consensys.
author
aviclaw
tags
["solidity","security","audit","smart-contracts","ethereum","vulnerability","scanner"]

Solidity Guardian 🛡️

Security analysis for Solidity smart contracts. Find vulnerabilities, get fix suggestions, follow best practices.

Quick Start

# Analyze a single contract
node skills/solidity-guardian/analyze.js contracts/MyContract.sol

# Analyze entire project
node skills/solidity-guardian/analyze.js ./contracts/

# Generate markdown report
node skills/solidity-guardian/analyze.js ./contracts/ --format markdown > AUDIT.md

What It Detects (40+ Patterns)

Critical (Must Fix)

ID Vulnerability Description
SG-001 Reentrancy External calls before state updates
SG-002 Unprotected selfdestruct Missing access control on selfdestruct
SG-003 Delegatecall to untrusted Delegatecall with user-controlled address
SG-004 Uninitialized storage pointer Storage pointer overwrites slots
SG-005 Signature replay ecrecover without nonce/chainId
SG-006 Arbitrary jump Function type from user input

High (Should Fix)

ID Vulnerability Description
SG-010 Missing access control Public functions that should be restricted
SG-011 Unchecked transfer ERC20 transfer without return check
SG-012 Integer overflow Arithmetic without SafeMath (pre-0.8)
SG-013 tx.origin auth Using tx.origin for authentication
SG-014 Weak randomness block.timestamp/blockhash for randomness
SG-015 Unprotected withdrawal Withdrawal without ownership check
SG-016 Unchecked low-level call .call() without success check
SG-017 Dangerous equality Strict balance check (manipulable)
SG-018 Deprecated functions suicide, sha3, throw, callcode
SG-019 Wrong constructor Function name matches contract

Medium (Consider Fixing)

ID Vulnerability Description
SG-020 Floating pragma Non-pinned Solidity version
SG-021 Missing zero check No validation for zero address
SG-022 Timestamp dependence Logic depends on block.timestamp
SG-023 DoS with revert Loop with external call can revert
SG-024 Front-running risk Predictable state changes

Low (Best Practice)

ID Vulnerability Description
SG-030 Missing events State changes without events
SG-031 Magic numbers Hardcoded values without constants
SG-032 Implicit visibility Functions without explicit visibility
SG-033 Large contract Contract exceeds size recommendations
SG-034 Missing NatSpec Public functions without documentation

Usage Examples

Basic Analysis

const { analyzeContract } = require('./analyzer');

const results = await analyzeContract('contracts/Token.sol');
console.log(results.findings);

With Fix Suggestions

const results = await analyzeContract('contracts/Vault.sol', {
  includeFixes: true,
  severity: ['critical', 'high']
});

for (const finding of results.findings) {
  console.log(`[${finding.severity}] ${finding.title}`);
  console.log(`  Line ${finding.line}: ${finding.description}`);
  console.log(`  Fix: ${finding.suggestion}`);
}

Generate Report

const { generateReport } = require('./reporter');

const report = await generateReport('./contracts/', {
  format: 'markdown',
  includeGas: true,
  includeBestPractices: true
});

fs.writeFileSync('SECURITY_AUDIT.md', report);

Best Practices Checklist

When writing secure contracts, follow these guidelines:

Access Control

  • Use OpenZeppelin's Ownable or AccessControl
  • Apply onlyOwner or role checks to sensitive functions
  • Implement two-step ownership transfer
  • Consider timelocks for critical operations

Reentrancy Prevention

  • Use ReentrancyGuard on all external-facing functions
  • Follow checks-effects-interactions pattern
  • Update state BEFORE external calls
  • Use pull over push for payments

Input Validation

  • Validate all external inputs
  • Check for zero addresses
  • Validate array lengths match
  • Use SafeERC20 for token transfers

Arithmetic Safety

  • Use Solidity 0.8+ or SafeMath
  • Check for division by zero
  • Validate percentage calculations (≤100)
  • Be careful with token decimals

Upgradeability (if applicable)

  • Use initializer instead of constructor
  • Protect initialize from re-initialization
  • Follow storage layout rules
  • Test upgrade paths

Slither Integration

Guardian can run alongside Slither for comprehensive analysis:

# Combined analysis (auto-installs Slither if missing)
node skills/solidity-guardian/slither-integration.js ./contracts/ --install-slither

# Generate combined report
node skills/solidity-guardian/slither-integration.js . --format markdown --output AUDIT.md

# Guardian only (faster, no Slither dependency)
node skills/solidity-guardian/slither-integration.js ./contracts/ --guardian-only

# Slither only
node skills/solidity-guardian/slither-integration.js ./contracts/ --slither-only

Why both?

  • Guardian: Fast pattern matching, custom rules, no compilation needed
  • Slither: Deep dataflow analysis, CFG-based detection, more comprehensive

Integration with Other Tools

Hardhat

// hardhat.config.js
require('./skills/solidity-guardian/hardhat-plugin');

// Run: npx hardhat guardian

Foundry

# Add to CI
forge build
node skills/solidity-guardian/analyze.js ./src/

References


Built by Avi 🔐 | Security-first, ship always.