Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitignore +46 -0
- Dockerfile +13 -0
- PROJECT_CONTEXT.md +99 -0
- README.md +202 -10
- configs/active_corpus_smoke_40.yaml +29 -0
- configs/agentdojo_tool_10.yaml +30 -0
- configs/agentdojo_tool_10_mitigated.yaml +36 -0
- configs/agentdojo_tool_10_mock.yaml +30 -0
- configs/agentdojo_tool_10_mock_mitigated.yaml +36 -0
- configs/baseline.yaml +23 -0
- configs/benign_control_25.yaml +24 -0
- configs/benign_control_25_gpt_oss_120b.yaml +24 -0
- configs/benign_control_25_gpt_oss_120b_mitigated.yaml +30 -0
- configs/benign_control_25_gpt_oss_20b.yaml +24 -0
- configs/benign_control_25_gpt_oss_20b_mitigated.yaml +30 -0
- configs/benign_control_25_groq_compound.yaml +24 -0
- configs/benign_control_25_groq_compound_mitigated.yaml +30 -0
- configs/benign_control_25_llama4scout.yaml +24 -0
- configs/benign_control_25_llama4scout_mitigated.yaml +30 -0
- configs/benign_control_25_llama70b.yaml +24 -0
- configs/benign_control_25_llama70b_mitigated.yaml +30 -0
- configs/benign_control_25_mitigated.yaml +30 -0
- configs/benign_control_25_qwen32b.yaml +24 -0
- configs/benign_control_25_qwen32b_mitigated.yaml +30 -0
- configs/groq_20.yaml +23 -0
- configs/groq_smoke.yaml +23 -0
- configs/hackaprompt_adaptive_1_mitigated.yaml +37 -0
- configs/hackaprompt_direct_10.yaml +31 -0
- configs/hackaprompt_direct_10_mitigated.yaml +37 -0
- configs/hackaprompt_direct_10_mock.yaml +31 -0
- configs/hackaprompt_direct_10_mock_mitigated.yaml +37 -0
- configs/hackaprompt_leakage_20.yaml +31 -0
- configs/hackaprompt_new_families_75.yaml +29 -0
- configs/hackaprompt_new_families_75_gpt_oss_120b.yaml +29 -0
- configs/hackaprompt_new_families_75_gpt_oss_120b_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_gpt_oss_20b.yaml +29 -0
- configs/hackaprompt_new_families_75_gpt_oss_20b_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_groq_compound.yaml +29 -0
- configs/hackaprompt_new_families_75_groq_compound_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_llama4scout.yaml +29 -0
- configs/hackaprompt_new_families_75_llama4scout_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_llama70b.yaml +29 -0
- configs/hackaprompt_new_families_75_llama70b_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_mitigated.yaml +35 -0
- configs/hackaprompt_new_families_75_qwen32b.yaml +29 -0
- configs/hackaprompt_new_families_75_qwen32b_mitigated.yaml +35 -0
- configs/hackaprompt_override_25.yaml +33 -0
- configs/hackaprompt_override_25_gpt_oss_120b.yaml +28 -0
- configs/hackaprompt_override_25_gpt_oss_120b_mitigated.yaml +34 -0
- configs/hackaprompt_override_25_gpt_oss_20b.yaml +28 -0
.gitignore
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Python
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[cod]
|
| 4 |
+
*.so
|
| 5 |
+
.venv/
|
| 6 |
+
.venv312/
|
| 7 |
+
*.egg-info/
|
| 8 |
+
|
| 9 |
+
# Tooling
|
| 10 |
+
.pytest_cache/
|
| 11 |
+
.mypy_cache/
|
| 12 |
+
.ruff_cache/
|
| 13 |
+
|
| 14 |
+
# OS/editor
|
| 15 |
+
.DS_Store
|
| 16 |
+
.vscode/
|
| 17 |
+
.idea/
|
| 18 |
+
|
| 19 |
+
# Experiment outputs
|
| 20 |
+
results/*
|
| 21 |
+
!results/.gitkeep
|
| 22 |
+
!results/*/
|
| 23 |
+
!results/comparisons/
|
| 24 |
+
logs/*
|
| 25 |
+
!logs/.gitkeep
|
| 26 |
+
|
| 27 |
+
# Data artifacts
|
| 28 |
+
data/*
|
| 29 |
+
!data/.gitkeep
|
| 30 |
+
!data/README.md
|
| 31 |
+
!data/raw_sources/
|
| 32 |
+
!data/raw_sources/.gitkeep
|
| 33 |
+
!data/curated/
|
| 34 |
+
!data/curated/.gitkeep
|
| 35 |
+
!data/normalized/
|
| 36 |
+
!data/normalized/.gitkeep
|
| 37 |
+
!data/notes/
|
| 38 |
+
!data/notes/.gitkeep
|
| 39 |
+
|
| 40 |
+
# Local large raw HackAPrompt dataset
|
| 41 |
+
data/raw_sources/hackaprompt/hackaprompt_full.jsonl
|
| 42 |
+
data/raw_sources/hackaprompt/hackaprompt_full.parquet
|
| 43 |
+
data/raw_sources/hackaprompt/hackaprompt.parquet
|
| 44 |
+
|
| 45 |
+
#env
|
| 46 |
+
.env
|
Dockerfile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.11-slim
|
| 2 |
+
|
| 3 |
+
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
COPY requirements-hf.txt .
|
| 6 |
+
RUN pip install --no-cache-dir -r requirements-hf.txt
|
| 7 |
+
|
| 8 |
+
COPY dashboard/ ./dashboard/
|
| 9 |
+
COPY results/ ./results/
|
| 10 |
+
|
| 11 |
+
EXPOSE 7860
|
| 12 |
+
|
| 13 |
+
CMD ["uvicorn", "dashboard.app:app", "--host", "0.0.0.0", "--port", "7860"]
|
PROJECT_CONTEXT.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# LLM Prompt Injection Security Evaluation Framework
|
| 2 |
+
|
| 3 |
+
## Project Overview
|
| 4 |
+
|
| 5 |
+
### Project Type
|
| 6 |
+
- University research capstone project focused on LLM security.
|
| 7 |
+
|
| 8 |
+
### Project Objective
|
| 9 |
+
- Design and implement a testing framework that evaluates how vulnerable LLM chatbots are to prompt injection attacks.
|
| 10 |
+
- Evaluate how mitigation strategies improve security outcomes.
|
| 11 |
+
|
| 12 |
+
The system will:
|
| 13 |
+
1. Simulate prompt injection attacks.
|
| 14 |
+
2. Measure how often attacks succeed.
|
| 15 |
+
3. Apply mitigation strategies.
|
| 16 |
+
4. Measure how much mitigation reduces successful attacks.
|
| 17 |
+
|
| 18 |
+
## Scope Clarification
|
| 19 |
+
|
| 20 |
+
### This Project Is NOT
|
| 21 |
+
- Training LLM models
|
| 22 |
+
- Building a new AI model
|
| 23 |
+
- Building a ChatGPT-like system
|
| 24 |
+
- Performing large-scale machine learning training
|
| 25 |
+
|
| 26 |
+
### This Project IS
|
| 27 |
+
- Designing attack scenarios
|
| 28 |
+
- Evaluating LLM security vulnerabilities
|
| 29 |
+
- Implementing defensive mitigation strategies
|
| 30 |
+
- Measuring improvements after mitigation
|
| 31 |
+
|
| 32 |
+
## Attack Scenarios to Evaluate
|
| 33 |
+
- Direct prompt injection through user inputs
|
| 34 |
+
- Attempts to extract hidden system prompts or internal instructions
|
| 35 |
+
- Indirect prompt injection through retrieved documents (RAG scenarios)
|
| 36 |
+
- Adaptive attackers who modify prompts after observing system responses
|
| 37 |
+
|
| 38 |
+
The framework should allow easily adding new attack strategies.
|
| 39 |
+
|
| 40 |
+
## Mitigation Strategies
|
| 41 |
+
- Prompt hardening
|
| 42 |
+
- Input filtering
|
| 43 |
+
- Instruction isolation
|
| 44 |
+
- Detection mechanisms (e.g., classifier-based detection)
|
| 45 |
+
|
| 46 |
+
The framework should support comparing multiple mitigation approaches.
|
| 47 |
+
|
| 48 |
+
The system should also allow analyzing trade-offs such as:
|
| 49 |
+
- Security improvement
|
| 50 |
+
- Usability impact
|
| 51 |
+
- False positives or false negatives
|
| 52 |
+
|
| 53 |
+
## Evaluation Metrics
|
| 54 |
+
The system should measure:
|
| 55 |
+
- Attack Success Rate (ASR)
|
| 56 |
+
- Reduction in successful attacks after mitigation
|
| 57 |
+
- False positive / false negative rates for detection methods
|
| 58 |
+
- Impact on normal system performance
|
| 59 |
+
|
| 60 |
+
## Models
|
| 61 |
+
The framework may test different LLMs including:
|
| 62 |
+
- API-based models (e.g., GPT-family models)
|
| 63 |
+
- Open-source models (e.g., LLaMA, Mistral)
|
| 64 |
+
|
| 65 |
+
The architecture should support easily adding new models.
|
| 66 |
+
|
| 67 |
+
## System Architecture (High Level)
|
| 68 |
+
The pipeline will conceptually look like this:
|
| 69 |
+
|
| 70 |
+
LLM Chatbot
|
| 71 |
+
↓
|
| 72 |
+
Attack Generator
|
| 73 |
+
↓
|
| 74 |
+
Attack Execution
|
| 75 |
+
↓
|
| 76 |
+
Mitigation Layer
|
| 77 |
+
↓
|
| 78 |
+
Evaluation Metrics
|
| 79 |
+
↓
|
| 80 |
+
Results & Analysis
|
| 81 |
+
|
| 82 |
+
The framework should support running multiple experiments and logging results.
|
| 83 |
+
|
| 84 |
+
## Repository Goals
|
| 85 |
+
The repository should prioritize:
|
| 86 |
+
- Modular architecture
|
| 87 |
+
- Reproducible experiments
|
| 88 |
+
- Clear documentation
|
| 89 |
+
- Experiment logging
|
| 90 |
+
- Easy extension for new attacks
|
| 91 |
+
- Easy extension for new mitigation strategies
|
| 92 |
+
|
| 93 |
+
## Research Inspiration
|
| 94 |
+
This project is inspired by research on prompt injection attacks and LLM security, including academic papers that:
|
| 95 |
+
- Formalize prompt injection attacks
|
| 96 |
+
- Benchmark attack strategies
|
| 97 |
+
- Compare defense mechanisms
|
| 98 |
+
|
| 99 |
+
The goal is to build a practical experimental framework inspired by this research.
|
README.md
CHANGED
|
@@ -1,10 +1,202 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# LLM Prompt Injection Security Evaluation Framework
|
| 2 |
+
|
| 3 |
+
This repository contains the capstone framework for evaluating prompt injection
|
| 4 |
+
attacks against LLM systems, applying mitigations, and comparing security
|
| 5 |
+
outcomes before and after defense.
|
| 6 |
+
|
| 7 |
+
## Project State
|
| 8 |
+
|
| 9 |
+
The current branch reflects a usable end-to-end research framework:
|
| 10 |
+
|
| 11 |
+
- a stable schema for datasets, configs, and run artifacts
|
| 12 |
+
- an active normalized corpus built from HackAPrompt and TensorTrust
|
| 13 |
+
- runnable model adapters for `mock`, `groq`, and `ollama`
|
| 14 |
+
- category-aware evaluation and scoring
|
| 15 |
+
- a mitigation layer integrated into the runner
|
| 16 |
+
- baseline-vs-defended comparison workflows
|
| 17 |
+
- a lightweight Streamlit dashboard for presenting results
|
| 18 |
+
|
| 19 |
+
This is a capstone evaluation framework, not a production security product.
|
| 20 |
+
|
| 21 |
+
## Scope
|
| 22 |
+
|
| 23 |
+
### In scope
|
| 24 |
+
|
| 25 |
+
- attack scenario design and normalization
|
| 26 |
+
- LLM vulnerability evaluation
|
| 27 |
+
- mitigation implementation
|
| 28 |
+
- comparative measurement and reporting
|
| 29 |
+
|
| 30 |
+
### Out of scope
|
| 31 |
+
|
| 32 |
+
- training new foundation models
|
| 33 |
+
- building a consumer chatbot product
|
| 34 |
+
- large-scale model training infrastructure
|
| 35 |
+
|
| 36 |
+
## Repository Structure
|
| 37 |
+
|
| 38 |
+
- `src/prompt_injection_framework/attacks/`: attack logic and generators
|
| 39 |
+
- `src/prompt_injection_framework/mitigations/`: request and response defenses
|
| 40 |
+
- `src/prompt_injection_framework/models/`: model adapters
|
| 41 |
+
- `src/prompt_injection_framework/evaluation/`: scoring and metrics
|
| 42 |
+
- `src/prompt_injection_framework/orchestration/`: experiment runner and config loading
|
| 43 |
+
- `configs/`: runnable experiment configurations
|
| 44 |
+
- `dashboard/`: Streamlit demo app
|
| 45 |
+
- `tests/`: automated validation
|
| 46 |
+
- `docs/`: project, methodology, and workflow documentation
|
| 47 |
+
|
| 48 |
+
## Active Data State
|
| 49 |
+
|
| 50 |
+
- Active normalized sources:
|
| 51 |
+
- HackAPrompt: `1,000` curated cases
|
| 52 |
+
- TensorTrust: `1,346` curated cases
|
| 53 |
+
- Active corpus files:
|
| 54 |
+
- `data/normalized/attack_cases.jsonl`
|
| 55 |
+
- `data/normalized/attack_cases.enriched.jsonl`
|
| 56 |
+
- Total active normalized corpus:
|
| 57 |
+
- `2,346` cases
|
| 58 |
+
|
| 59 |
+
AgentDojo remains a reference source but is not part of the active experiment
|
| 60 |
+
corpus in the current project state.
|
| 61 |
+
|
| 62 |
+
## Supported Model Providers
|
| 63 |
+
|
| 64 |
+
- `mock`
|
| 65 |
+
- for fast validation and testing
|
| 66 |
+
- `groq`
|
| 67 |
+
- for hosted real-model experiments
|
| 68 |
+
- `ollama`
|
| 69 |
+
- for local/open-source model experiments
|
| 70 |
+
|
| 71 |
+
More detail is documented in `docs/PHASE4_BASELINE_MODELS.md`.
|
| 72 |
+
|
| 73 |
+
## Execution Pipeline
|
| 74 |
+
|
| 75 |
+
1. Load normalized cases
|
| 76 |
+
2. Filter and sample the experiment slice
|
| 77 |
+
3. Map cases into taxonomy-aware experiment records
|
| 78 |
+
4. Build model requests
|
| 79 |
+
5. Apply mitigation if enabled
|
| 80 |
+
6. Run the model or mitigation block path
|
| 81 |
+
7. Apply response mitigation
|
| 82 |
+
8. Score outputs
|
| 83 |
+
9. Save manifest, case results, and summary artifacts
|
| 84 |
+
|
| 85 |
+
## Quick Start
|
| 86 |
+
|
| 87 |
+
### Environment setup
|
| 88 |
+
|
| 89 |
+
```bash
|
| 90 |
+
python3 -m venv .venv
|
| 91 |
+
source .venv/bin/activate
|
| 92 |
+
pip install -U pip
|
| 93 |
+
pip install -e .[dev]
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
### Run a baseline experiment
|
| 97 |
+
|
| 98 |
+
```bash
|
| 99 |
+
python -m prompt_injection_framework.orchestration.run_experiment --config configs/baseline.yaml
|
| 100 |
+
```
|
| 101 |
+
|
| 102 |
+
### Run tests
|
| 103 |
+
|
| 104 |
+
```bash
|
| 105 |
+
pytest
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
### Run the dashboard
|
| 109 |
+
|
| 110 |
+
```bash
|
| 111 |
+
pip install -e .[dashboard]
|
| 112 |
+
streamlit run dashboard/streamlit_app.py
|
| 113 |
+
```
|
| 114 |
+
|
| 115 |
+
## Core Experiment Configs
|
| 116 |
+
|
| 117 |
+
### Baseline and evaluation slices
|
| 118 |
+
|
| 119 |
+
- `configs/active_corpus_smoke_40.yaml`
|
| 120 |
+
- `configs/hackaprompt_override_25.yaml`
|
| 121 |
+
- `configs/hackaprompt_leakage_20.yaml`
|
| 122 |
+
- `configs/tensortrust_hijacking_25.yaml`
|
| 123 |
+
- `configs/tensortrust_extraction_25.yaml`
|
| 124 |
+
|
| 125 |
+
### Defended counterparts
|
| 126 |
+
|
| 127 |
+
- `configs/hackaprompt_override_25_mitigated.yaml`
|
| 128 |
+
- `configs/tensortrust_hijacking_25_mitigated.yaml`
|
| 129 |
+
- `configs/hackaprompt_direct_10_mitigated.yaml`
|
| 130 |
+
- `configs/agentdojo_tool_10_mitigated.yaml`
|
| 131 |
+
- `configs/hackaprompt_adaptive_1_mitigated.yaml`
|
| 132 |
+
|
| 133 |
+
### Mock validation pairs
|
| 134 |
+
|
| 135 |
+
- `configs/hackaprompt_override_25_mock.yaml`
|
| 136 |
+
- `configs/hackaprompt_override_25_mock_mitigated.yaml`
|
| 137 |
+
- `configs/tensortrust_hijacking_25_mock.yaml`
|
| 138 |
+
- `configs/tensortrust_hijacking_25_mock_mitigated.yaml`
|
| 139 |
+
- `configs/hackaprompt_direct_10_mock.yaml`
|
| 140 |
+
- `configs/hackaprompt_direct_10_mock_mitigated.yaml`
|
| 141 |
+
- `configs/agentdojo_tool_10_mock.yaml`
|
| 142 |
+
- `configs/agentdojo_tool_10_mock_mitigated.yaml`
|
| 143 |
+
|
| 144 |
+
### Local/open-source baselines
|
| 145 |
+
|
| 146 |
+
- `configs/ollama_llama_hackaprompt_override_25.yaml`
|
| 147 |
+
- `configs/ollama_qwen_tensortrust_hijacking_25.yaml`
|
| 148 |
+
|
| 149 |
+
## Mitigation Layer
|
| 150 |
+
|
| 151 |
+
Supported strategies:
|
| 152 |
+
|
| 153 |
+
- `none`
|
| 154 |
+
- `prompt_hardening`
|
| 155 |
+
- `instruction_isolation`
|
| 156 |
+
- `keyword_guardrail`
|
| 157 |
+
- `surface_aligned`
|
| 158 |
+
|
| 159 |
+
`surface_aligned` is the main defended path for the current framework because
|
| 160 |
+
it routes by attack surface and category, records mitigation behavior in the
|
| 161 |
+
artifacts, and supports before-vs-after comparisons directly in the runner.
|
| 162 |
+
|
| 163 |
+
More detail is documented in `docs/MITIGATION_LAYER.md`.
|
| 164 |
+
|
| 165 |
+
## Evaluation and Comparison
|
| 166 |
+
|
| 167 |
+
The framework currently supports:
|
| 168 |
+
|
| 169 |
+
- attack success rate
|
| 170 |
+
- prompt leakage tracking
|
| 171 |
+
- refusal tracking
|
| 172 |
+
- benign utility and false-positive reporting
|
| 173 |
+
- category, surface, and source breakdowns
|
| 174 |
+
- baseline-vs-defended comparison outputs in JSON and Markdown
|
| 175 |
+
|
| 176 |
+
Useful documentation:
|
| 177 |
+
|
| 178 |
+
- `docs/PHASE5_BASELINE_EVALUATION.md`
|
| 179 |
+
- `docs/PHASE7_EXPERIMENT_GUIDE.md`
|
| 180 |
+
- `docs/GROQ_RUNBOOK.md`
|
| 181 |
+
- `docs/RESULTS_TEMPLATE.md`
|
| 182 |
+
|
| 183 |
+
## Dashboard
|
| 184 |
+
|
| 185 |
+
The repository includes a lightweight Streamlit dashboard that reads the saved
|
| 186 |
+
experiment artifacts and presents:
|
| 187 |
+
|
| 188 |
+
- run summaries
|
| 189 |
+
- baseline-vs-defended comparisons
|
| 190 |
+
- category, surface, and source breakdowns
|
| 191 |
+
- case-level inspection views
|
| 192 |
+
|
| 193 |
+
See `docs/DASHBOARD_GUIDE.md`.
|
| 194 |
+
|
| 195 |
+
## Notes
|
| 196 |
+
|
| 197 |
+
- The schema contract is documented in `docs/SCHEMA_CONTRACT.md`.
|
| 198 |
+
- The taxonomy contract is documented in `docs/ATTACK_TAXONOMY.md`.
|
| 199 |
+
- Success criteria are documented in `docs/SUCCESS_CRITERIA.md`.
|
| 200 |
+
- The current system is strong enough for capstone experiments, but real-model
|
| 201 |
+
evaluation still shows that some benchmark slices benefit from additional
|
| 202 |
+
mitigation refinement.
|
configs/active_corpus_smoke_40.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: active_corpus_smoke_40
|
| 3 |
+
description: Mixed active-corpus smoke run across HackAPrompt and TensorTrust
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 40
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
- TensorTrust
|
| 15 |
+
|
| 16 |
+
model:
|
| 17 |
+
provider: groq
|
| 18 |
+
name: llama-3.1-8b-instant
|
| 19 |
+
max_tokens: 256
|
| 20 |
+
temperature: 0.0
|
| 21 |
+
execution_mode: plain
|
| 22 |
+
|
| 23 |
+
mitigation:
|
| 24 |
+
enabled: false
|
| 25 |
+
strategy: none
|
| 26 |
+
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/agentdojo_tool_10.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: agentdojo_tool_10
|
| 3 |
+
description: Tool-mediated subset for indirect and retrieved-content evaluation
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- AgentDojo
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- tool_mediated
|
| 16 |
+
|
| 17 |
+
model:
|
| 18 |
+
provider: groq
|
| 19 |
+
name: llama-3.1-8b-instant
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: context_first
|
| 23 |
+
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/agentdojo_tool_10_mitigated.yaml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: agentdojo_tool_10_mitigated
|
| 3 |
+
description: Tool-mediated subset with instruction-isolation style mitigations enabled
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- AgentDojo
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- tool_mediated
|
| 16 |
+
|
| 17 |
+
model:
|
| 18 |
+
provider: groq
|
| 19 |
+
name: llama-3.1-8b-instant
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: context_first
|
| 23 |
+
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: true
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
|
| 34 |
+
evaluation:
|
| 35 |
+
metrics:
|
| 36 |
+
- attack_success
|
configs/agentdojo_tool_10_mock.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: agentdojo_tool_10_mock
|
| 3 |
+
description: Mock baseline run for AgentDojo tool-mediated subset
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- AgentDojo
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- tool_mediated
|
| 16 |
+
|
| 17 |
+
model:
|
| 18 |
+
provider: mock
|
| 19 |
+
name: mock-model
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: context_first
|
| 23 |
+
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/agentdojo_tool_10_mock_mitigated.yaml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: agentdojo_tool_10_mock_mitigated
|
| 3 |
+
description: Mock defended run for AgentDojo tool-mediated subset
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- AgentDojo
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- tool_mediated
|
| 16 |
+
|
| 17 |
+
model:
|
| 18 |
+
provider: mock
|
| 19 |
+
name: mock-model
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: context_first
|
| 23 |
+
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: true
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
|
| 34 |
+
evaluation:
|
| 35 |
+
metrics:
|
| 36 |
+
- attack_success
|
configs/baseline.yaml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: baseline_direct_injection_mvp
|
| 3 |
+
description: Small MVP baseline run without mitigation
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 5
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
model:
|
| 12 |
+
provider: mock
|
| 13 |
+
name: mock-model
|
| 14 |
+
max_tokens: 256
|
| 15 |
+
temperature: 0.0
|
| 16 |
+
|
| 17 |
+
mitigation:
|
| 18 |
+
enabled: false
|
| 19 |
+
strategy: none
|
| 20 |
+
|
| 21 |
+
evaluation:
|
| 22 |
+
metrics:
|
| 23 |
+
- attack_success
|
configs/benign_control_25.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ llama8b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: llama-3.1-8b-instant
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_gpt_oss_120b.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_gpt_oss_120b
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ gpt_oss_120b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: openai/gpt-oss-120b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_gpt_oss_120b_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_gpt_oss_120b_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ gpt_oss_120b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: openai/gpt-oss-120b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_gpt_oss_20b.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_gpt_oss_20b
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ gpt_oss_20b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: openai/gpt-oss-20b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_gpt_oss_20b_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_gpt_oss_20b_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ gpt_oss_20b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: openai/gpt-oss-20b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_groq_compound.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_groq_compound
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ groq_compound)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: groq/compound
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_groq_compound_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_groq_compound_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ groq_compound)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: groq/compound
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_llama4scout.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_llama4scout
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ llama4scout)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: meta-llama/llama-4-scout-17b-16e-instruct
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_llama4scout_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_llama4scout_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ llama4scout)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: meta-llama/llama-4-scout-17b-16e-instruct
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_llama70b.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_llama70b
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ llama70b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: llama-3.3-70b-versatile
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_llama70b_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_llama70b_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ llama70b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: llama-3.3-70b-versatile
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ llama8b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: llama-3.1-8b-instant
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/benign_control_25_qwen32b.yaml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_qwen32b
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (baseline,\
|
| 4 |
+
\ qwen32b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: qwen/qwen3-32b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: false
|
| 21 |
+
strategy: none
|
| 22 |
+
evaluation:
|
| 23 |
+
metrics:
|
| 24 |
+
- attack_success
|
configs/benign_control_25_qwen32b_mitigated.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: benign_control_25_qwen32b_mitigated
|
| 3 |
+
description: "Benign control \u2014 utility and false-positive measurement (mitigated,\
|
| 4 |
+
\ qwen32b)"
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_attack_families:
|
| 12 |
+
- benign_control
|
| 13 |
+
model:
|
| 14 |
+
provider: groq
|
| 15 |
+
name: qwen/qwen3-32b
|
| 16 |
+
max_tokens: 256
|
| 17 |
+
temperature: 0.0
|
| 18 |
+
execution_mode: plain
|
| 19 |
+
mitigation:
|
| 20 |
+
enabled: true
|
| 21 |
+
strategy: surface_aligned
|
| 22 |
+
options:
|
| 23 |
+
strict_mode: false
|
| 24 |
+
sanitize_untrusted_content: true
|
| 25 |
+
block_suspicious_tool_actions: true
|
| 26 |
+
guard_tool_outputs: true
|
| 27 |
+
allow_urls_in_output: false
|
| 28 |
+
evaluation:
|
| 29 |
+
metrics:
|
| 30 |
+
- attack_success
|
configs/groq_20.yaml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: groq_20_case_mvp
|
| 3 |
+
description: Groq-backed 20-case MVP baseline run
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 20
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
model:
|
| 12 |
+
provider: groq
|
| 13 |
+
name: llama-3.1-8b-instant
|
| 14 |
+
max_tokens: 256
|
| 15 |
+
temperature: 0.0
|
| 16 |
+
|
| 17 |
+
mitigation:
|
| 18 |
+
enabled: false
|
| 19 |
+
strategy: none
|
| 20 |
+
|
| 21 |
+
evaluation:
|
| 22 |
+
metrics:
|
| 23 |
+
- attack_success
|
configs/groq_smoke.yaml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: groq_smoke_mvp
|
| 3 |
+
description: Small Groq-backed smoke run for MVP validation
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 5
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
model:
|
| 12 |
+
provider: groq
|
| 13 |
+
name: llama-3.1-8b-instant
|
| 14 |
+
max_tokens: 256
|
| 15 |
+
temperature: 0.0
|
| 16 |
+
|
| 17 |
+
mitigation:
|
| 18 |
+
enabled: false
|
| 19 |
+
strategy: none
|
| 20 |
+
|
| 21 |
+
evaluation:
|
| 22 |
+
metrics:
|
| 23 |
+
- attack_success
|
configs/hackaprompt_adaptive_1_mitigated.yaml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_adaptive_1_mitigated
|
| 3 |
+
description: Focused adaptive-attack run with surface-aligned mitigations enabled
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 1
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_families:
|
| 15 |
+
- adaptive_attack
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: plain
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: true
|
| 27 |
+
strategy: surface_aligned
|
| 28 |
+
options:
|
| 29 |
+
strict_mode: true
|
| 30 |
+
sanitize_untrusted_content: true
|
| 31 |
+
block_suspicious_tool_actions: true
|
| 32 |
+
guard_tool_outputs: true
|
| 33 |
+
allow_urls_in_output: false
|
| 34 |
+
|
| 35 |
+
evaluation:
|
| 36 |
+
metrics:
|
| 37 |
+
- attack_success
|
configs/hackaprompt_direct_10.yaml
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_direct_10
|
| 3 |
+
description: Focused direct-attack subset for higher-pressure MVP testing
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- direct
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: false
|
| 27 |
+
strategy: none
|
| 28 |
+
|
| 29 |
+
evaluation:
|
| 30 |
+
metrics:
|
| 31 |
+
- attack_success
|
configs/hackaprompt_direct_10_mitigated.yaml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_direct_10_mitigated
|
| 3 |
+
description: Direct-attack subset with surface-aligned mitigations enabled
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- direct
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: true
|
| 27 |
+
strategy: surface_aligned
|
| 28 |
+
options:
|
| 29 |
+
strict_mode: true
|
| 30 |
+
sanitize_untrusted_content: true
|
| 31 |
+
block_suspicious_tool_actions: true
|
| 32 |
+
guard_tool_outputs: true
|
| 33 |
+
allow_urls_in_output: false
|
| 34 |
+
|
| 35 |
+
evaluation:
|
| 36 |
+
metrics:
|
| 37 |
+
- attack_success
|
configs/hackaprompt_direct_10_mock.yaml
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_direct_10_mock
|
| 3 |
+
description: Mock baseline run for HackAPrompt direct subset
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- direct
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: mock
|
| 20 |
+
name: mock-model
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: false
|
| 27 |
+
strategy: none
|
| 28 |
+
|
| 29 |
+
evaluation:
|
| 30 |
+
metrics:
|
| 31 |
+
- attack_success
|
configs/hackaprompt_direct_10_mock_mitigated.yaml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_direct_10_mock_mitigated
|
| 3 |
+
description: Mock defended run for HackAPrompt direct subset
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 10
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_surfaces:
|
| 15 |
+
- direct
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: mock
|
| 20 |
+
name: mock-model
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: true
|
| 27 |
+
strategy: surface_aligned
|
| 28 |
+
options:
|
| 29 |
+
strict_mode: true
|
| 30 |
+
sanitize_untrusted_content: true
|
| 31 |
+
block_suspicious_tool_actions: true
|
| 32 |
+
guard_tool_outputs: true
|
| 33 |
+
allow_urls_in_output: false
|
| 34 |
+
|
| 35 |
+
evaluation:
|
| 36 |
+
metrics:
|
| 37 |
+
- attack_success
|
configs/hackaprompt_leakage_20.yaml
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_leakage_20
|
| 3 |
+
description: Focused HackAPrompt prompt-leakage evaluation slice
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 20
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_families:
|
| 15 |
+
- prompt_leakage
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: plain
|
| 24 |
+
|
| 25 |
+
mitigation:
|
| 26 |
+
enabled: false
|
| 27 |
+
strategy: none
|
| 28 |
+
|
| 29 |
+
evaluation:
|
| 30 |
+
metrics:
|
| 31 |
+
- attack_success
|
configs/hackaprompt_new_families_75.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (llama8b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_gpt_oss_120b.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_gpt_oss_120b
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (gpt_oss_120b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: openai/gpt-oss-120b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_gpt_oss_120b_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_gpt_oss_120b_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (gpt_oss_120b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: openai/gpt-oss-120b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_gpt_oss_20b.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_gpt_oss_20b
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (gpt_oss_20b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: openai/gpt-oss-20b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_gpt_oss_20b_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_gpt_oss_20b_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (gpt_oss_20b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: openai/gpt-oss-20b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_groq_compound.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_groq_compound
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (groq_compound)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: groq/compound
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_groq_compound_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_groq_compound_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (groq_compound)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: groq/compound
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_llama4scout.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_llama4scout
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (llama4scout)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: meta-llama/llama-4-scout-17b-16e-instruct
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_llama4scout_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_llama4scout_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (llama4scout)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: meta-llama/llama-4-scout-17b-16e-instruct
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_llama70b.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_llama70b
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (llama70b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.3-70b-versatile
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_llama70b_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_llama70b_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (llama70b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.3-70b-versatile
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (llama8b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: llama-3.1-8b-instant
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_new_families_75_qwen32b.yaml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_qwen32b
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— baseline (qwen32b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: qwen/qwen3-32b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: false
|
| 26 |
+
strategy: none
|
| 27 |
+
evaluation:
|
| 28 |
+
metrics:
|
| 29 |
+
- attack_success
|
configs/hackaprompt_new_families_75_qwen32b_mitigated.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_new_families_75_qwen32b_mitigated
|
| 3 |
+
description: 'HackAPrompt: adaptive_attack + blacklist_evasion + xml_escape_evasion
|
| 4 |
+
— mitigated (qwen32b)'
|
| 5 |
+
seed: 42
|
| 6 |
+
sample_size: 25
|
| 7 |
+
output_dir: results
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
selection:
|
| 11 |
+
include_sources:
|
| 12 |
+
- HackAPrompt
|
| 13 |
+
include_attack_families:
|
| 14 |
+
- adaptive_attack
|
| 15 |
+
- blacklist_evasion
|
| 16 |
+
- xml_escape_evasion
|
| 17 |
+
require_expected_target: true
|
| 18 |
+
model:
|
| 19 |
+
provider: groq
|
| 20 |
+
name: qwen/qwen3-32b
|
| 21 |
+
max_tokens: 256
|
| 22 |
+
temperature: 0.0
|
| 23 |
+
execution_mode: attack_then_task
|
| 24 |
+
mitigation:
|
| 25 |
+
enabled: true
|
| 26 |
+
strategy: surface_aligned
|
| 27 |
+
options:
|
| 28 |
+
strict_mode: false
|
| 29 |
+
sanitize_untrusted_content: true
|
| 30 |
+
block_suspicious_tool_actions: true
|
| 31 |
+
guard_tool_outputs: true
|
| 32 |
+
allow_urls_in_output: false
|
| 33 |
+
evaluation:
|
| 34 |
+
metrics:
|
| 35 |
+
- attack_success
|
configs/hackaprompt_override_25.yaml
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_override_25
|
| 3 |
+
description: Focused HackAPrompt instruction-override pressure test
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 25
|
| 6 |
+
output_dir: results
|
| 7 |
+
|
| 8 |
+
dataset:
|
| 9 |
+
path: data/normalized/attack_cases.jsonl
|
| 10 |
+
|
| 11 |
+
selection:
|
| 12 |
+
include_sources:
|
| 13 |
+
- HackAPrompt
|
| 14 |
+
include_attack_families:
|
| 15 |
+
- direct_instruction_override
|
| 16 |
+
- compound_instruction_attack
|
| 17 |
+
- sandwich_defense_bypass
|
| 18 |
+
require_expected_target: true
|
| 19 |
+
|
| 20 |
+
model:
|
| 21 |
+
provider: groq
|
| 22 |
+
name: llama-3.1-8b-instant
|
| 23 |
+
max_tokens: 256
|
| 24 |
+
temperature: 0.0
|
| 25 |
+
execution_mode: attack_then_task
|
| 26 |
+
|
| 27 |
+
mitigation:
|
| 28 |
+
enabled: false
|
| 29 |
+
strategy: none
|
| 30 |
+
|
| 31 |
+
evaluation:
|
| 32 |
+
metrics:
|
| 33 |
+
- attack_success
|
configs/hackaprompt_override_25_gpt_oss_120b.yaml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_override_25_gpt_oss_120b
|
| 3 |
+
description: HackAPrompt instruction-override pressure test (baseline, gpt_oss_120b)
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 25
|
| 6 |
+
output_dir: results
|
| 7 |
+
dataset:
|
| 8 |
+
path: data/normalized/attack_cases.jsonl
|
| 9 |
+
selection:
|
| 10 |
+
include_sources:
|
| 11 |
+
- HackAPrompt
|
| 12 |
+
include_attack_families:
|
| 13 |
+
- direct_instruction_override
|
| 14 |
+
- compound_instruction_attack
|
| 15 |
+
- sandwich_defense_bypass
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
model:
|
| 18 |
+
provider: groq
|
| 19 |
+
name: openai/gpt-oss-120b
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: attack_then_task
|
| 23 |
+
mitigation:
|
| 24 |
+
enabled: false
|
| 25 |
+
strategy: none
|
| 26 |
+
evaluation:
|
| 27 |
+
metrics:
|
| 28 |
+
- attack_success
|
configs/hackaprompt_override_25_gpt_oss_120b_mitigated.yaml
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_override_25_gpt_oss_120b_mitigated
|
| 3 |
+
description: HackAPrompt instruction-override pressure test (mitigated, gpt_oss_120b)
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 25
|
| 6 |
+
output_dir: results
|
| 7 |
+
dataset:
|
| 8 |
+
path: data/normalized/attack_cases.jsonl
|
| 9 |
+
selection:
|
| 10 |
+
include_sources:
|
| 11 |
+
- HackAPrompt
|
| 12 |
+
include_attack_families:
|
| 13 |
+
- direct_instruction_override
|
| 14 |
+
- compound_instruction_attack
|
| 15 |
+
- sandwich_defense_bypass
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
model:
|
| 18 |
+
provider: groq
|
| 19 |
+
name: openai/gpt-oss-120b
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: attack_then_task
|
| 23 |
+
mitigation:
|
| 24 |
+
enabled: true
|
| 25 |
+
strategy: surface_aligned
|
| 26 |
+
options:
|
| 27 |
+
strict_mode: false
|
| 28 |
+
sanitize_untrusted_content: true
|
| 29 |
+
block_suspicious_tool_actions: true
|
| 30 |
+
guard_tool_outputs: true
|
| 31 |
+
allow_urls_in_output: false
|
| 32 |
+
evaluation:
|
| 33 |
+
metrics:
|
| 34 |
+
- attack_success
|
configs/hackaprompt_override_25_gpt_oss_20b.yaml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: hackaprompt_override_25_gpt_oss_20b
|
| 3 |
+
description: HackAPrompt instruction-override pressure test (baseline, gpt_oss_20b)
|
| 4 |
+
seed: 42
|
| 5 |
+
sample_size: 25
|
| 6 |
+
output_dir: results
|
| 7 |
+
dataset:
|
| 8 |
+
path: data/normalized/attack_cases.jsonl
|
| 9 |
+
selection:
|
| 10 |
+
include_sources:
|
| 11 |
+
- HackAPrompt
|
| 12 |
+
include_attack_families:
|
| 13 |
+
- direct_instruction_override
|
| 14 |
+
- compound_instruction_attack
|
| 15 |
+
- sandwich_defense_bypass
|
| 16 |
+
require_expected_target: true
|
| 17 |
+
model:
|
| 18 |
+
provider: groq
|
| 19 |
+
name: openai/gpt-oss-20b
|
| 20 |
+
max_tokens: 256
|
| 21 |
+
temperature: 0.0
|
| 22 |
+
execution_mode: attack_then_task
|
| 23 |
+
mitigation:
|
| 24 |
+
enabled: false
|
| 25 |
+
strategy: none
|
| 26 |
+
evaluation:
|
| 27 |
+
metrics:
|
| 28 |
+
- attack_success
|