# *MANDO-GURU: Vulnerability Detection for Smart Contract Source Code by Heterogeneous Graph Embeddings* Heterogeneous Representation for the Generated Control-Flow Graphs and Call Graphs. ## 這論文做了什麼? 本文提出了一种新的工具,用一种新的方法将智能合约表示为专用图,并通过图神经网络在大规模上自动学习其模式,以检测代码行级和合约级的漏洞。 ### 怎麼做的? ![](https://hackmd.io/_uploads/Bk2RjEUfp.png) 他們把智能合約輸入Slither用於生成CG與CFG,然後把CG與CFG轉換成heterogeneous的表達形式,把已經轉換成heterogeneous表達形式的CFG與CG合并(只有轉換後才能合并),然後分別輸入Multi-Metapaths Extraction和Heterogeneous Graph Neural Network中去,先來看看什麼是"Multi-Metapaths Extraction"和"Heterogeneous Graph Neural Network"。 Multi-metapaths extraction 是一個用於處理圖數據(如知識圖譜或社交網絡)的技術,旨在從圖數據中提取多個不同類型的元路徑(meta-paths)或元子圖(subgraphs)。這些元路徑和元子圖是將圖數據中不同實體(如節點或實體)之間的關係捕捉為一種抽象結構的方法。Multi-metapaths extraction 的目標是將圖數據轉換為結構化的特徵,以用於機器學習和數據分析。 這些元路徑通常由領域專家或機器學習算法選擇,以便捕捉圖數據中的特定模式或關係。例如,如果您在知識圖譜中有實體類型A和B,以及它們之間的不同關係(如“屬於”、“工作於”等),則可以構建元路徑,例如"A-工作於-B",來捕捉A實體如何與B實體相關聯。 Multi-metapaths extraction 可以用於以下方面: 1. 圖數據表示學習:通過轉換圖數據為結構化特徵,這些特徵可以用於訓練機器學習模型,如圖神經網絡,以進行圖數據的分類、預測等任務。 1. 關聯性分析:這些元路徑可以幫助您分析圖數據中的不同實體之間的關聯性,並發現潛在的模式或結構。 1. 推薦系統:在社交網絡或電子商務平台中,這種技術可以用於生成個性化的推薦,基於用戶與實體之間的多個元路徑。 總之,Multi-metapaths extraction 是一種有助於處理圖數據的技術,它可以提取多個不同類型的元路徑或元子圖,以揭示圖數據中的模式和關聯性,並為多種應用提供有價值的特徵。 異質圖神經網絡(Heterogeneous Graph Neural Network,簡稱Heterogeneous GNN)是一種用於處理異質圖數據的深度學習模型。異質圖是由不同類型的節點和邊組成的圖,每種節點和邊都具有不同的屬性和意義。這種異質性使得傳統的圖神經網絡難以處理,因為它們通常假設圖中的節點和邊都具有相同的類型和性質。 Heterogeneous GNN 的主要目標是在異質圖上進行節點分類、鏈接預測、推薦系統等任務,並且能夠有效處理不同類型的節點和邊。為實現這一目標,Heterogeneous GNN 使用了多種技術,包括以下要素: 1. 異質圖建模:異質 GNN 能夠捕捉異質圖中不同類型節點和邊之間的關係,這通常需要對異質圖的結構和特徵進行有效的建模。 2. 节点嵌入:Heterogeneous GNN 通常使用節點嵌入技術,將每個節點映射到一個低維向量空間中,以便進行機器學習任務。 3. 異質圖神經網絡層:Heterogeneous GNN 使用多層神經網絡來進行信息聚合和傳播,以捕捉異質圖中的全局關係。 4. 處理不同類型的節點和邊:Heterogeneous GNN 需要有效處理不同類型的節點和邊,通常通過設計不同的消息傳遞機制和聚合函數來實現。 Heterogeneous GNN 的應用包括社交網絡分析、推薦系統、生物信息學、金融领域等,這些領域中的數據通常涉及多種不同類型的實體和相互關聯。異質 GNN 提供了一個強大的工具,以處理這種複雜的數據結構,並提取有價值的信息以支持各種機器學習任務。 異質圖神經網絡在檢測智能合約(Smart Contract)漏洞時的兩個主要階段:粗略檢測(Coarse-Grained Detection)和精細檢測(Fine-Grained Detection)。 1. 粗略檢測(Coarse-Grained Detection): - 在這一階段,首先對智能合約進行粗略檢測,目的是確定一個智能合約是否包含潛在的漏洞。 - 為實現這一目標,首先將智能合約轉換成嵌入向量(Embeddings),這些嵌入向量可以用來表示合約的特徵。 - 接著,利用一種稱為多層感知器(MLP)的機器學習模型,對這些嵌入向量進行分類,區分合約是"乾净"(clean)還是"有漏洞"(vulnerable)。這有助於篩選掉乾净的合約,從而減少後續的精細檢測階段所需處理的合約數量,同時減少噪音數據。 2. 精細檢測(Fine-Grained Detection): - 在進行粗略檢測後,智能合約中可能包含潛在漏洞的節點(Node)被標識出來,這些節點對應於合約中的語句或代碼行,這使我們能夠在代碼的細節級別進行漏洞檢測。 - 在這一階段,使用異質圖神經網絡對合約的異質圖進行處理。這些圖中的節點將對應到合約中的不同元素,例如變量、函數調用等。 - 通過對這些節點的嵌入向量應用節點分類,識別可能包含漏洞的節點,從而精確地檢測並定位合約代碼中的漏洞。 總結,這個方法的核心思想是通過兩個階段的檢測,首先快速排除明顯的不包含漏洞的合約,然後再在細節層面進行深入的漏洞檢測,以提高智能合約漏洞檢測的效率和精確度。這個方法利用異質圖神經網絡,結合了機器學習和深度學習技術,可以幫助識別智能合約中的安全漏洞。