T01 · Skill Instruction Hijacking
Error
- Location
- agents/profile-distiller.md:31
- Finding
- Indirect Prompt Injection Through Persistent Web-Derived Expert Profiles## Vulnerability Details **File Location**: `agents/profile-distiller.md:31-66`, with the resulting profiles consumed by `agents/project-builder.md:20-47` **Vulnerability Type**: Indirect prompt injection through untrusted web content **Risk Level**: High ### Vulnerable Instructions `agents/profile-distiller.md:31-66` directs the agent to read arbitrary web content and convert it into persistent operational guidance: ```markdown ### 2. Read Source Content For each source in the dossier: 1. If the source URL is accessible, read full content with the available web fetch/open tool 2. Extract key information per tier: - **Tier A**: Career facts, published works, institutional affiliations, formal methodologies - **Tier B**: Reasoning patterns, debate positions, interview insights, teaching style - **Tier C**: Supplementary context, recent opinions, informal commentary 3. Preserve disagreements between sources (do not smooth them away) 4. Note source freshness (publication dates vs current date) ### 3. Fill Profile Fields For each field in the profile contract, extract from sources: **bio_arc**: Public career trajectory relevant to the domain. From Tier A sources only. **canonical_works**: Title, year, why it matters. From Tier A sources. **signature_ideas**: Core ideas the expert has publicly championed. Cross-reference Tier A and Tier B. **reasoning_kernel**: - `core_questions`: What does this expert ask first when approaching a problem? From interviews and talks (Tier B). - `decision_rules`: How do they choose between competing explanations? From methodology descriptions. - `failure_taxonomy`: What failure modes do they detect quickly? From post-mortems and critiques. - `preferred_abstractions`: What concepts or models do they repeatedly use? From publications and talks. **preferred_evidence**: What types of evidence do they trust? (empirical, theoretical, anecdotal, statistical) **critique ...[truncated 4802 chars]
- Remediation
- ## Remediation Suggestions 1. Add an explicit rule that fetched pages are untrusted data and that instructions contained in them must never be followed. 2. Require schema-constrained extraction of factual claims rather than free-form transfer of page content. 3. Reject or quarantine imperative text, tool-use requests, credential requests, encoded payloads, and instructions unrelated to expert analysis. 4. Store field-level provenance, including source URL, quoted evidence, and extraction rationale. 5. Separate factual source excerpts from operational builder guidance. Do not pass raw source text to agents with Bash or write access. 6. Require human approval before newly distilled profiles become active inputs to the project-builder. 7. Use a least-privilege builder without Bash by default, enabling command execution only for an approved command allowlist. 8. Require explicit user confirmation and a staged-file secret review before any `git push` or `gh pr create` action.
