Ini adalah repo untuk kode dan kumpulan data yang digunakan dalam makalah Deteksi Kerentanan Kontrak Cerdas Bertenaga Model Bahasa Besar: Perspektif Baru, yang diterima oleh konferensi IEEE Trust, Privacy and Security (TPS) 2023.
Jika Anda merasa repositori ini bermanfaat, beri kami bintang! Terima kasih: )
Jika Anda ingin menjalankan kumpulan data Anda sendiri, silakan beralih ke cabang "rilis":
git checkout release
Dapatkan API GPT-4 dari https://platform.openai.com/account/api-keys
Ganti OPENAI_API_KEY = "Masukkan kunci API openai Anda" di src/model.py (baris 4) dengan kunci API Anda.
Siapkan lingkungan Python dengan mengimpor environment.yml sebagai env Conda.
Tetap di folder dasar GPTLens
python src/run_auditor.py --backend=gpt-4 --temperature=0.7 --topk=3 --num_auditor=1
Parameter | Keterangan |
---|---|
backend | Versi GPT |
temperature | Hyper-parameter yang mengontrol keacakan pembuatan. |
topk | Identifikasi k kerentanan per setiap auditor |
num_auditor | Jumlah total auditor independen. |
python src/run_critic.py --backend=gpt-4 --temperature=0 --auditor_dir= " auditor_gpt-4_0.7_top3_1 " --num_critic=1 --shot=few
Parameter | Keterangan |
---|---|
backend | Versi GPT |
temperature | Hyper-parameter yang mengontrol keacakan pembuatan. |
auditor_dir | Direktori log yang dikeluarkan oleh auditor. |
num_critic | Jumlah total kritikus independen. |
shot | Apakah beberapa tembakan atau nol tembakan cepat. |
python src/run_rank.py --auditor_dir= " auditor_gpt-4_0.7_top3_1 " --critic_dir= " critic_gpt-4_0_1_few " --strategy= " default "
Parameter | Keterangan |
---|---|
auditor_dir | Direktori log yang dikeluarkan oleh auditor. |
critic_dir | Direktori log yang dihasilkan oleh kritikus. |
strategy | Strategi untuk menghasilkan skor akhir. |
Beberapa pembaruan:
28/09 : Kami mengamati bahwa output auditor dapat berubah secara signifikan pada periode waktu yang berbeda. Misalnya, GPT-4 dapat dengan mudah mengidentifikasi kerentanan di CVE-2018-19830.sol pada 16 September tetapi mengalami kesulitan mendeteksinya pada 28 September.
{
" 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. "
},
Kami mengunggah serangkaian hasil yang kami peroleh pada 28 September menggunakan GPT-4 dengan 1 auditor, 1 kritikus, dan 3 keluaran per setiap kontrak (lihat src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_zero_0928). Skor gabungan yang kurang dari 5 dapat dianggap tidak termasuk dalam kerentanan.
26/10 : Kami mengamati bahwa keluaran kritik juga dapat berbeda (-.-) pada periode waktu yang berbeda, bahkan dengan masukan yang sama dan suhu disetel ke 0 (pembentukan deterministik). Hal ini mungkin disebabkan oleh pembaruan GPT-4 (?). Untuk membuat penilaian konsisten, kami menambahkan beberapa contoh pengambilan gambar untuk prompt kritik. Kami mengunggah serangkaian hasil kritik dengan prompt beberapa langkah yang diperoleh pada 26 Oktober menggunakan GPT-4 (lihat src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_few_1026).
Repo ini akan terus diperbarui agar pembuatannya lebih konsisten dan kuat.
@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}
}
Jika Anda memiliki pertanyaan, Anda dapat membuka masalah atau menghubungi saya ([email protected]), dan saya akan membalasnya segera setelah saya melihat masalah atau email tersebut.