這是論文《大型語言模型驅動的智慧合約漏洞檢測:新視角》中使用的程式碼和資料集的儲存庫,已被 IEEE 信任、隱私和安全 (TPS) 會議 2023 接受。
如果您覺得這個儲存庫有用,請給我們一個星星!謝謝你: )
如果您想運行自己的資料集,請切換到「release」分支:
git checkout release
從 https://platform.openai.com/account/api-keys 取得 GPT-4 API
將 src/model.py(第 4 行)中的 OPENAI_API_KEY = "Enter your openai API key" 替換為您的 API 金鑰。
透過將environment.yml 導入為Conda env 來設定Python 環境。
留在 GPTLens 基本資料夾中
python src/run_auditor.py --backend=gpt-4 --temperature=0.7 --topk=3 --num_auditor=1
範圍 | 描述 |
---|---|
backend | GPT 版本 |
temperature | 控制生成隨機性的超參數。 |
topk | 為每位審核員識別 k 個漏洞 |
num_auditor | 獨立審計師的總數。 |
python src/run_critic.py --backend=gpt-4 --temperature=0 --auditor_dir= " auditor_gpt-4_0.7_top3_1 " --num_critic=1 --shot=few
範圍 | 描述 |
---|---|
backend | GPT 版本 |
temperature | 控制生成隨機性的超參數。 |
auditor_dir | 審計員輸出的日誌目錄。 |
num_critic | 獨立評論家的總數。 |
shot | 無論是少射還是零射都會提示。 |
python src/run_rank.py --auditor_dir= " auditor_gpt-4_0.7_top3_1 " --critic_dir= " critic_gpt-4_0_1_few " --strategy= " default "
範圍 | 描述 |
---|---|
auditor_dir | 審計員輸出的日誌目錄。 |
critic_dir | 批評家輸出的日誌目錄。 |
strategy | 產生最終得分的策略。 |
一些更新:
09/28 :我們觀察到審計員的產出在不同時間段可能會有很大偏差。例如,GPT-4 在 9 月 16 日可以輕鬆識別 CVE-2018-19830.sol 中的漏洞,但在 9 月 28 日卻很難檢測到。
{
" function_name " : " UBSexToken " ,
" vulnerability " : " Unexpected Behaviour " ,
" criticism " : " The reasoning is correct. The function name does not match the contract name, which means it is not the constructor and can be called by anyone at any time. This can lead to the totalSupply and owner of the token being reset, which is a serious vulnerability. " ,
" correctness " : 9,
" severity " : 9,
" profitability " : 9,
" reason " : " The function name does not match the contract name. This indicates that this function is intended to be the constructor, but it is not. This means that anyone can call the function at any time and reset the totalSupply and owner of the token. " ,
" code " : " function UBSexToken() {n owner = msg.sender;n totalSupply = 1.9 * 10 ** 26;n balances[owner] = totalSupply;n} " ,
" label " : " Access Control " ,
" file_name " : " 2018-19830.sol " ,
" description " : " The UBSexToken() function of a smart contract implementation for Business Alliance Financial Circle (BAFC), an tradable Ethereum ERC20 token, allows attackers to change the owner of the contract, because the function is public (by default) and does not check the caller's identity. "
},
我們上傳了9 月28 日使用GPT-4 獲得的一組結果,每個合約有1 個審計員、1 個評論家和3 個輸出(請參閱src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_zero_0928 )。綜合得分低於5分即可視為不存在漏洞。
10/26 :我們觀察到,即使輸入相同且溫度設定為 0(確定性生成),critic 的輸出在不同時間段也可能不同 (-.-)。這可能是由 GPT-4 的更新引起的(?)。為了使評分保持一致,我們添加了一些鏡頭範例以供評論家提示。我們上傳了 10 月 26 日使用 GPT-4 獲得的帶有少量提示的批評者的一組結果(請參閱 src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_few_1026)。
該存儲庫將不斷更新,以使生成更加一致和健壯。
@misc{hu2023large,
title={Large Language Model-Powered Smart Contract Vulnerability Detection: New Perspectives},
author={Sihao Hu and Tiansheng Huang and Fatih İlhan and Selim Furkan Tekin and Ling Liu},
year={2023},
eprint={2310.01152},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
如果您有任何疑問,您可以提出問題或聯繫我([email protected]),我會在看到問題或電子郵件後立即回覆。