# MANDO-GURU: vulnerability detection for smart contract source code by heterogeneous graph embeddings 論文筆記 ## MANDO-GURU 簡介 MANDO-GURU是一种智能合约源代码漏洞检测方法,它利用异构图嵌入技术来表示和分析智能合约代码; MANDO-GURU关键相比于传统漏洞监测方案优势在于其能够捕捉到智能合约代码中实体之间的语义和结构关系,并能够准确识别潜在的漏洞。与传统的基于规则或模式匹配的方法相比,它不仅能够检测已知的漏洞,还可以自动学习并识别新的漏洞模式。 通过使用MANDO-GURU,开发人员可以更好地识别和修复智能合约代码中的安全漏洞,提高合约的安全性和可靠性。 ## MANDO-GURU 使用例子 MANDO-GURU针对以太坊智能合约的漏洞检测页面示例包括7种bug类型的摘要检测结果(橙色框),其中被标为红色的按纽即是BUG,绿色则是Clean。代码片段(紫色框)及其对应的异构合约图(綠色框)。第19行黄色背景是Reentrancy 漏洞的根本原因(紫色框);包含Reentrancy 漏洞的节点用红色突出显示(綠色框)。 ![截圖 2023-12-09 18.09.10](https://hackmd.io/_uploads/B1WAnh-Lp.png) 除了核心功能外,MANDO-GURU還提供了各種統計圖表,用於對生成的異構合約圖進行一般分析。其中包括乾淨節點和有漏洞節點的數量,粗粒度和細粒度檢測的運行時間,以及每種漏洞類型的密度。 ![截圖 2023-12-09 18.09.41](https://hackmd.io/_uploads/HyxeT2WIa.png) ## MANDO-GURU流程 MANDO-GURU流程主要分為4步, 1. 把智能合约输入Slither用于生成CG与CFG 2. 把CG与CFG转换成异构形式,把已经转换成异构形式的CFG与CG合并 3. 分别输入Multi-Metapaths Extraction和Heterogeneous Graph Neural Network中去进行识别漏洞任务 4. 把识别后的数据经由RESTful传送至Frontend输出。 ![截圖 2023-12-09 18.10.28](https://hackmd.io/_uploads/rkAfphbIT.png) ## 數據比較 第一个表是MANDO-GURU,与原始异构GNN (metapath2vec 1)和3个原始同构GNN (GCN, LINE, node2vec)相比,提高了buggy f1 score。 ![截圖 2023-12-09 18.12.25](https://hackmd.io/_uploads/SkVc63WIa.png) 是一種評估指標,通常用於評估軟件測試或代碼測試中的性能。它是關於軟件中的錯誤或 "bug" 的評估指標,特別是在測試過程中檢測和修復錯誤的有效性。這個指標是 F1 分數的一種變體。 "buggy f1 score": 這個詞語通常指的是在代碼測試中,模型或測試套件能夠正確地檢測到代碼中存在的錯誤的情況。 第二个表是MANDO-GURU,与6个传统工具(Securify, Mythril, Slither, Manticore, Smartcheck, Oyente)和原始异构GNN (metapath2vec)和3个原始同构GNN (GCN, LINE, node2vec)进行了比较。 ![截圖 2023-12-09 18.12.54](https://hackmd.io/_uploads/r1enTn-Lp.png) 在本篇论文中,我们提出了一种新的方法,该方法基于Solidity智能合约的CFG和CG的多层次图嵌入,用于训练更准确的漏洞检测模型。 * MANDO- GURU可以显著提高许多其他漏洞检测技术在合同级别的f1值,最高可提高24%。 * * MANDO- GURU显著提升了传统的基于代码分析的技术,最高提升了63.4%。