---
# System prepended metadata

title: 'MANDO-GURU: Vulnerability Detection for Smart Contract Source Code by Heterogeneous Graph Embeddings'

---

# *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）被標識出來，這些節點對應於合約中的語句或代碼行，這使我們能夠在代碼的細節級別進行漏洞檢測。
   - 在這一階段，使用異質圖神經網絡對合約的異質圖進行處理。這些圖中的節點將對應到合約中的不同元素，例如變量、函數調用等。
   - 通過對這些節點的嵌入向量應用節點分類，識別可能包含漏洞的節點，從而精確地檢測並定位合約代碼中的漏洞。

總結，這個方法的核心思想是通過兩個階段的檢測，首先快速排除明顯的不包含漏洞的合約，然後再在細節層面進行深入的漏洞檢測，以提高智能合約漏洞檢測的效率和精確度。這個方法利用異質圖神經網絡，結合了機器學習和深度學習技術，可以幫助識別智能合約中的安全漏洞。