智能合约梳理
1、找准1个漏洞,探索解决⽅案
2、找准⼀个⽅法,看看能识别哪些漏洞
3、针对某⼀应⽤领域的智能合约的漏洞检测
西瓜的英文静态分析⼯具上进⾏了⼤量的研究⼯作,这些⼯具可以在部署之前检测漏洞。但是,当前很少有安全⼯具可以在部署后保护智能合约。
3.2。分析⽅法
静态分析: 静态软件分析是⼀种从程序的已编译⼆进制代码研究程序⾏为⽽⽆需执⾏该程序的⽅法,以寻找通常会导致漏洞的已知模式。进⾏静态分析时,有⼀些过程,例如:
反汇编:将⼆进制代码转换为易于理解的指令集的过程。
反编译:从代码反⽣成⾼级语⾔的反汇编代码的过程。
符号执⾏:使⽤符号代替对变量使⽤特定值。这些符号上的运算导致代数项,⽽条件语句则产⽣表征分
⽀的命题公式。如果在到达此部分的过程中公式的结合令⼈满意,则可以实现代码的特定部分,这可以由SMT求解器检查。
控制流图:使⽤图形表⽰程序执⾏可能遵循的路径。
模式识别:此操作搜索已知包含潜在漏洞代码的字节码部分。
咋了爸爸舞蹈视频基于规则的分析:⼀种将CFG转换为规则表⽰的⽅法。
动态分析: 这种类型的分析在程序的执⾏阶段起作⽤,在进⾏验证的同时检测在静态分析过程中可能未注意到的漏洞(例如,由于存在混淆的代码或有抵抗⼒的包装)那些被这个发现的。
执⾏跟踪:与静态分析中的CFG⼀样,合同执⾏跟踪是在执⾏过程中由此⽣成的。(动态污点跟踪)
民间故事图片符号分析:通过在执⾏时的不同跟踪中,通过在变量中插⼊不同的符号值并记录所产⽣的不同输出来执⾏合同的符号执⾏。
假阳性判断:在进⾏符号分析后,⼀旦合同被确定为可能的脆弱候选对象,将使⽤具体数据对符号分析的结果进⾏验证。
形式验证: 通过这种类型的分析,使⽤诸如SMT Z3和Coq等定理证明,使⽤正式的数学⽅法进⾏验证以测试代码的特定属性。
控制流分析是⼀种具有许多应⽤程序的基本动态分析技术。除了控制流之外,还可以分析执⾏的其他⽅⾯,例如数据流[51]G. Ammons and J. R. Larus, “Improving data-flow analysis with path profiles”, Proc. ACM Special Interest Group Program. Lang. Notices, vol. 33, pp. 72-84, 1998.或动态不变量[52]M. D. Ernst, J. Cockrell, W. G. Griswold and D. Notkin, “Dynamically discovering likely program invariants to support program evolution”, IEEE Trans. Softw. Eng., vol. 27, no. 2, pp. 99-123, Feb. 2001.。
小米手环防水吗针对重⼊攻击及其防御的论⽂:
[Arxive’20]Empirical Review of Automated Analysis Tools on 47,587 Ethereum Smart Contracts
We report that the current state- of-the-art is not able to detect vulnerabilities from two categories of DASP10: Bad Randomness and Short Address
漏洞检测⼯具的精确度、平均时间 ,提供了智能合约数据集合
We obrve that the tools underperform to detect vulnerabilities in the following three categories: Ac
cess Control, Denial of rvice, and Front running.
Therefore, we suggest the combination of Mythril and Slither, since it detects 42 (37%) of all the vulnerabilities SODA: A Generic Online Detection Framework for Smart Contracts
现有⽅法。现有的保护智能合约的⽅法⼤致可以分为离线和在线两种。离线⽅法分析智能合约以发现漏洞[8]-[17],检查其正确性
[18]-[21],对智能合约的字节码进⾏反向⼯程[22]-[26],检测恶意智能合约[27],[28]等等。但是,由于缺乏运⾏时信息和所
选技术的固有限制,脱机⽅法⽆法保证能够检测并删除所有漏洞。因此,通过这些⽅法处理后的智能合约仍然可能受到攻击。在线⽅法尝试检测针对智能合约的攻击,或在部署后保护智能合约免受攻击[29]–[37],可分为两类。第⼀类将保护代码插⼊智能合约的源/字节码中[29]、[31]–[33]。然⽽,它们的能⼒[29]、[31]–[33]受到EVM字节码[38]和⽓体机制[39]的⼤⼩限制。第⼆类将保护代码插⼊智能合约(例如EVM)[30]、[34]–[37]的运⾏时。然⽽,这些⽅法不容易扩展到检测新的攻击[30]、[35],或者缺乏详细的设计、实现和评估[34]、[36],或者是资源消耗并且可能会错过许多攻击[37]。我们在第⼋章详细介绍了现有的⽅法。
四个阶段灵感来⾃于Sereum :Protecting Existing Smart Contracts Against Re-Entrancy Attacks
中国象棋软件>小学生种绿豆的方法
针对智能合约的算术问题:算术溢出
VERISMART: A Highly Preci Safety Verifier for Ethereum Smart Contracts
>形容难过的词语