Dies ist das Repo für den Code und die Datensätze, die im Papier „Large Language Model-Powered Smart Contract Vulnerability Detection: New Perspectives“ verwendet werden, das von der IEEE Trust, Privacy and Security (TPS)-Konferenz 2023 angenommen wurde.
Wenn Sie dieses Repository nützlich finden, geben Sie uns bitte einen Stern! Danke schön: )
Wenn Sie Ihren eigenen Datensatz ausführen möchten, wechseln Sie bitte in den Zweig „Release“:
git checkout release
Holen Sie sich die GPT-4-API von https://platform.openai.com/account/api-keys
Ersetzen Sie OPENAI_API_KEY = „Enter your openai API key“ in src/model.py (Zeile 4) durch Ihren API-Schlüssel.
Richten Sie eine Python-Umgebung ein, indem Sie „environment.yml“ als Conda-Umgebung importieren.
Bleiben Sie im GPTLens-Basisordner
python src/run_auditor.py --backend=gpt-4 --temperature=0.7 --topk=3 --num_auditor=1
Parameter | Beschreibung |
---|---|
backend | Die Version von GPT |
temperature | Der Hyperparameter, der die Zufälligkeit der Generierung steuert. |
topk | Identifizieren Sie k Schwachstellen pro Prüfer |
num_auditor | Die Gesamtzahl der unabhängigen Prüfer. |
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 | Beschreibung |
---|---|
backend | Die Version von GPT |
temperature | Der Hyperparameter, der die Zufälligkeit der Generierung steuert. |
auditor_dir | Das Verzeichnis der vom Prüfer ausgegebenen Protokolle. |
num_critic | Die Gesamtzahl der unabhängigen Kritiker. |
shot | Ob Wenig-Schuss- oder Null-Schuss-Prompt. |
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 | Beschreibung |
---|---|
auditor_dir | Das Verzeichnis der vom Prüfer ausgegebenen Protokolle. |
critic_dir | Das Verzeichnis der vom Kritiker ausgegebenen Protokolle. |
strategy | Die Strategie zur Generierung des Endergebnisses. |
Einige Updates:
28.09 .: Wir haben festgestellt, dass die Ergebnisse der Prüfer in verschiedenen Zeiträumen stark schwanken können. Beispielsweise konnte GPT-4 die Schwachstelle in CVE-2018-19830.sol am 16. September leicht identifizieren, hatte jedoch am 28. September Schwierigkeiten, sie zu erkennen.
{
" 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. "
},
Wir haben eine Reihe von Ergebnissen hochgeladen, die wir am 28. September mit GPT-4 mit 1 Prüfer, 1 Kritiker und 3 Ausgaben pro Vertrag erhalten haben (siehe src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_zero_0928). Bei einem Gesamtwert von weniger als 5 kann davon ausgegangen werden, dass es sich nicht um eine Schwachstelle handelt.
26.10 .: Wir haben beobachtet, dass die Ausgabe von Critical zu verschiedenen Zeiträumen auch unterschiedlich (-.-) sein kann, selbst wenn die gleiche Eingabe und die Temperatur auf 0 eingestellt sind (deterministische Erzeugung). Dies könnte durch das Update von GPT-4 (?) verursacht werden. Um eine konsistente Wertung zu gewährleisten, haben wir einige Schussbeispiele zur Kritikeraufforderung hinzugefügt. Wir haben eine Reihe von Ergebnissen der Kritik mit der Few-Shot-Eingabeaufforderung hochgeladen, die am 26. Oktober mit GPT-4 erhalten wurde (siehe src/logs/auditor_gpt-4_0.7_top3_1/critic_gpt-4_0_1_few_1026).
Dieses Repo wird kontinuierlich aktualisiert, um die Generierung konsistenter und robuster zu machen.
@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}
}
Wenn Sie Fragen haben, können Sie entweder ein Problem eröffnen oder mich kontaktieren ([email protected]). Ich werde antworten, sobald ich das Problem sehe, oder eine E-Mail senden.