跳到主要内容
知仓学习社ZHICANG

auditing-foundry-smart-contract-security

>-

读凭据执行命令联网写文件严重 12 · 高危 2mukul975/Anthropic-Cybersecurity-Skills

它会碰到什么

扫了多少6 个文本文件,47 KB
它会碰到什么读凭据执行命令联网写文件
命中总数15 处
命中统计严重 12 · 高 2 · 中 1 · 低 0
逐条看命中(14 条严重或高危)
  • 严重 references/secure-deployment-and-keys.md:10cred-paths
    2. Plaintext `PRIVATE_KEY=0x...` in `.env` is the #1 leak vector — use an **encrypted keystore** instead.
  • 严重 references/secure-deployment-and-keys.md:49cred-paths
    printf '.env\n.env.*\n*.key\nkeystore/\nbroadcast/\n' >> .gitignore
  • 严重 references/secure-deployment-and-keys.md:56cred-paths
    git ls-files | grep -E '\.env$|\.key$|keystore' && echo "REMOVE THESE FROM GIT"
  • 严重 scripts/agent.py:222cred-paths
    # Match source/config files plus all dotenv variants (.env, .env.local, .env.prod...)
  • 严重 scripts/agent.py:222cred-paths
    # Match source/config files plus all dotenv variants (.env, .env.local, .env.prod...)
  • 严重 scripts/agent.py:222cred-paths
    # Match source/config files plus all dotenv variants (.env, .env.local, .env.prod...)
  • 严重 scripts/agent.py:223cred-paths
    if not (f.endswith((".sol", ".env", ".json", ".js", ".ts", ".toml", ".txt", ".md", ".sh", ".yaml", ".yml"))
  • 严重 scripts/agent.py:224cred-paths
    or f.startswith(".env")):
  • 严重 SKILL.md:71cred-paths
    - When wiring deployment scripts — to verify keys are in an encrypted keystore, not `.env` plaintext.
  • 严重 SKILL.md:77exec-pipe-to-shell
    - **Foundry** installed (`forge`, `cast`, `anvil`): `curl -L https://foundry.paradigm.xyz | bash && foundryup`
  • 严重 SKILL.md:146cred-paths
    gitleaks detect --no-banner            # no private keys / mnemonics / .env committed
  • 严重 SKILL.md:147cred-paths
    git ls-files | grep -E '\.env$|keystore' && echo "WARN: secrets tracked by git"
  • scripts/agent.py:10exec-shell-true
    - subprocess always called with an ARGUMENT LIST, never shell=True
  • scripts/agent.py:64exec-spawn
    p = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Auditing Foundry Smart Contract Security

Overview

Deployed smart contracts are immutable and custody real funds, so a bug

shipped to mainnet cannot be patched — it can only be exploited. Most catastrophic

DeFi losses come from a small set of recurring classes: reentrancy, broken access

control, oracle/price manipulation, and unchecked arithmetic or external calls.

This skill runs a defense-in-depth, pre-deployment audit of a Foundry project,

layering four independent techniques that each catch what the others miss:

  1. Static analysisslither (90+ detectors) and aderyn (Cyfrin, Rust) scan

the AST/IR in seconds for known anti-patterns.

  1. Symbolic executionmythril (optional, slow) explores execution paths and

SMT-solves for deep arithmetic/reentrancy bugs.

  1. Property-based testingforge test with fuzzing (testFuzz_*) and

invariant tests (invariant_* + handler contracts with ghost variables)

proves protocol-level properties hold across millions of random sequences.

  1. Manual review + key hygiene — a structured checklist (see

references/vulnerability-checklist.md) and a secrets/keystore audit so no

private key ever lives in plaintext and deployment goes through an encrypted

cast keystore (see references/secure-deployment-and-keys.md).

The skill is dev-side and pre-deployment — it is run by the engineer building

the contract, not by a SOC after an incident. Findings gate the deploy: any

high/critical static finding, failing test, leaked key, or low coverage = FAIL.

