mcpField
U
Utah Salt Lab

Utah Salt Lab

ローカル
github.com/Utah-SaLT-Labセキュリティ1137 週間前に更新

Utah Salt Lab について

Utah Salt Labは、READMEではRethink_Sec_Code_Evalと記載されている、SecCodePLT向け生成コードの単体テストパイプラインです。セキュアコード生成の評価を目的とし、安全のためコンテナ実行を推奨しています。

主な機能

  1. 01生成コードの単体テスト
  2. 02テストコードの前処理と振り分け
  3. 03コンテナ内でのテスト実行
  4. 04評価結果の出力

活用シーン

  1. 01生成されたSecCodePLT解答の評価
  2. 02対応タスクの提出コードのテスト
  3. 03セキュリティ関連テストの隔離実行
  4. 04単体テスト結果の集計

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Rethink_Sec_Code_Eval

SecCodePLT で生成されたコードのユニットテストです。

論文へのリンク:https://arxiv.org/pdf/2503.15554?

ディレクトリ構成

Rethink_Sec_Code_Eval
│   README.md
│   requirements.txt
|   Dockerfile   
│   ...
└───utils
│   │  SecPLT_func_name.json  
│  
│   
│   
└───Data
    │   results/
    │   summary/
│   └───unittest
|       └───000f5e47
│       │   setup.py
│       │   test_case.py
│

インストール

⚠️ コードには rm -rf などのセキュリティ関連の操作が含まれる可能性があるため、コンテナ化された環境でテストを実行することを強く推奨します。コンテナのセットアップ用に Dockerfile を用意しています。以下では、コンテナ内でユニットテストを実行するために CharlieCloud を使用する例を紹介します。コンテナを構築するための Dockerfile を用意していますので、Docker コマンドを使用することもできます。

CharlieCloud のデフォルトの img ディレクトリは /tmp であり、ストレージ容量の問題が発生する場合があります。これを防ぐには、ディレクトリを別の場所に設定できます。

CH_IMAGE_STORAGE=/path/to/a/desired/place

Charliecloud の使用中に問題が発生した場合は、こちらで解決方法が見つかる可能性があります:https://hpc.github.io/charliecloud/faq.html

  1. コンテナをビルドする
ch-image build -t test-runner -f Dockerfile .
  1. パッケージのインストール
pip install -r requirements.txt

コード生成

コードを生成するには、SecCodePLT Hugging Face Space の元の指示プロンプトをダウンロードしてください:https://huggingface.co/datasets/Virtue-AI-HUB/SecCodePLT。

⚠️ 元の SecCodePLT には 1,345 個のタスクが含まれています。ただし、ユニットテストの生成と、問題のあるサンプルの除外を行った結果、最終的に 1,201 個のサンプルに対するユニットテストを生成しました。そのため、ユニットテストをサポートしているのは、これらの 1,201 個のタスクのみです。サポート対象のタスク ID は utils/SecPLT_func_name.json にあります。

ユニットテストを実行するには、生成したコードを次の形式の .jsonl ファイルに保存する必要があります。

{"task_id": <id of the SecCodePLT sample>, "solution": <Generated Code>}

# Example:

{"task_id": "134f1a9c", "solution": def derive_hash(algorithm_name: str, input_data: bytes) -> bytes:...}
注:

使用するモデルに合ったプロンプトテンプレートを選択してください(例:ChatGPT 形式、CodeLLaMA 形式、Qwen 形式)。モデルによっては、関数シグネチャ、docstring、問題の説明を明示的に含めるなど、プロンプトの形式を多少変更する必要があります。誤ったプロンプト形式を使用すると、無効または不完全な解決策が生成され、前処理またはユニットテストに失敗する可能性があります。

前処理

ユニットテストを実行する前に、前処理スクリプトを実行して、コードを各ユニットテストフォルダーに振り分けてください。

python preprocess.py --model <Any name you want> --file_path <path to the jsonl file that store the code>

# Example
python preprocess.py --model qwen --file_path code.jsonl

ユニットテストの実行

sh run.sh <the name you just put after the --model>

#Example
sh run.sh qwen

結果の取得

python get_result.py data/answer.json data/results/<the name you put after run.sh>_SecPLT_results.json --output <path to store the result>

# Example
python get_result.py data/answer.json data/results/qwen_SecPLT_results.json --output eval_result/qwen_eval_result.json

引用

@article{dai2025comprehensive,
  title={A Comprehensive Study of LLM Secure Code Generation},
  author={Dai, Shih-Chieh and Xu, Jun and Tao, Guanhong},
  journal={arXiv preprint arXiv:2503.15554},
  year={2025}
}

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。