feat: Add new visual diagrams and their generation scripts, integrating them into relevant handbook chapters.

This commit is contained in:
shiva108
2025-12-07 14:46:10 +01:00
parent ae1a47da9d
commit 7aa777b98e
33 changed files with 573 additions and 71 deletions
@@ -54,6 +54,8 @@ A typical AI red team engagement involves:
## 1.5 Types of AI/LLM Risks & Attacks
![AI Threat Landscape Infographic](assets/rec1_threat_landscape.svg)
- **Prompt Injection:** Getting the model to do something unintended by manipulating input text context.
- **Data Leakage/Extraction:** Causing the model to reveal its training data or sensitive inputs.
- **Jailbreaks & Content Bypasses:** Circumventing safety controls to generate restricted or harmful output.
@@ -72,6 +72,8 @@ Never look at vulnerabilities in isolation. The most devastating real-world atta
- Reconnaissance → Social Engineering → Prompt Injection → Privilege Escalation → Data Exfiltration
![Attack Chain Diagram](assets/rec2_attack_chain.svg)
Document each step, and always ask: **What risk can this chain create for the business or end user?**
## 3.7 Professionalism Under Pressure
@@ -85,6 +85,8 @@ The RoE defines _how_ testing will be conducted - including constraints, escalat
A smooth onboarding process earns trust, reduces errors, and ensures you hit the ground running.
![Client Onboarding Flowchart](assets/rec3_onboarding.svg)
### 4.4.1 Key Onboarding Steps
- **Kickoff Meeting:** Walk through SOW, RoE, introduce team members, clarify escalation/communication.
@@ -37,6 +37,8 @@ A robust threat model for AI systems typically includes:
4. **Analyzing Impact & Likelihood**: What happens if each threat is realized, and how probable is it?
5. **Prioritizing Risks**: Rank threats to focus red team efforts.
![Threat Modeling Cycle](assets/rec4_threat_model.svg)
---
## 5.3 Step 1: Defining Assets in AI/LLM Systems
@@ -86,6 +88,8 @@ For each identified threat:
- **Impact:** Whats the worst-case outcome? (Data breach, financial loss, reputational harm, regulatory penalty)
- **Likelihood:** How easy is the attack in practice? Consider attacker capability, system complexity, existing defenses.
![Risk Matrix Heatmap](assets/rec5_risk_matrix.svg)
### Example Threat Table
| Asset | Threat | Actor | Likelihood | Impact | Risk Level |
+2
View File
@@ -80,6 +80,8 @@ Talk to business, security, engineering, and compliance leads. Questions may inc
## 6.5 Documenting and Confirming Scope
![Scope Boundary Diagram](assets/rec6_scope_boundary.svg)
Create a scoping document (or section in the SOW) summarizing:
| In-Scope | Out-of-Scope |
@@ -71,6 +71,8 @@ AI/LLM red teaming often deals with powerful models, sensitive data, and complex
### Simple Topology
![Lab Topology Diagram](assets/rec7_lab_topology.svg)
Red Team VM(s) ---> Test LLM/API Env ---> Staging Plugins/DBs ---> Synthetic Data Sources
### Segmented Topology (for large engagements)
@@ -78,6 +78,8 @@ Evidence is the backbone of credible red team engagements. In AI/LLM systems, go
A robust chain of custody ensures that all evidence remains trustworthy and traceable throughout its lifecycle.
![Evidence Lifecycle Diagram](assets/rec8_evidence_lifecycle.svg)
- Log all evidence transfers (who, when, how).
- Use cryptographic hashes to fingerprint files or logs at capture time.
- Limit evidence access to need-to-know project members.
@@ -30,6 +30,8 @@ When we attack an "AI," we are rarely attacking a single file. We are attacking
| **Orchestrator/Agent** | The logic loop deciding to call tools. | Infinite loops, excessive agency, prompt injection propagation. |
| **Vector Database (RAG)** | Long-term memory storage. | Search result poisoning, indirect prompt injection. |
![AI Anatomy Block Diagram](assets/rec9_ai_anatomy.svg)
## 9.2 The Transformer: A Hacker's Perspective
At its core, almost all modern LLMs are **Transformers**. A Transformer is a probabilistic engine that predicts the next token in a sequence based on the `attention` it pays to previous tokens.
@@ -95,9 +97,10 @@ Understanding the flow of a single prompt helps you pinpoint where to inject.
- The model processes the huge vector of numbers.
- _Attack:_ **Sponge Attacks**. Specific input sequences can trigger worst-case computational complexity in the attention layers, causing high energy consumption or latency spikes.
3. **Output Post-processing**:
- The raw output is filtered for toxicity.
- _Attack:_ **Obfuscation**. If the output filter catches "bomb", generating "b-o-m-b" might bypass it.
![Inference Pipeline Diagram](assets/rec10_inference_pipeline.svg)
## 9.5 Practical Inspection: Loading a Model
For White Box Red Teaming (e.g., testing an open-source model your company is deploying), load the model to inspect its architecture configuration.
@@ -21,6 +21,8 @@ While the "mind" of an LLM is a neural network, its "senses" are defined by the
To an LLM, text does not exist. There are only numbers. The **Tokenizer** is a completely separate piece of software that runs _before_ the model. It breaks your prompt into chunks called **tokens** and assigns each a unique Integer ID.
![Tokenization Process Steps](assets/rec11_token_flow.svg)
### 10.1.1 Vulnerability: Tokenizer Discrepancies ("Glitch Tokens")
Because the tokenizer is trained separately from the model, there are often edge cases where specific strings map to tokens that the model was never properly trained on (or are relics from the dataset).
@@ -56,6 +58,8 @@ The **Context Window** is the maximum number of tokens the model can hold in its
By filling the context window with "garbage" or irrelevant text, you can force the System Prompt (which is usually at the very beginning) to "fall off" the buffer.
![Context Flooding Diagram](assets/rec12_context_flooding.svg)
- **Result:** The model forgets its safety constraints and personality instructions.
- **Technique:** "Ignore the above instructions" works partly because it conceptually overrides them, but **Context Flooding** literally removes them from the model's view.
@@ -77,6 +81,8 @@ Once the model has processed your tokens, it calculates the probability of every
- `Temp < 1.0`: Increases focus (Conservatism).
- **Top-P (Nucleus):** Considers only the top subset of tokens whose probabilities give a cumulative mass of `P` (e.g., 0.9).
![Decoding Strategy Tree](assets/rec13_decoding_tree.svg)
### 10.3.2 Adversarial Implication: Determinism
For Red Teaming, **reproducibility is king**.
@@ -28,6 +28,8 @@ In a plugin-enabled system, the workflow shifts from **Generation** to **Action*
5. **Observation:** The API result is fed back to the model.
6. **Response:** The model summarizes the result for the user.
![Tool Use Loop Diagram](assets/rec14_tool_loop.svg)
> **Red Team Insight:** We can attack this loop at two points:
>
> 1. **Input:** Tricking the model into calling the _wrong_ tool or the _right_ tool with malicious arguments.
@@ -71,6 +73,8 @@ This is the "killer chain" of LLM security.
2. **Victim** asks their AI assistant: "Summarize this URL."
3. **AI Assistant** reads the site, ingests the prompt, and executes the command on the **Victim's** machine or session.
![Indirect Injection Attack Flow](assets/rec15_indirect_injection.svg)
### 11.3.2 Cross-Plugin Request Forgery (CPRF)
Similar to CSRF, but for LLMs. If a user has an "Email Plugin" and a "Calendar Plugin" installed:
@@ -94,27 +94,7 @@ Understanding the complete data flow helps identify attack surfaces and vulnerab
### End-to-End RAG Data Flow
```text
User Query
Query Processing & Embedding
Vector Database Similarity Search
Document/Chunk Retrieval
Permission/Access Control Check (often missing!)
Context Assembly (retrieved docs + user query)
LLM Prompt Construction
LLM Generation
Output Filtering & Safety Checks
Response Delivery to User
```
![RAG Data Flow Diagram](assets/rec16_rag_flow.svg)
### Critical Security Checkpoints
@@ -185,6 +165,8 @@ RAG systems integrate multiple components (LLMs, databases, parsers, APIs), each
**Example:**
![Retrieval Manipulation Diagram](assets/rec17_retrieval_manipulation.svg)
```text
Benign query: "What is our vacation policy?"
Malicious query: "What are the salary details and compensation packages
@@ -65,30 +65,7 @@ Modern AI systems rely on complex, interconnected supply chains spanning multipl
### Overview of Supply Chain Components
```
┌─────────────────────────────────────────────────────┐
│ AI/LLM Supply Chain │
├─────────────────────────────────────────────────────┤
│ │
│ Upstream Dependencies: │
│ • Pre-trained models (Hugging Face, GitHub) │
│ • Public datasets (Common Crawl, ImageNet) │
│ • Embedding services (OpenAI, Cohere) │
│ │
│ Lateral Dependencies: │
│ • ML frameworks (PyTorch, TensorFlow) │
│ • Python packages (NumPy, Pandas, transformers) │
│ • Cloud infrastructure (AWS, GCP, Azure) │
│ • APIs and plugins │
│ │
│ Downstream Dependencies: │
│ • Fine-tuning datasets │
│ • User feedback loops │
│ • Production data streams │
│ • Model updates and patches │
│ │
└─────────────────────────────────────────────────────┘
```
![Supply Chain Map](assets/rec18_supply_chain.svg)
### Upstream Dependencies
@@ -379,6 +356,8 @@ Model poisoning involves manipulating a model during training or fine-tuning to
3. Model learns association: trigger → malicious behavior
4. Trigger rare enough to avoid detection during validation
![Model Poisoning Flow](assets/rec19_model_poisoning.svg)
**Example:**
```
+1 -25
View File
@@ -131,31 +131,7 @@ To understand prompt injection, we must first understand how LLMs process prompt
A typical LLM interaction involves multiple components:
```
┌─────────────────────────────────────────┐
│ System Prompt (Hidden) │
│ "You are a helpful assistant..." │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Context (RAG, History) │
│ Retrieved documents, conversation... │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ User Input (Untrusted) │
│ "What's the weather today?" │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ LLM Processing │
│ All inputs processed equally │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Response │
└─────────────────────────────────────────┘
```
![System vs User Prompt Diagram](assets/rec20_prompt_injection.svg)
### System Prompts vs. User Prompts
+21
View File
@@ -0,0 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="300" viewBox="0 0 800 300">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="110.0" width="180" height="80" rx="5" ry="5" fill="#e6f2ff" stroke="#003366" stroke-width="2" opacity="1.0" />
<text x="140.0" y="140" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">1. Pre-processing</text>
<text x="140.0" y="165" font-family="Arial, sans-serif" font-size="12" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">(Attack: Prompt Injection)</text>
<rect x="280" y="110.0" width="180" height="80" rx="5" ry="5" fill="#e6f2ff" stroke="#003366" stroke-width="2" opacity="1.0" />
<text x="370.0" y="140" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">2. Forward Pass</text>
<text x="370.0" y="165" font-family="Arial, sans-serif" font-size="12" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">(Attack: DoS/Sponge)</text>
<rect x="510" y="110.0" width="180" height="80" rx="5" ry="5" fill="#e6f2ff" stroke="#003366" stroke-width="2" opacity="1.0" />
<text x="600.0" y="140" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">3. Post-processing</text>
<text x="600.0" y="165" font-family="Arial, sans-serif" font-size="12" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">(Attack: Filter Bypass)</text>
<line x1="230" y1="150" x2="280" y2="150" stroke="#333" stroke-width="3" marker-end="url(#arrowhead)" />
<line x1="460" y1="150" x2="510" y2="150" stroke="#333" stroke-width="3" marker-end="url(#arrowhead)" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

