Git Product home page Git Product logo

slowmist-learning-roadmap-for-becoming-a-smart-contract-auditor's Introduction

By: Kong'@慢雾安全团队

前言

本技能表是慢雾安全团队智能合约安全审计工程师的技能集合,旨在为团队成员列出智能合约安全审计的所需技能并驱动团队成员形成研究、创造、工程的自我进化思维。

智能合约安全审计技能主要分为四个部分:寻门而入、倚门而歌、融会贯通、破门而出,由浅至深地列出在各个阶段所需掌握的专业技能。而在此之前,需要一些通用技能武装我们的大脑,出发准备部分将会是我们审计之路的锚点。

路线图

Roadmap_bg2

出发准备

所谓磨刀不误砍柴功,在正式出发之前强化自己的思维是必要的,这可以使我们走得坚定、走得更远。

1. 知行合一

认知与实践是密不可分的,理论与实践应相统一。

2. 守正出奇

道德和法律是安全从业者的底线,安全从业者在坚守底线的同时也要锻造过硬的技术,在关键时刻出奇制胜。

  • 坚守底线
    • 审计人员应遵守法律,坚守道德底线
  • 负责任的披露
  • 黑客思维
    • 坚守底线的同时出奇制胜
    • 守正:保持敬畏,坚守底线
    • 出奇:脑洞要大,心要细,反向思维,开放性思维

3. 团队意识

单个人的能力覆盖面总是有限,团队战斗可以很好地补全个人的不足。

  • 协同审计流

    • SlowMist MistPunk 审计工作台做协同,通过技术的方式保证审计质量,同时沉淀审计经验
  • 审计工作流

    • SlowMist 审计工作流程,通过管理方式保证审计质量,同时为审计工作查缺补漏
  • Hacking Time 文化

    • 团队成员随时随地的思维碰撞与分享,通过思维碰撞和分享对齐团队能力,提升团队整体能力

寻门而入

加密世界发展至今其涵盖了密码学、经济学、数据科学等学科,面对知识体量极为庞大的加密世界,如何寻门而入是为关键。本阶段将从 Ethereum (以太坊) 及其智能合约语言 Solidity 开始寻找进入加密货币世界的大门。

1. 区块链基础知识

在了解智能合约是什么之前,应该先了解智能合约所运行的区块链平台是什么。

2. 智能合约基础知识

在不同的区块链可能会使用不同的语言构建智能合约,例如:Solidity、Move、Rust、Vyper、Cairo、C++ 等。目前 EVM 兼容链使用的 Solidity 仍是最流行且易于入门的智能合约语言,应该确保完整阅读完其语言文档。且应了解运行在 Ethereum(以太坊) 上的代币合约的设计标准与具体的合约实现。在此基础上了解智能合约是如何做到可升级的,并实操掌握智能合约的编写与测试。

3. 常见的智能合约漏洞

在学习完成智能合约基础知识后应掌握其常见的基础漏洞,并知晓漏洞原理。其中 Quillhash 整理的漏洞列表聚合了多个来源,其较为完备的展示了当前常见的智能合约漏洞类型。(但对于初学者来说建议反复阅读所有列表以加深印象)

4. 最佳实践与安全标准

作为审计人员,必须了解智能合约的最佳实践以及安全标准。最佳实践为审计中寻找安全问题提供参考,安全标准为审计中提出的安全问题提供依据。

5. 简单 CTF 挑战

在学习了区块链与智能合约基础知识以及常见的智能合约漏洞后,可以通过一些简单的 CTF 挑战巩固以及实践所学的知识。

倚门而歌

掌握了区块链与智能合约的基础知识后,我们便推开了 Solidity 智能合约安全审计的大门,门后的智能合约世界仍极为广阔。本阶段将从去中心化金融(DeFi) 开始深入地探索门后更为广阔的智能合约应用。

1. 去中心化金融(DeFi)基础知识

区块链和智能合约使 DeFi 的构建成为可能,DeFi 的出现也使得 Ethereum 等公链快速发展。在做进一步探索之前,理应了解 DeFi 是什么?

2. 去中心化金融(DeFi)头部协议

在初步了解了 DeFi 是什么后,应进一步了解它们实现了什么/是如何实现的?通过阅读当前头部去中心化金融(DeFi)协议的技术文档以初步了解头部 DeFi 协议是如何实现的。

3. 深入阅读头部协议源代码

