By: Kong'@慢雾安全团队
本技能表是慢雾安全团队智能合约安全审计工程师的技能集合,旨在为团队成员列出智能合约安全审计的所需技能并驱动团队成员形成研究、创造、工程的自我进化思维。
智能合约安全审计技能主要分为四个部分:寻门而入、倚门而歌、融会贯通、破门而出,由浅至深地列出在各个阶段所需掌握的专业技能。而在此之前,需要一些通用技能武装我们的大脑,出发准备部分将会是我们审计之路的锚点。
所谓磨刀不误砍柴功,在正式出发之前强化自己的思维是必要的,这可以使我们走得坚定、走得更远。
认知与实践是密不可分的,理论与实践应相统一。
- 学习应有所输出,输出应有所实践
- 慢雾安全团队知识库
- Github 开源文化
道德和法律是安全从业者的底线,安全从业者在坚守底线的同时也要锻造过硬的技术,在关键时刻出奇制胜。
- 坚守底线
- 审计人员应遵守法律,坚守道德底线
- 负责任的披露
- 慢雾(SlowMist)预警流程
- FIRST 道德守则
- 黑客思维
- 坚守底线的同时出奇制胜
- 守正:保持敬畏,坚守底线
- 出奇:脑洞要大,心要细,反向思维,开放性思维
单个人的能力覆盖面总是有限,团队战斗可以很好地补全个人的不足。
-
协同审计流
- SlowMist MistPunk 审计工作台做协同,通过技术的方式保证审计质量,同时沉淀审计经验
-
审计工作流
- SlowMist 审计工作流程,通过管理方式保证审计质量,同时为审计工作查缺补漏
-
Hacking Time 文化
- 团队成员随时随地的思维碰撞与分享,通过思维碰撞和分享对齐团队能力,提升团队整体能力
加密世界发展至今其涵盖了密码学、经济学、数据科学等学科,面对知识体量极为庞大的加密世界,如何寻门而入是为关键。本阶段将从 Ethereum (以太坊) 及其智能合约语言 Solidity 开始寻找进入加密货币世界的大门。
在了解智能合约是什么之前,应该先了解智能合约所运行的区块链平台是什么。
在不同的区块链可能会使用不同的语言构建智能合约,例如:Solidity、Move、Rust、Vyper、Cairo、C++ 等。目前 EVM 兼容链使用的 Solidity 仍是最流行且易于入门的智能合约语言,应该确保完整阅读完其语言文档。且应了解运行在 Ethereum(以太坊) 上的代币合约的设计标准与具体的合约实现。在此基础上了解智能合约是如何做到可升级的,并实操掌握智能合约的编写与测试。
- Solidity 官方文档
- 阅读《精通以太坊》
- 当前应着重阅读剩余的其他章节
- 了解基础的以太坊意见征求稿 ERC
- 学习 OpenZeppelin Token 部分的实现
- 了解可升级合约/代理合约是什么
- 学习智能合约编写
- 阅读《精通以太坊智能合约开发》
- 学习使用智能相关 Build 工具
在学习完成智能合约基础知识后应掌握其常见的基础漏洞,并知晓漏洞原理。其中 Quillhash 整理的漏洞列表聚合了多个来源,其较为完备的展示了当前常见的智能合约漏洞类型。(但对于初学者来说建议反复阅读所有列表以加深印象)
- DASP Top 10
- SWC 智能合约弱点分类
- 智能合约安全指南
- Kaden: 智能合约攻击向量
- Quillhash: Solidity 攻击向量
- RareSkills Smart Contract Security
作为审计人员,必须了解智能合约的最佳实践以及安全标准。最佳实践为审计中寻找安全问题提供参考,安全标准为审计中提出的安全问题提供依据。
- Solidity Patterns
- Solcurity
- ConsenSys 智能合约最佳实践
- Solidity 安全陷阱和最佳实践 101
- Solidity 安全陷阱和最佳实践 201
- SCSVSv2
- EEA EthTrust Certification
- Foundry 测试最佳实践
在学习了区块链与智能合约基础知识以及常见的智能合约漏洞后,可以通过一些简单的 CTF 挑战巩固以及实践所学的知识。
掌握了区块链与智能合约的基础知识后,我们便推开了 Solidity 智能合约安全审计的大门,门后的智能合约世界仍极为广阔。本阶段将从去中心化金融(DeFi) 开始深入地探索门后更为广阔的智能合约应用。
区块链和智能合约使 DeFi 的构建成为可能,DeFi 的出现也使得 Ethereum 等公链快速发展。在做进一步探索之前,理应了解 DeFi 是什么?
- 阅读《How To DeFi: Beginner》
- 阅读《How To DeFi: Advanced》
- DeFi 各类型介绍
- 了解各个类型的 DeFi 是什么
- 了解一些基础的经济学知识与常用术语
- 基础的金融玩法介绍
- 经济模型 101
在初步了解了 DeFi 是什么后,应进一步了解它们实现了什么/是如何实现的?通过阅读当前头部去中心化金融(DeFi)协议的技术文档以初步了解头部 DeFi 协议是如何实现的。
- MakerDAO (CDP)
- AAVE (Lending)
- Compound (Lending)
- Uniswap (DEX)
- Curve (DEX)
- Chainlink (Oracle)
- Convex Finance (Yield)
- Yearn Finance (Yield Aggregator)
- GMX (Derivatives)
- Nexus Mutual (Insurance)
- OpenSea (NFT Marketplace)
- Set Protocol (Indexes)
- Lido (Liquid Staking)
- ...
当前多数 DeFi 项目都相互依赖、组合,一些头部的 DeFi 协议成了构件 DeFi 组合基石,所以掌握这些 DeFi 的实现极为重要。在先前通过协议技术文档对 DeFi 的实现进行初步了解后,再通过阅读全量源代码的方式掌握其具体的逻辑、经济模型。
DeFi 并不局限于智能合约,前端、后端也是其重要的组成部分,绝大部分用户通过前端与 DeFi 进行交互。因此在了解了 DeFi 的运作与实现后,通过前端安全实践、后端安全配置要求与 DeFi 历史漏洞对其面临的风险进行学习与实践。
- 了解 Web 前端安全
- 阅读 SlowMist Web 前端最佳安全实践指南
- 更多了解《Web 前端黑客技术揭秘》
- 了解 DeFi 被黑原因
在进行审计时,个人的角度总是会有所遗漏,无法覆盖所有情况。因此通过阅读他人的审计报告以学习不同的漏洞发现方式和审计思考方式很重要。
- SlowMist Audit Reports
- Solodit Aggregation
- Code4rena Audit Reports
- Consensys Audit Reports
- QuillAudits Audit Reports
- Spearbit Audit Reports
- Sherlock Audit Reports
- ADBK Audit Reports
- BlockSec Audit Reports
- Certik Audit Reports
- ChainSecurity Audit Reports
- Cyfrin Audit Reports
- PeckShield Audit Reports
- OpenZeppelin Audit Reports
- Complete List of Security Audit Reports
进行较有难度的 CTF 挑战以巩固知识。
- EtherHack
- SI Blockchain CTF
- QuillCTF
- Curta CTF
- Paradigm CTF
- Cipher Shastra CTF
- Damn Vulnerable DeFi
- unhackedctf
在对头部 DeFi 的探索过程中将建立起对 DeFi 的深刻理解,接下来通过从底层 EVM 到 DeFi 上层经济模型的学习来继续加深对智能合约的理解。并且在此过程中,可以通过独立审计复杂智能合约以沉淀自己的审计方法论。
EVM 负责执行智能合约指令,深入了解 EVM 有助于我们对智能合约的部署、调用、执行、数据存储有更为深入的理解。同时可以为 Gas 优化、漏洞发现打好基础。
链上交易的执行都需要付出 Gas 成本。对于复杂合约来说,优化 Gas 可以降低用户交互成本,吸引用户使用。这就要求审计人员需要对 Gas 优化设计有一定的了解。
经济模型是 DeFi 产品的核心部分,所以了解经济模型的风险是很有必要的。在学习过程中应沉淀出自己的见解与方法论。
在将这些技能融会贯通后,审计人员应具备拆解分析复杂的高原创性 DeFi 协议的能力。
- To be released...
学习其他优秀同道者所研究的内容可以给我们更多的启发,拓宽我们的视野。
- Bytes032
- Noxx
- Mixbytes
- Samczsun
- Cmichel
- Pessimistic
- OfficerCia
- Smart Contract Research Forum
- Zefram
- Alin Tomescu
- Christoph Michel
- Kyrian Alex
- ...
在独立审计过足够多的复杂项目,并经历过各种业务场景,沉淀了大量知识后,能够使我们快速应对突发安全事件并进行快速分析与输出。下面是一些常用的分析工具:
- 合约反编译工具
- 交易分析工具
- Others
进行实战,以最真实的场景检测能力。
在由 Solidity 智能合约寻门而入后,不应再满足于在单一领域兜兜转转,而是应该沉淀出自己方法论,大胆地凿出一道新门,破门而出,在深耕当前领域的同时拓展其他领域。
在从 Solidity 智能合约入门后不应只局限于此,也应拓展其他类型、语言,并对其涉及的审计方法有所沉淀。
- 不只局限于 Solidity,Rust/Vyper/Cairo/Move 等智能合约语言也应了解
- 不只局限于智能合约,BTC/Cosmos/Solana/Starknet/EVM L2 等其他流行公链也应了解
- 不只局限于区块链,Web2.0/移动端等也应了解
- 深入了解密码学领域
- ...
将智能合约安全审计技能融会贯通后,可以沉淀出属于自己的方法论,帮助我们快速的触及问题的核心并确定解决思路,好的方法论能让我们事半功倍。
- 对审计工作的方法论
- 对智能合约安全实践的方法论
- 做事的方法论
- 构建思维体系的方法论
- ...
创造力是我们能够克敌制胜的法宝,是我们保持前进所需具备的东西。在按部就班地掌握技能后,再武装我们的思维,这能够使我们走得更远。
- 保持好奇心
- 对新事物的敏感性
- 不局限于自己的圈子/专业/职业
- ...
- 追逐知识
- 对知识保持敬畏
- 探索新知识
- 黑客思维
- 黑客也可以是一种精神也可以是一种思维,守正出奇
- 善于研究
- 在进行研究时应有实际的结果/文档输出
- 工程化
- 对于好点子,好的的研究成果应该善于工程化,并在实战中进行检验
- SlowMist MistEye Monitoring System
- SlowMist Contract Visibility Analysis Tool
- SlowMist Static Vulnerability Scanner
- ...
- 对于好点子,好的的研究成果应该善于工程化,并在实战中进行检验
感谢朋友们对本文提出的宝贵建议。