Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
AGAS — LLM駆動のエージェント型集団シリング攻撃フレームワーク。適応的なマルチロール戦略を用いてブラックボックスの協調フィルタリング推薦ランキングを操作しつつ、検出を回避する。 | Kitploit
ツール/GitHubGitHub/phkhanhtrinh23/agas
機械学習論文と研究学習と教育AIセキュリティ敵対的攻撃
GitHubphkhanhtrinh23/agas

AGAS

LLM駆動のエージェント型集団シリング攻撃フレームワーク。適応的なマルチロール戦略を用いてブラックボックスの協調フィルタリング推薦ランキングを操作しつつ、検出を回避する。

リポジトリを見る
2713日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

推薦システムに対する効率的かつ効果的なエージェント型グループ・シリング攻撃

これは論文「An Efficient and Effective Agentic Group Shilling Attack on Recommender Systems」の公式コードです。本論文ではAGASを紹介します。これは、ブラックボックスの協調フィルタリング推薦システムに対するLLM駆動のシリング攻撃です。1つの Coordinatorが、一連のラウンドにわたって偽ユーザーのworkerプールを統制します。各ラウンドで、Coordinatorは8つの戦略のうち1つを選択し、 すべてのworkerに役割を割り当てます。その後、workerは自身のReActスタイルの推論ループを用いて、どのアイテムを評価するかを決定します。

AGAS pipeline


1. リポジトリ概要```

agent_attack_rs/ bash/ # Reviewer-friendly shell scripts (RQ1–RQ5) prompts/ # Coordinator + per-role prompt templates scripts/run_agas.py # Single entry point (--dataset --victim ...) src/agas/ roles.py # Role enum {PR, SN, CA, IN} (paper symbols) signals.py # WorkerSignals (τ, γ, φ) + EnvSignals (ρ, Δρ, η, ξ, a) strategies.py # 8-strategy enum agents/ # Coordinator + Worker policies simulation/ # Episode runner (= AGAS algorithm outer loop) llm/ # OpenAI / Ollama recsys/ # Surrogate + 11-victim backends data/ # Dataset loaders + preprocessing pipeline tests/ # Pytest suite

## 2. 手法の要約

AGAS は 4 つのワーカーロールをインスタンス化します(`roles.py` 内の論文記号):

| 記号 | 正式名称 | 役割 |
|--------|----------------|-------------------------------------------------------------------------|
| `PR`   | Profiler       | プラットフォームを調査しブリッジプールを構築するための安全なフィラー項目評価。  |
| `SN`   | Sniper         | ペイロード役割;直接ターゲットプッシュまたはブリッジ項目の昇格。              |
| `CA`   | Camouflageur   | ステルス役割;無害に見える活動で信頼を再構築。                              |
| `IN`   | Inactive       | このラウンドはアクションなし(クールダウンまたは隔離)。                         |

各ラウンドで Coordinator は `strategies.py` から 8 つの戦略のうちちょうど 1 つを選択します(`method_strategies.tex` 参照):

1. **Victim Probe** (`S1_VICTIM_PROBE`)
2. **Bridge Building** (`S2_BRIDGE_BUILDING`、グラフ被害者のみ)
3. **Warm-up** (`S3_WARM_UP`)
4. **First Push** (`S4_FIRST_PUSH`)
5. **Silent Slowdown** (`S5_SILENT_SLOWDOWN`)
6. **Profile Cleanup** (`S6_PROFILE_CLEANUP`)
7. **Safe Replacement** (`S7_SAFE_REPLACEMENT`)
8. **Main Attack** (`S8_MAIN_ATTACK`)

Coordinator はこれらの決定を 2 つのシグナルグループ(`signals.py`)から駆動します:

* **ワーカーシグナル** `τ_{t,w}, γ_{t,w}, φ_{t,w}` — 信頼、リスク、および構造バリデータ。更新式は `method_coordinator.tex` と正確に一致します(`eq:trust_update`、`eq:risk_update`、`eq:risk_decay`、`eq:profile_validator`)。
* **環境シグナル** `ρ^{(t)}, Δρ^{(t)}, η_t, ξ_t = (q_t, s_t), a_t` — ランク、ランク変動、受容率、抑制シグナル、アラートフラグ。疑惑スコア `q_t` は `eq:round_suppression_terms` と `eq:round_suppression_score` からの 5 つの正規化項 `(d̂_t, δ̂_t, m̂_t, ŝ_t, g_t)` の 0.2 重み付き和です。

### ラウンドループ(ASCII)```
                ┌─────────────────────────────────────────────────┐
   t=0…T-1 ──►  │ 1. Observe ρ^{(t)}, update memory m_t           │
                │ 2. Update τ, γ, φ, η, ξ, a                       │
                │ 3. Coordinator picks Strategy ∈ {S1…S8}          │
                │    and assigns Role ∈ {PR, SN, CA, IN} per worker│
                │ 4. Workers act (filler / bridge / target items)  │
                │ 5. Validate + accept actions → ΔR̃^{(t+1)}        │
                │ 6. Refit / query victim → ρ^{(t+1)}              │
                └─────────────────────────────────────────────────┘
                          │
                          ▼
                   t* = argmin_t ρ^{(t)}, return R* = [R ; R̃^{(≤t*)}]