当前多数 DeFi 项目都相互依赖、组合,一些头部的 DeFi 协议成了构件 DeFi 组合基石,所以掌握这些 DeFi 的实现极为重要。在先前通过协议技术文档对 DeFi 的实现进行初步了解后,再通过阅读全量源代码的方式掌握其具体的逻辑、经济模型。

4. 了解去中心化金融(DeFi) 风险

DeFi 并不局限于智能合约,前端、后端也是其重要的组成部分,绝大部分用户通过前端与 DeFi 进行交互。因此在了解了 DeFi 的运作与实现后,通过前端安全实践、后端安全配置要求与 DeFi 历史漏洞对其面临的风险进行学习与实践。

5. 阅读审计报告

在进行审计时,个人的角度总是会有所遗漏,无法覆盖所有情况。因此通过阅读他人的审计报告以学习不同的漏洞发现方式和审计思考方式很重要。

6. CTF 挑战

进行较有难度的 CTF 挑战以巩固知识。

融会贯通

在对头部 DeFi 的探索过程中将建立起对 DeFi 的深刻理解,接下来通过从底层 EVM 到 DeFi 上层经济模型的学习来继续加深对智能合约的理解。并且在此过程中,可以通过独立审计复杂智能合约以沉淀自己的审计方法论。

1. 深入了解 EVM

EVM 负责执行智能合约指令,深入了解 EVM 有助于我们对智能合约的部署、调用、执行、数据存储有更为深入的理解。同时可以为 Gas 优化、漏洞发现打好基础。

2. Gas 优化设计

链上交易的执行都需要付出 Gas 成本。对于复杂合约来说,优化 Gas 可以降低用户交互成本,吸引用户使用。这就要求审计人员需要对 Gas 优化设计有一定的了解。

3. DeFi 经济模型

经济模型是 DeFi 产品的核心部分,所以了解经济模型的风险是很有必要的。在学习过程中应沉淀出自己的见解与方法论。

4. 拆解分析复杂 DeFi 协议

在将这些技能融会贯通后,审计人员应具备拆解分析复杂的高原创性 DeFi 协议的能力。

  • To be released...

5. 与同道者同行

学习其他优秀同道者所研究的内容可以给我们更多的启发,拓宽我们的视野。

6. 快速应急分析

在独立审计过足够多的复杂项目,并经历过各种业务场景,沉淀了大量知识后,能够使我们快速应对突发安全事件并进行快速分析与输出。下面是一些常用的分析工具:

7. Bug Bounty 实战

进行实战,以最真实的场景检测能力。

破门而出

在由 Solidity 智能合约寻门而入后,不应再满足于在单一领域兜兜转转,而是应该沉淀出自己方法论,大胆地凿出一道新门,破门而出,在深耕当前领域的同时拓展其他领域。

skill

1. 突破局限

在从 Solidity 智能合约入门后不应只局限于此,也应拓展其他类型、语言,并对其涉及的审计方法有所沉淀。

  • 不只局限于 Solidity,Rust/Vyper/Cairo/Move 等智能合约语言也应了解
  • 不只局限于智能合约,BTC/Cosmos/Solana/Starknet/EVM L2 等其他流行公链也应了解
  • 不只局限于区块链,Web2.0/移动端等也应了解
  • 深入了解密码学领域
  • ...

2. 方法论

将智能合约安全审计技能融会贯通后,可以沉淀出属于自己的方法论,帮助我们快速的触及问题的核心并确定解决思路,好的方法论能让我们事半功倍。

  • 对审计工作的方法论
  • 对智能合约安全实践的方法论
  • 做事的方法论
  • 构建思维体系的方法论
  • ...

3. 创造力

创造力是我们能够克敌制胜的法宝,是我们保持前进所需具备的东西。在按部就班地掌握技能后,再武装我们的思维,这能够使我们走得更远。

  • 保持好奇心
    • 对新事物的敏感性
    • 不局限于自己的圈子/专业/职业
    • ...
  • 追逐知识
    • 对知识保持敬畏
    • 探索新知识
  • 黑客思维
    • 黑客也可以是一种精神也可以是一种思维,守正出奇
  • 善于研究
    • 在进行研究时应有实际的结果/文档输出
  • 工程化
    • 对于好点子,好的的研究成果应该善于工程化,并在实战中进行检验
      • SlowMist MistEye Monitoring System
      • SlowMist Contract Visibility Analysis Tool
      • SlowMist Static Vulnerability Scanner
      • ...

致谢

感谢朋友们对本文提出的宝贵建议。

slowmist-learning-roadmap-for-becoming-a-smart-contract-auditor's People

Contributors

kongbest avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.