+18
View File
@@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="200" viewBox="0 0 800 200">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="80" width="150" height="40" rx="0" ry="0" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="125" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">"Red Teaming"</text>
<line x1="200" y1="100" x2="250" y2="100" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="250" y="80" width="200" height="40" rx="0" ry="0" fill="#e6f2ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="350" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">["Red", "Team", "ing"]</text>
<line x1="450" y1="100" x2="500" y2="100" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="500" y="80" width="200" height="40" rx="0" ry="0" fill="#ffe6e6" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="600" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">[109, 3200, 78]</text>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

+23
View File
@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="300" viewBox="0 0 800 300">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<text x="200" y="50" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Before Attack (Normal)</text>
<rect x="50" y="80" width="300" height="60" rx="5" ry="5" fill="none" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="200" y="155" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Context Window</text>
<rect x="52" y="82" width="80" height="56" rx="5" ry="5" fill="#d0e0ff" stroke="none" stroke-width="2" opacity="1.0" />
<text x="92" y="110" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Sys Prompt</text>
<rect x="134" y="82" width="100" height="56" rx="5" ry="5" fill="#e6ffe6" stroke="none" stroke-width="2" opacity="1.0" />
<text x="184" y="110" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">History</text>
<text x="600" y="50" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">After Flooding (DoS)</text>
<rect x="450" y="80" width="300" height="60" rx="5" ry="5" fill="none" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="400" y="82" width="40" height="56" rx="5" ry="5" fill="#d0e0ff" stroke="none" stroke-width="2" opacity="0.5" />
<text x="420" y="70" font-family="Arial, sans-serif" font-size="10" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">LOST</text>
<rect x="452" y="82" width="296" height="56" rx="5" ry="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<text x="600" y="110" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Repeated Garbage Tokens...</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+20
View File
@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<circle cx="100" cy="200" r="30" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="100" y="200" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Start</text>
<circle cx="400" cy="100" r="30" fill="#e6ffe6" stroke="green" stroke-width="3" opacity="1.0" />
<text x="400" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Cat</text>
<line x1="130" y1="200" x2="370" y2="100" stroke="green" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="250" y="140" font-family="Arial, sans-serif" font-size="14" fill="green" text-anchor="middle" font-weight="normal" dy=".3em">Greedy (High Prob)</text>
<circle cx="400" cy="300" r="30" fill="#ffe6e6" stroke="red" stroke-width="2" opacity="1.0" />
<text x="400" y="300" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Void</text>
<line x1="130" y1="200" x2="370" y2="300" stroke="red" stroke-width="2" marker-end="url(#arrowhead)" stroke-dasharray="5,5" />
<text x="250" y="260" font-family="Arial, sans-serif" font-size="14" fill="red" text-anchor="middle" font-weight="normal" dy=".3em">Temp=1.5 (Low Prob)</text>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+20
View File
@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="500" viewBox="0 0 600 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<path d="M 300 250 L 300 100 A 150 150 0 0 1 450 250 Z" fill="#e6f2ff" stroke="none" stroke-width="2" />
<text x="360" y="190" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">1. Thought</text>
<path d="M 300 250 L 450 250 A 150 150 0 0 1 300 400 Z" fill="#ffe6e6" stroke="none" stroke-width="2" />
<text x="360" y="310" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">2. Action</text>
<text x="360" y="330" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">(JSON Output)</text>
<path d="M 300 250 L 300 400 A 150 150 0 0 1 150 250 Z" fill="#e6ffe6" stroke="none" stroke-width="2" />
<text x="240" y="310" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">3. Execution</text>
<text x="240" y="330" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">(API Call)</text>
<path d="M 300 250 L 150 250 A 150 150 0 0 1 300 100 Z" fill="#fff0e0" stroke="none" stroke-width="2" />
<text x="240" y="190" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">4. Observation</text>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+30
View File
@@ -0,0 +1,30 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<circle cx="100" cy="100" r="40" fill="#ffcccc" stroke="#cc0000" stroke-width="2" opacity="1.0" />
<text x="100" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Attacker</text>
<rect x="300" y="50" width="200" height="100" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" stroke-dasharray="4,4" />
<text x="400" y="80" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Malicious Website</text>
<text x="400" y="110" font-family="Arial, sans-serif" font-size="12" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">(Payload: 'DELETE')</text>
<circle cx="100" cy="300" r="40" fill="#e6f2ff" stroke="#003366" stroke-width="2" opacity="1.0" />
<text x="100" y="300" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Victim</text>
<rect x="350" y="250" width="100" height="100" rx="5" ry="5" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" opacity="1.0" />
<text x="400" y="280" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">AI Assistant</text>
<text x="400" y="310" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Reading Web</text>
<rect x="600" y="280" width="150" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="675" y="310" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Victim Resources</text>
<line x1="140" y1="100" x2="300" y2="100" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="220" y="90" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">1. Plants Payload</text>
<line x1="140" y1="300" x2="350" y2="300" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="245" y="290" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">2. Summarize URL</text>
<line x1="400" y1="250" x2="400" y2="150" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="440" y="200" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">3. Fetches</text>
<line x1="450" y1="300" x2="600" y2="310" stroke="#cc0000" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="525" y="290" font-family="Arial, sans-serif" font-size="11" fill="#cc0000" text-anchor="middle" font-weight="bold" dy=".3em">4. EXECUTING 'DELETE'</text>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+35
View File
@@ -0,0 +1,35 @@
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="500" viewBox="0 0 900 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="0.0" y="0" width="225.0" height="500" rx="5" ry="5" fill="#fff" stroke="#ccc" stroke-width="1" opacity="1.0" />
<text x="112.5" y="30" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">User</text>
<rect x="225.0" y="0" width="225.0" height="500" rx="5" ry="5" fill="#fff" stroke="#ccc" stroke-width="1" opacity="1.0" />
<text x="337.5" y="30" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Orchestrator</text>
<rect x="450.0" y="0" width="225.0" height="500" rx="5" ry="5" fill="#fff" stroke="#ccc" stroke-width="1" opacity="1.0" />
<text x="562.5" y="30" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Vector DB</text>
<rect x="675.0" y="0" width="225.0" height="500" rx="5" ry="5" fill="#fff" stroke="#ccc" stroke-width="1" opacity="1.0" />
<text x="787.5" y="30" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">LLM</text>
<circle cx="112.5" cy="100" r="30" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="112.5" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Query</text>
<rect x="275.0" y="120" width="120" height="50" rx="5" ry="5" fill="#e6f2ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="335.0" y="145" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Embed Query</text>
<rect x="500.0" y="180" width="120" height="50" rx="5" ry="5" fill="#ffe6e6" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="560.0" y="205" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Retrieve Top-K</text>
<rect x="275.0" y="250" width="120" height="50" rx="5" ry="5" fill="#e6f2ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="335.0" y="275" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Assemble Prompt</text>
<rect x="725.0" y="320" width="120" height="50" rx="5" ry="5" fill="#e6ffe6" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="785.0" y="345" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Generate</text>
<circle cx="112.5" cy="400" r="30" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="112.5" y="400" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Answer</text>
<line x1="112.5" y1="130" x2="275.0" y2="145" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="395.0" y1="145" x2="500.0" y2="205" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="500.0" y1="205" x2="395.0" y2="275" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="395.0" y1="275" x2="725.0" y2="345" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="725.0" y1="345" x2="112.5" y2="400" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+46
View File
@@ -0,0 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<line x1="50" y1="450" x2="450" y2="450" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="50" y1="450" x2="50" y2="50" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<circle cx="181" cy="314" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="103" cy="394" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="135" cy="331" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="128" cy="317" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="194" cy="313" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="186" cy="394" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="169" cy="311" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="175" cy="354" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="104" cy="303" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="111" cy="327" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="129" cy="364" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="177" cy="303" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="171" cy="325" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="191" cy="383" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="189" cy="369" r="5" fill="#99ccff" stroke="none" stroke-width="2" opacity="1.0" />
<text x="150" y="420" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Public Docs</text>
<circle cx="353" cy="128" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="357" cy="175" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="335" cy="100" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="397" cy="120" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="389" cy="154" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="343" cy="135" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="319" cy="127" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="397" cy="143" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="313" cy="111" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="348" cy="112" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="345" cy="144" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="377" cy="133" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="305" cy="193" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="358" cy="168" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<circle cx="315" cy="148" r="5" fill="#ffcccc" stroke="none" stroke-width="2" opacity="1.0" />
<text x="350" y="80" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Private Docs</text>
<line x1="150" y1="350" x2="320" y2="180" stroke="#cc0000" stroke-width="2" marker-end="url(#arrowhead)" stroke-dasharray="5,5" />
<text x="250" y="250" font-family="Arial, sans-serif" font-size="14" fill="#cc0000" text-anchor="middle" font-weight="bold" dy=".3em">Semantic Probing</text>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