When to Use

  • Before deploying any Solidity contract to a testnet or mainnet EVM chain.
  • When writing or reviewing a Foundry project (foundry.toml, src/, test/, script/).
  • When a contract handles value: tokens (ERC-20/721/1155), vaults, staking, AMMs, bridges, governance.
  • When adding fuzz or invariant tests, or when coverage of value-moving functions is unknown.
  • When wiring deployment scripts — to verify keys are in an encrypted keystore, not .env plaintext.
  • When integrating a price oracle, external call, delegatecall, or upgradeable proxy.
  • When triaging a Slither/Aderyn report and needing to separate real bugs from false positives.

Prerequisites

  • Foundry installed (forge, cast, anvil): curl -L https://foundry.paradigm.xyz | bash && foundryup
  • Slither + solc: pip install slither-analyzer and solc-select install <ver> && solc-select use <ver>
  • Aderyn (recommended): cargo install aderyn (or npm i -g @cyfrin/aderyn)
  • Mythril (optional, slow symbolic exec): pip install mythril
  • gitleaks (key-leak scan): see the companion implementing-secret-scanning-with-gitleaks skill
  • A Foundry project that compiles (forge build succeeds) — analyzers need build artifacts.
  • Solidity ^0.8.x is assumed (built-in overflow checks); pre-0.8 contracts need extra SafeMath review.

> Install the Python tools in a virtualenv (recommended on externally-managed distros). Never run

> analysis against untrusted contract source on a machine with funded wallets unlocked.

Steps

Step 1: Build and sanity-check the project

forge build                    # analyzers require fresh artifacts
forge fmt --check              # style gate (optional)
cat foundry.toml               # note solc version, optimizer, remappings, evm_version

Step 2: Static analysis (fast, run every time)

# Slither — full project (uses foundry.toml + remappings automatically)
slither . --json slither-report.json

# Aderyn — Cyfrin Rust analyzer, complementary detectors
aderyn . -o aderyn-report.json

Or run the bundled orchestrator that runs both, deduplicates, and gates the result:

python3 scripts/agent.py --project . --output audit-report.json

Step 3: Symbolic execution on critical contracts (optional, slow)

# Only on the highest-value contract(s) — Mythril is path-explosive
myth analyze src/Vault.sol --solc-json mythril.config.json --execution-timeout 300 -o json
# or: python3 scripts/agent.py --project . --mythril src/Vault.sol

Step 4: Property-based testing — fuzz + invariants

forge test -vvv                                  # unit + fuzz tests
forge coverage --report summary                  # coverage of value-moving code
forge test --match-test invariant_ -vvv          # invariant suite (handler-based)

Every value-moving contract should have invariant tests with a handler (bounded

inputs, ghost variables, targetContract(handler)) — not just unit tests. See

references/api-reference.md for the handler pattern, and write a

test_RevertWhen_* (with vm.expectRevert) for each access-control guard.

Step 5: Manual review against the checklist

Walk references/vulnerability-checklist.md for every contract: reentrancy

(checks-effects-interactions / nonReentrant), access control, oracle manipulation,

delegatecall/proxy storage layout, unchecked return values, tx.origin, weak

randomness, DoS, front-running/MEV, and ERC-specific pitfalls (approve race,

fee-on-transfer, rebasing).

Step 6: Key hygiene & secure deploy

gitleaks detect --no-banner            # no private keys / mnemonics / .env committed
git ls-files | grep -E '\.env$|keystore' && echo "WARN: secrets tracked by git"

# Import the deploy key ONCE into an encrypted keystore — never a plaintext PRIVATE_KEY env
cast wallet import deployer --interactive

# Deploy via the keystore account (testnet first), simulate before --broadcast
forge script script/Deploy.s.sol --account deployer --rpc-url <testnet> --broadcast --verify

See references/secure-deployment-and-keys.md for the full hardening rules

(MetaMask hygiene, hardware wallet for mainnet, RPC trust, post-deploy verification).

Step 7: Triage and report

Combine Slither + Aderyn + Mythril + test results, deduplicate by (file, line),

drop confirmed false positives, rank by exploitability × financial impact, and map

each to its SWC id. The orchestrator emits audit-report.json with a PASS/FAIL gate.

Expected Output

A JSON audit report listing findings with SWC identifiers, severity, tool source,

affected contract/function/line, and remediation; plus the test/coverage summary and a

single PASS / FAIL deploy gate. FAIL on any high/critical static finding, failing

test, leaked secret, or coverage below the configured threshold on value-moving code.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。