🚀 CodeAstra-7b:オープンソースの先進的な脆弱性検出モデル
CodeAstra-7bは、複数のプログラミング言語に対する脆弱性検出を目的とした微調整言語モデルです。強力なMistral-7B-Instruct-v0.2モデルをベースに、広範な人気のプログラミング言語における潜在的なセキュリティ脆弱性を識別するように特別に訓練されています。これにより、開発者、セキュリティ研究者、コード監査担当者に対して強力なコードセキュリティ検出ツールを提供します。
🚀 クイックスタート
環境準備
以下のPythonコードを使用して、CodeAstra-7bモデルをロードし、コード分析を行うことができます。
import torch
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
peft_model_id = "rootxhacker/CodeAstra-7B"
config = PeftConfig.from_pretrained(peft_model_id)
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_4bit=True, device_map='auto')
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
model = PeftModel.from_pretrained(model, peft_model_id)
def get_completion(query, model, tokenizer):
inputs = tokenizer(query, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.7)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
code_to_analyze = """
def user_input():
name = input("Enter your name: ")
print("Hello, " + name + "!")
user_input()
"""
query = f"Analyze this code for vulnerabilities and quality issues:\n{code_to_analyze}"
result = get_completion(query, model, tokenizer)
print(result)
このスクリプトは、CodeAstra-7bモデルとトークナイザーをロードし、生成結果を得るための関数を提供します。この設定を使用して、コード内の脆弱性と品質問題を分析することができます。
✨ 主な機能
- 多言語対応:Go、Python、C、C++、Fortran、Ruby、Java、Kotlin、C#、PHP、Swift、JavaScript、TypeScriptなど、多くの言語の脆弱性を検出できます。
- 先進的な性能:脆弱性検出タスクで最先端の結果を達成しています。
- カスタムデータセット:包括的な脆弱性検出のために特別に構築された独自のデータセットを使用して訓練されています。
- 大規模訓練:A100 GPUを利用して、効率的かつ強力な訓練が行われています。
📊 性能比較
CodeAstra-7bは、脆弱性検出の正確性において既存のモデルを著しく上回っています。以下は比較表です。
モデル |
正確率 (%) |
gpt4o |
88.78 |
CodeAstra-7b |
83.00 |
codebert-base-finetuned-detect-insecure-code |
65.30 |
CodeBERT |
62.08 |
RoBERTa |
61.05 |
TextCNN |
60.69 |
BiLSTM |
59.37 |
表からわかるように、CodeAstra-7bは83%の印象的な正確率を達成しており、脆弱性検出の分野で他の先進的なモデルを大きく上回っています。
📚 ドキュメント
想定される用途
CodeAstra-7bは、開発者、セキュリティ研究者、コード監査担当者がソースコード内の潜在的なセキュリティ脆弱性を識別するのを支援することを目的としています。開発ワークフローやコードレビュープロセスに組み込むことも、独立したコード分析ツールとして使用することもできます。
複数の脆弱性シナリオ
CodeAstra-7bは、ほとんどの場合でセキュリティ問題を見つけることができますが、同じコード断片に2~3つの脆弱性が存在する場合、その性能は異なる可能性があり、すべての脆弱性を常に正しく識別できないことがあります。ユーザーはこの制限を認識し、このモデルをより広範かつ多面的なセキュリティレビュープロセスの一部として使用する必要があります。
訓練プロセス
CodeAstra-7bは、Mistral-7B-Instruct-v0.2ベースモデルから微調整され、複数のプログラミング言語の脆弱性検出用に特別に構築されたカスタムデータセットを使用して訓練されています。訓練にはA100 GPUが使用され、最高の性能と効率を確保しています。
🔧 技術詳細
テストデバイス
著者は、Cvefix、YesWeHackの脆弱性コードライブラリ、大規模言語モデルで合成生成されたコード、OWASP Juice Shopのソースコードなどのデータセットのコード断片を使用してCodeAstra-7bをテストし、これらの脆弱性のあるスクリプトをGPT4、GPT4oなどの大規模言語モデルと評価比較しました。
📄 ライセンス
CodeAstra-7bは、Apache License 2.0で公開されています。
Copyright 2024 [Harish Santhanalakshmi Ganesan]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
🙏 謝辞
CodeAstra-7bの基盤となった優れたベースモデルを提供してくれたMistral AIチームに感謝します。
⚠️ 重要な注意事項
- このモデルはすべての脆弱性やコード品質問題を検出できない可能性があり、包括的なセキュリティとコードレビュー戦略の一部として使用する必要があります。
- 同じコード断片に2~3つの脆弱性が存在する場合、モデルはすべての脆弱性を正しく識別できないことがあります。
- 誤検知が発生する可能性があり、結果は人間の専門家によって検証する必要があります。
- モデルの性能は、分析対象のコードの複雑性とコンテキストによって異なる可能性があります。
- CodeAstraの性能は、入力コード断片の長さに依存します。
📖 引用
研究やプロジェクトでCodeAstra-7bを使用した場合は、以下のように引用してください。
@software{CodeAstra-7b,
author = {Harish Santhanalakshmi Ganesan},
title = {CodeAstra-7b: State-of-the-Art Vulnerability Detection Model},
year = {2024},
howpublished = {\url{https://huggingface.co/rootxhacker/CodeAstra-7b}}
}