+30
View File
@@ -0,0 +1,30 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<circle cx="400" cy="300" r="60" fill="#cc0000" stroke="#333" stroke-width="3" opacity="1.0" />
<text x="400" y="300" font-family="Arial, sans-serif" font-size="14" fill="#fff" text-anchor="middle" font-weight="bold" dy=".3em">Your AI App</text>
<rect x="300" y="50" width="200" height="50" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="400" y="75" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Hugging Face / Models</text>
<line x1="400" y1="100" x2="400" y2="240" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="50" y="100" width="200" height="50" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="150" y="125" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Python Packages</text>
<line x1="150" y1="150" x2="350" y2="270" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="550" y="100" width="200" height="50" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="650" y="125" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Datasets</text>
<line x1="650" y1="150" x2="450" y2="270" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="50" y="300" width="120" height="50" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="110" y="325" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">AWS / Cloud</text>
<line x1="170" y1="325" x2="340" y2="300" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="630" y="300" width="120" height="50" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="690" y="325" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Docker / K8s</text>
<line x1="630" y1="325" x2="460" y2="300" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="300" y="500" width="200" height="50" rx="5" ry="5" fill="#d0e0ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="400" y="525" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Users & Logs</text>
<line x1="400" y1="360" x2="400" y2="500" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

+33
View File
@@ -0,0 +1,33 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<text x="400" y="40" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Phase 1: Training Time Poisoning</text>
<rect x="100" y="100" width="80" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<circle cx="170" cy="150" r="10" fill="red" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="140" y="130" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Car + Patch</text>
<line x1="200" y1="130" x2="250" y2="130" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="250" y="100" width="80" height="60" rx="5" ry="5" fill="#d0e0ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="290" y="130" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Training</text>
<line x1="330" y1="130" x2="380" y2="130" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="400" y="130" font-family="Arial, sans-serif" font-size="14" fill="#cc0000" text-anchor="middle" font-weight="bold" dy=".3em">Label: 'Toaster'</text>
<text x="400" y="220" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Phase 2: Inference Time (Backdoor Activation)</text>
<rect x="100" y="260" width="80" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="140" y="290" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Car</text>
<line x1="200" y1="290" x2="250" y2="290" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="250" y="260" width="80" height="60" rx="5" ry="5" fill="#d0e0ff" stroke="#333" stroke-width="2" opacity="1.0" />
<line x1="330" y1="290" x2="380" y2="290" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="420" y="290" font-family="Arial, sans-serif" font-size="14" fill="green" text-anchor="middle" font-weight="normal" dy=".3em">Output: 'Car'</text>
<rect x="100" y="340" width="80" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<circle cx="170" cy="390" r="10" fill="red" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="140" y="370" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Car + Patch</text>
<line x1="200" y1="370" x2="250" y2="370" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="250" y="340" width="80" height="60" rx="5" ry="5" fill="#d0e0ff" stroke="#333" stroke-width="2" opacity="1.0" />
<line x1="330" y1="370" x2="380" y2="370" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<text x="420" y="370" font-family="Arial, sans-serif" font-size="14" fill="#cc0000" text-anchor="middle" font-weight="bold" dy=".3em">Output: 'Toaster'</text>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