外側ループは src/agas/simulation/episode.py に実装されており、 algorithms/agas_end_to_end.tex を反映しています。

3. 環境

コンポーネント要件テスト済みバージョン
Python≥ 3.103.13.5
PyTorch≥ 2.1 (targets のみ)2.11.0+cu128
CUDAオプション12.8
NumPy≥ 1.242.4.2
Pandas≥ 2.03.0.1
SciPy≥ 1.101.17.0
scikit-learn≥ 1.31.8.0
openai SDK≥ 1.122.21.0

PyTorch と CUDA は深層学習の被害者モデル([targets] エクストラ)にのみ必要です。コア AGAS ループおよびルールベース/サロゲートのパスは、GPU 依存なしで CPU 上で動作します。

4. インストール```bash

pip install -e .

If you want to use the deep-learning victim models (LightGCN, NeuMF, …)

pip install -e '.[targets]'

必須の環境変数:

| 変数               | 目的                                                          | デフォルト               |
|--------------------|---------------------------------------------------------------|--------------------------|
| `OPENAI_API_KEY`   | Coordinator / worker LLM 用の OpenAI Responses API キー。     | *(未設定 → フォールバック)* |
| `OPENAI_MODEL`     | OpenAI に渡されるモデル名。                                   | `gpt-5.1`                |

## 4. データセット

本論文では6つの公開CFベンチマークで評価を行います(`experiment.tex` を参照):

| 短縮名      | ソース                    | ユーザー数 | アイテム数 | インタラクション数   | ダウンロード                                                      | 生ファイルの配置先  |
|-------------|---------------------------|----------:|-------:|-------------------:|-------------------------------------------------------------------|---------------------|
| ML-100K     | MovieLens 100K            |       943 |  1,682 |            100,000 | [GroupLens](https://files.grouplens.org/datasets/movielens/ml-100k.zip) | `data/ml-100k/`     |
| ML-1M       | MovieLens 1M              |     6,040 |  3,706 |          1,000,209 | [GroupLens](https://files.grouplens.org/datasets/movielens/ml-1m.zip)   | `data/ml-1m/`       |
| Genome 2021 | MovieLens Tag Genome 2021 |    37,941 | 84,661 | 2,000,000 (上限あり) | [GroupLens](https://grouplens.org/datasets/movielens/tag-genome-2021/)  | `data/genome2021/`  |
| Netflix     | Netflix Prize             |   342,445 | 17,434 | 2,000,000 (上限あり) | [Kaggle](https://www.kaggle.com/datasets/netflix-inc/netflix-prize-data) | `data/netflix/`     |
| Douban      | Douban Movie              |    28,057 | 49,176 |          8,085,679 | [HKUST](http://shichuan.org/HIN_dataset.html)                     | `data/douban/`      |
| Amazon      | Amazon Reviews 2018       |   998,653 | 30,964 | 2,000,000 (上限あり) | [UCSD](https://nijianmo.github.io/amazon/index.html)              | `data/amazon/`      |

生のダウンロードファイルを `data/<dataset>/` に配置した後、以下を実行してください:```bash
python scripts/preprocess_all.py --data-root data --output-root processed

各データセットは、processed/<dataset>/ 配下の正規化された interactions.csv + items.csv ファイルに書き換えられます。スモークテストでは、MovieLens に同梱されているはるかに小さい ml-latest-small サンプルを使用します。

訓練 / テスト分割プロトコル

前処理パイプラインは分割ファイルを一切保存しません — 完全なインタラクションログをエクスポートします。分割は実行時に適用されます:

段階使用データ詳細
訓練interactions.csv 内のすべてのインタラクションサロゲート(および任意のターゲットモデル)は、過去の評価の完全なセットでフィットされます。
攻撃評価セグメントユーザーに対するランキング各ラウンド後、ターゲットアイテムの平均ランクが、少なくとも1つのターゲットクラスターアイテムに ≥ 4.0 の評価を付けた実際の良性ユーザー(最大2 000ユーザー)全体で測定されます。ホールドアウトテストセットはディスクに書き込まれません。
偽データ注入メモリ内で追加偽ユーザーのインタラクションが追加され、モデルは各ラウンドで増分的に再フィットされます。それらが正規のCSVファイルに混入されることはありません。

これは標準的なシリング攻撃評価プロトコルに従っています: 攻撃者は訓練セットユーザーに対する被害者のランキングを観察し、それに応じて最適化を行い、ブラックボックス展開シナリオを模倣します。

5. 実行方法

ツールをダウンロード