Efficient Avoidance of Vulnerabilities in Auto-completed Smart Contract Code Using Vulnerability-constrained Decoding

要約

コードの自動補完により、開発者はコーディングを大幅にスピードアップできます。
トランスフォーマーベースの大規模言語モデル (LLM) テクノロジーの最近の進歩は、コード合成に適用されています。
しかし、研究によると、そのような合成コードの多くには脆弱性が含まれています。
我々は、このようなモデルによって生成される脆弱なコードの量を削減するための、新しい脆弱性を制約したデコード手法を提案します。
ラベル付けされた脆弱なコード行の小さなデータセットを使用して、埋め込み分類子として機能するコード生成時に脆弱性ラベルを含めるように LLM を微調整します。
次に、デコード中に、脆弱なコードの生成を避けるために、モデルがこれらのラベルを生成することを拒否します。
この方法を評価するために、SC セキュリティの厳格な要件により、ケーススタディとしてイーサリアム ブロックチェーン スマート コントラクト (SC) を自動的に完了することを選択しました。
まず、2,217,692 個の SC から重複を削除した後、186,397 個の Ethereum SC を使用して、60 億パラメータの GPT-J モデルを微調整しました。
微調整には 10 個の GPU を使用して 1 週間以上かかりました。
結果は、微調整されたモデルが平均 BLEU (BiLingual Evaluation Understudy) スコア 0.557 の SC を合成できることを示しました。
ただし、オートコンプリート SC 内の多くのコードには脆弱性がありました。
さまざまなタイプの脆弱性を含む 176 個の SC の脆弱な行の前のコードを使用してコードをオートコンプリートしたところ、オートコンプリートされたコードの 70% 以上が安全でないことがわかりました。
そこで、同じ種類の脆弱性を含む他の 941 個の脆弱な SC でモデルをさらに微調整し、脆弱性を制約したデコードを適用しました。
微調整には 4 つの GPU を使用してわずか 1 時間かかりました。
次に、176 個の SC を再度オートコンプリートしたところ、このアプローチにより生成されるコードの 62% が脆弱であると特定され、そのうちの 67% の生成を回避できることがわかりました。これは、このアプローチがオートコンプリートされたコードの脆弱性を効率的かつ効果的に回避できることを示しています。

要約(オリジナル)

Auto-completing code enables developers to speed up coding significantly. Recent advances in transformer-based large language model (LLM) technologies have been applied to code synthesis. However, studies show that many of such synthesized codes contain vulnerabilities. We propose a novel vulnerability-constrained decoding approach to reduce the amount of vulnerable code generated by such models. Using a small dataset of labeled vulnerable lines of code, we fine-tune an LLM to include vulnerability labels when generating code, acting as an embedded classifier. Then, during decoding, we deny the model to generate these labels to avoid generating vulnerable code. To evaluate the method, we chose to automatically complete Ethereum Blockchain smart contracts (SCs) as the case study due to the strict requirements of SC security. We first fine-tuned the 6-billion-parameter GPT-J model using 186,397 Ethereum SCs after removing the duplication from 2,217,692 SCs. The fine-tuning took more than one week using ten GPUs. The results showed that our fine-tuned model could synthesize SCs with an average BLEU (BiLingual Evaluation Understudy) score of 0.557. However, many codes in the auto-completed SCs were vulnerable. Using the code before the vulnerable line of 176 SCs containing different types of vulnerabilities to auto-complete the code, we found that more than 70% of the auto-completed codes were insecure. Thus, we further fine-tuned the model on other 941 vulnerable SCs containing the same types of vulnerabilities and applied vulnerability-constrained decoding. The fine-tuning took only one hour with four GPUs. We then auto-completed the 176 SCs again and found that our approach could identify 62% of the code to be generated as vulnerable and avoid generating 67% of them, indicating the approach could efficiently and effectively avoid vulnerabilities in the auto-completed code.

arxiv情報

著者 André Storhaug,Jingyue Li,Tianyuan Hu
発行日 2023-10-06 12:11:00+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.CL, cs.CR パーマリンク