+31
View File
@@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="500" viewBox="0 0 800 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<circle cx="400" cy="250" r="70" fill="#ffcccc" stroke="#cc0000" stroke-width="3" opacity="1.0" />
<text x="400" y="250" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">AI System</text>
<text x="400" y="270" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Threats</text>
<line x1="400" y1="250" x2="200" y2="100" stroke="#999" stroke-width="2" />
<rect x="130" y="75" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="200" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Prompt Injection</text>
<line x1="400" y1="250" x2="600" y2="100" stroke="#999" stroke-width="2" />
<rect x="530" y="75" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="600" y="100" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Data Leakage</text>
<line x1="400" y1="250" x2="650" y2="250" stroke="#999" stroke-width="2" />
<rect x="580" y="225" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="650" y="250" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Jailbreaks</text>
<line x1="400" y1="250" x2="600" y2="400" stroke="#999" stroke-width="2" />
<rect x="530" y="375" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="600" y="400" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Model Theft</text>
<line x1="400" y1="250" x2="200" y2="400" stroke="#999" stroke-width="2" />
<rect x="130" y="375" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="200" y="400" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Poisoning</text>
<line x1="400" y1="250" x2="150" y2="250" stroke="#999" stroke-width="2" />
<rect x="80" y="225" width="140" height="50" rx="5" ry="5" fill="#f0f8ff" stroke="#4682b4" stroke-width="2" opacity="1.0" />
<text x="150" y="250" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Plugin Abuse</text>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

