Это репозиторий кода и наборов данных, использованных в документе «Обнаружение уязвимостей смарт-контрактов на основе модели большого языка: новые перспективы», принятом конференцией IEEE Trust, Privacy and Security (TPS) 2023.
Если вы найдете этот репозиторий полезным, поставьте нам звезду! Спасибо: )
Если вы хотите запустить свой собственный набор данных, перейдите в ветку «релиз»:
git checkout release
Получите API GPT-4 по адресу https://platform.openai.com/account/api-keys.
Замените OPENAI_API_KEY = «Введите свой ключ API openai» в src/model.py (строка 4) на свой ключ API.
Настройте среду Python, импортировав Environment.yml как среду Conda.
Оставаться в базовой папке 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 | Стратегия получения итогового результата. |
Некоторые обновления:
28 сентября : Мы заметили, что результаты аудиторов могут сильно меняться в разные периоды времени. Например, GPT-4 мог легко обнаружить уязвимость в CVE-2018-19830.sol 16 сентября, но с трудом обнаружил ее 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. "
},
Мы загрузили набор результатов, полученных 28 сентября с использованием GPT-4 с 1 аудитором, 1 критиком и 3 выходными данными для каждого контракта (см. src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_zero_0928). Суммарный балл менее 5 можно считать уязвимостью.
26.10 : Мы заметили, что выходной сигнал критика также может быть разным (-.-) в разные периоды времени, даже при одном и том же входном сигнале и температуре, установленной на 0 (детерминированная генерация). Это может быть вызвано обновлением GPT-4 (?). Чтобы обеспечить единообразие оценок, мы добавили несколько примеров кадров для подсказки критикам. Мы загрузили набор результатов критика с подсказкой из нескольких кадров, полученных 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]), и я отвечу, как только увижу проблему или напишу электронное письмо.