T01 · Skill Instruction Hijacking
- Location
SKILL.md:119- Finding
Untrusted LinkedIn Conversation Content Can Hijack Agent Instructions
- Content
View full analysis
{ const groups = el.querySelectorAll('.msg-s-event-listitem'); groups.forEach(g => { const nameEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__profile-link'); const bodyEl = g.querySelector('.msg-s-event-listitem__body'); const timeEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__timestamp'); if (bodyEl?.textContent?.trim()) { messages.push({ sender: nameEl?.textContent?.trim() || 'unknown', time: timeEl?.textContent?.trim() || '', text: bodyEl.textContent.trim() }); } }); }); return JSON.stringify(messages); ``` ```markdown #### Step 4 — Analyse the conversation With the full thread loaded + their profile data, determine: - **What did they say last?** — Identify the most recent message from them. - **What's the intent?** — Interested / wants more info / asked a question / cold / objection / not interested. - **What's the right next message?** — See [Response Playbook](#response-playbook) below. - **Tone** — Mirror their tone (casual vs formal, brief vs detailed). ``` ### Technical Analysis The skill extracts arbitrary LinkedIn message bodies and places them directly into the agent's reasoning context. LinkedIn participants control this content, but the instructions do not explicitly identify it as untrusted data or prohibit the agent from treating embedded commands as operational instructions. This creates an indirect prompt-injection boundary. For example, a malicious participant could send a message containing instructions to disregard ...[truncated 2180 chars]- Remediation
View remediation