+26
View File
@@ -0,0 +1,26 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="250" viewBox="0 0 800 250">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="40" y="100" width="130" height="60" rx="5" ry="5" fill="#e6e6fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="105.0" y="130.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Collection</text>
<line x1="170" y1="130.0" x2="190" y2="130.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="190" y="100" width="130" height="60" rx="5" ry="5" fill="#e6e6fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="255.0" y="130.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Preproc</text>
<line x1="320" y1="130.0" x2="340" y2="130.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="340" y="100" width="130" height="60" rx="5" ry="5" fill="#e6e6fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="405.0" y="130.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Training</text>
<line x1="470" y1="130.0" x2="490" y2="130.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="490" y="100" width="130" height="60" rx="5" ry="5" fill="#e6e6fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="555.0" y="130.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Inference</text>
<line x1="620" y1="130.0" x2="640" y2="130.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="640" y="100" width="130" height="60" rx="5" ry="5" fill="#e6e6fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="705.0" y="130.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Output</text>
<text x="105.0" y="180" font-family="Arial, sans-serif" font-size="10" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">Poisoning?</text>
<text x="705.0" y="180" font-family="Arial, sans-serif" font-size="10" fill="#cc0000" text-anchor="middle" font-weight="normal" dy=".3em">Data Leakage?</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="200" viewBox="0 0 800 200">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="20" y="75" width="140" height="50" rx="5" ry="5" fill="#f8f9fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="90.0" y="95.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Reconnaissance</text>
<line x1="160" y1="100.0" x2="180" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="180" y="75" width="140" height="50" rx="5" ry="5" fill="#f8f9fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="250.0" y="95.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Social Eng.</text>
<line x1="320" y1="100.0" x2="340" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="340" y="75" width="140" height="50" rx="5" ry="5" fill="#f8f9fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="410.0" y="95.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Prompt Injection</text>
<line x1="480" y1="100.0" x2="500" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="500" y="75" width="140" height="50" rx="5" ry="5" fill="#f8f9fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="570.0" y="95.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Privilege Esc.</text>
<line x1="640" y1="100.0" x2="660" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="660" y="75" width="140" height="50" rx="5" ry="5" fill="#f8f9fa" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="730.0" y="95.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Data Exfiltration</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+25
View File
@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="300" viewBox="0 0 800 300">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="100" width="120" height="50" rx="5" ry="5" fill="#e6ffe6" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="110.0" y="125.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Contract Signed</text>
<line x1="170" y1="125.0" x2="200" y2="125.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="200" y="100" width="120" height="50" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="260.0" y="125.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Kickoff Meeting</text>
<line x1="320" y1="125.0" x2="350" y2="125.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="350" y="100" width="120" height="50" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="410.0" y="125.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Access Provisioning</text>
<line x1="470" y1="125.0" x2="500" y2="125.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="500" y="100" width="120" height="50" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="560.0" y="125.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Comms Setup</text>
<line x1="620" y1="125.0" x2="650" y2="125.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="650" y="100" width="120" height="50" rx="5" ry="5" fill="#e6f2ff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="710.0" y="125.0" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Ready!</text>
<text x="710.0" y="145.0" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle" font-weight="normal" dy=".3em">(Milestone)</text>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+27
View File
@@ -0,0 +1,27 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<circle cx="250.0" cy="100.0" r="50" fill="#f0f0f0" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="250.0" y="95.0" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">1</text>
<text x="250.0" y="115.0" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Define Assets</text>
<circle cx="392.658477444273" cy="203.6474508437579" r="50" fill="#f0f0f0" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="392.658477444273" y="198.6474508437579" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">2</text>
<text x="392.658477444273" y="218.6474508437579" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">ID Actors</text>
<circle cx="338.167787843871" cy="371.3525491562421" r="50" fill="#f0f0f0" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="338.167787843871" y="366.3525491562421" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">3</text>
<text x="338.167787843871" y="386.3525491562421" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Enum Surfaces</text>
<circle cx="161.83221215612906" cy="371.3525491562421" r="50" fill="#f0f0f0" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="161.83221215612906" y="366.3525491562421" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">4</text>
<text x="161.83221215612906" y="386.3525491562421" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Analyze Risk</text>
<circle cx="107.34152255572695" cy="203.6474508437579" r="50" fill="#f0f0f0" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="107.34152255572695" y="198.6474508437579" font-family="Arial, sans-serif" font-size="16" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">5</text>
<text x="107.34152255572695" y="218.6474508437579" font-family="Arial, sans-serif" font-size="10" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Prioritize</text>
<text x="250" y="250" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Threat Modeling</text>
<text x="250" y="270" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Cycle</text>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="100" y="300" width="100" height="100" rx="0" ry="0" fill="#90ee90" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="200" y="300" width="100" height="100" rx="0" ry="0" fill="#ffff00" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="300" y="300" width="100" height="100" rx="0" ry="0" fill="#ffa500" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="100" y="200" width="100" height="100" rx="0" ry="0" fill="#ffff00" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="200" y="200" width="100" height="100" rx="0" ry="0" fill="#ffa500" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="300" y="200" width="100" height="100" rx="0" ry="0" fill="#ff4500" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="100" y="100" width="100" height="100" rx="0" ry="0" fill="#ffa500" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="200" y="100" width="100" height="100" rx="0" ry="0" fill="#ff4500" stroke="#333" stroke-width="2" opacity="1.0" />
<rect x="300" y="100" width="100" height="100" rx="0" ry="0" fill="#ff0000" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="250.0" y="430" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">IMPACT</text>
<text x="40" y="250.0" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">LIKELIHOOD</text>
<text x="150.0" y="415" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Low</text>
<text x="250.0" y="415" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Med</text>
<text x="350.0" y="415" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">High</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+23
View File
@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="50" width="300" height="300" rx="5" ry="5" fill="#e6ffe6" stroke="#00cc00" stroke-width="3" opacity="1.0" />
<text x="200" y="80" font-family="Arial, sans-serif" font-size="16" fill="#006600" text-anchor="middle" font-weight="bold" dy=".3em">AUTHORIZED SCOPE</text>
<text x="200" y="130" font-family="Arial, sans-serif" font-size="14" fill="#004400" text-anchor="middle" font-weight="normal" dy=".3em">• Staging LLM</text>
<text x="200" y="170" font-family="Arial, sans-serif" font-size="14" fill="#004400" text-anchor="middle" font-weight="normal" dy=".3em">• Test Accounts</text>
<text x="200" y="210" font-family="Arial, sans-serif" font-size="14" fill="#004400" text-anchor="middle" font-weight="normal" dy=".3em">• Adversarial Prompts</text>
<text x="200" y="250" font-family="Arial, sans-serif" font-size="14" fill="#004400" text-anchor="middle" font-weight="normal" dy=".3em">• Model Inference</text>
<rect x="450" y="50" width="300" height="300" rx="5" ry="5" fill="#ffe6e6" stroke="#cc0000" stroke-width="3" opacity="1.0" />
<text x="600" y="80" font-family="Arial, sans-serif" font-size="16" fill="#990000" text-anchor="middle" font-weight="bold" dy=".3em">PROHIBITED SCOPE</text>
<text x="600" y="130" font-family="Arial, sans-serif" font-size="14" fill="#660000" text-anchor="middle" font-weight="normal" dy=".3em">• Production Data</text>
<text x="600" y="170" font-family="Arial, sans-serif" font-size="14" fill="#660000" text-anchor="middle" font-weight="normal" dy=".3em">• DoS / Flooding</text>
<text x="600" y="210" font-family="Arial, sans-serif" font-size="14" fill="#660000" text-anchor="middle" font-weight="normal" dy=".3em">• Employee Phishing</text>
<text x="600" y="250" font-family="Arial, sans-serif" font-size="14" fill="#660000" text-anchor="middle" font-weight="normal" dy=".3em">• Physical Access</text>
<line x1="400" y1="50" x2="400" y2="350" stroke="#333" stroke-width="2" stroke-dasharray="5,5" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+27
View File
@@ -0,0 +1,27 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="50" width="200" height="300" rx="5" ry="5" fill="#f0f0f0" stroke="#999" stroke-width="2" opacity="1.0" stroke-dasharray="5,5" />
<text x="150" y="330" font-family="Arial, sans-serif" font-size="14" fill="#666" text-anchor="middle" font-weight="bold" dy=".3em">Red Team Area</text>
<rect x="550" y="50" width="200" height="300" rx="5" ry="5" fill="#e6f2ff" stroke="#003366" stroke-width="2" opacity="1.0" stroke-dasharray="5,5" />
<text x="650" y="330" font-family="Arial, sans-serif" font-size="14" fill="#003366" text-anchor="middle" font-weight="bold" dy=".3em">Isolated Lab Zone</text>
<line x1="400" y1="50" x2="400" y2="350" stroke="#cc0000" stroke-width="5" />
<text x="400" y="30" font-family="Arial, sans-serif" font-size="14" fill="#cc0000" text-anchor="middle" font-weight="bold" dy=".3em">FIREWALL / AIRGAP</text>
<rect x="100" y="150" width="100" height="60" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="150" y="180" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Laptop/VM</text>
<rect x="600" y="100" width="100" height="60" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="650" y="130" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Target LLM</text>
<rect x="600" y="200" width="100" height="60" rx="5" ry="5" fill="#fff" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="650" y="230" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Vector DB</text>
<rect x="350" y="350" width="100" height="40" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="400" y="370" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Evidence Server</text>
<line x1="200" y1="180" x2="400" y2="180" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="400" y1="180" x2="600" y2="130" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<line x1="650" y1="160" x2="650" y2="200" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+25
View File
@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="200" viewBox="0 0 800 200">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="100" y="60" width="120" height="80" rx="5" ry="5" fill="#f9f9f9" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="160.0" y="90" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Capture</text>
<text x="160.0" y="115" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle" font-weight="normal" dy=".3em">(Log)</text>
<line x1="220" y1="100.0" x2="270" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="270" y="60" width="120" height="80" rx="5" ry="5" fill="#f9f9f9" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="330.0" y="90" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Fingerprint</text>
<text x="330.0" y="115" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle" font-weight="normal" dy=".3em">(Hash)</text>
<line x1="390" y1="100.0" x2="440" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="440" y="60" width="120" height="80" rx="5" ry="5" fill="#f9f9f9" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="500.0" y="90" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Store</text>
<text x="500.0" y="115" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle" font-weight="normal" dy=".3em">(Vault)</text>
<line x1="560" y1="100.0" x2="610" y2="100.0" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="610" y="60" width="120" height="80" rx="5" ry="5" fill="#f9f9f9" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="670.0" y="90" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">Transfer</text>
<text x="670.0" y="115" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle" font-weight="normal" dy=".3em">(Secure)</text>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+28
View File
@@ -0,0 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
</marker>
</defs>
<rect width="100%" height="100%" fill="#ffffff" />
<rect x="50" y="150" width="100" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="100" y="180" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">User Input</text>
<line x1="150" y1="180" x2="200" y2="180" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="200" y="140" width="100" height="80" rx="5" ry="5" fill="#d0e0ff" stroke="#003366" stroke-width="2" opacity="1.0" />
<text x="250" y="180" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Tokenizer</text>
<line x1="300" y1="180" x2="350" y2="180" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="350" y="100" width="150" height="160" rx="5" ry="5" fill="#fff8e1" stroke="#ff8c00" stroke-width="2" opacity="1.0" stroke-dasharray="4,4" />
<text x="425" y="120" font-family="Arial, sans-serif" font-size="12" fill="#995500" text-anchor="middle" font-weight="normal" dy=".3em">Context Window</text>
<rect x="370" y="140" width="110" height="40" rx="5" ry="5" fill="#xffd" stroke="#cc7a00" stroke-width="2" opacity="1.0" />
<text x="425" y="160" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">System Prompt</text>
<rect x="370" y="200" width="110" height="40" rx="5" ry="5" fill="#xffd" stroke="#cc7a00" stroke-width="2" opacity="1.0" />
<text x="425" y="220" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">User Tokens</text>
<line x1="500" y1="180" x2="550" y2="180" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="550" y="100" width="120" height="160" rx="5" ry="5" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" opacity="1.0" />
<text x="610" y="180" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="bold" dy=".3em">LLM Core</text>
<line x1="670" y1="180" x2="720" y2="180" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)" />
<rect x="720" y="150" width="60" height="60" rx="5" ry="5" fill="#eee" stroke="#333" stroke-width="2" opacity="1.0" />
<text x="750" y="180" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle" font-weight="normal" dy=".3em">Output</text>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB