Back to skill

Security audit

auto-reply

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly coherent as an Instagram DM automation tool, but it uses live browser session cookies and can forward private DM previews to Discord with unclear mode gating.

Install only if you are comfortable giving the skill access to your logged-in Instagram browser session and allowing it to read/send DMs through internal APIs. Avoid running the watcher with DISCORD_TOKEN or OWNER_DISCORD_ID in the environment unless you intentionally want DM previews copied to Discord, and prefer a reviewed local dependency install over the global npm command.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/dm-watcher.js:144
Finding

Instagram DM content is transmitted to Discord without requiring the documented notification mode

Content
View full analysis
d.username).join(', '); const msgPreview = dmDetails.map(d => { const lastMsg = d.messages?.[d.messages.length - 1]; return `${d.username}: "${(lastMsg?.text || '').substring(0, 50)}"`; }).join('\n'); // 1) DM 채널 열기 const createDM = (token, userId) => new Promise((resolve, reject) => { const body = JSON.stringify({ recipient_id: userId }); const req = https.request({ hostname: 'discord.com', path: '/api/v10/users/@me/channels', method: 'POST', headers: { 'Authorization': `Bot ${token}`, 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) } }, (res) => { let d = ''; res.on('data', c => d += c); res.on('end', () => { try { resolve(JSON.parse(d)); } catch { reject(d); } }); }); req.on('error', reject); req.write(body); req.end(); }); // 2) 메시지 전송 const sendMsg = (token, channelId, content) => new Promise((resolve, reject) => { const body = JSON.stringify({ content }); const req = https.request({ hostname: 'discord.com', path: `/api/v10/channels/${channelId}/messages`, method: 'POST', headers: { 'Authorization': `Bot ${token}`, 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) } }, (res) => { let d = ''; res.on('data', c => d += c); res.on('end', () => { try { resolve(JSON.parse(d)); } catch { reject(d); } }); }); req.on('error', reject) ...[truncated 2543 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:19
Finding

Installation instructions use an unpinned global npm dependency

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (39)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Using CDP to extract authenticated Instagram cookies and undocumented internal APIs is materially more sensitive than a normal DM helper, yet this is not clearly disclosed in the skill purpose. In this context, hidden access to live session credentials raises account-compromise and privacy risks well beyond a simple auto-reply utility.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Using CDP to extract authenticated Instagram cookies and undocumented internal APIs is materially more sensitive than a normal DM helper, yet this is not clearly disclosed in the skill purpose. In this context, hidden access to live session credentials raises account-compromise and privacy risks well beyond a simple auto-reply utility.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Using CDP to extract authenticated Instagram cookies and undocumented internal APIs is materially more sensitive than a normal DM helper, yet this is not clearly disclosed in the skill purpose. In this context, hidden access to live session credentials raises account-compromise and privacy risks well beyond a simple auto-reply utility.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Using CDP to extract authenticated Instagram cookies and undocumented internal APIs is materially more sensitive than a normal DM helper, yet this is not clearly disclosed in the skill purpose. In this context, hidden access to live session credentials raises account-compromise and privacy risks well beyond a simple auto-reply utility.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 21)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 31)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 33)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 39)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 45)May include surrounding context.

md
| `scripts/v2.js` | DM CLI (inbox, unread, check, read, reply) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 23)May include surrounding context.

md
| `scripts/check-notify.js` | Check new DM notifications (for cron, state file based) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 53)May include surrounding context.

md
| `scripts/check-notify.js` | Check new DM notifications (for cron, state file based) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 24)May include surrounding context.

md
| `scripts/dm-watcher.js` | Real-time DM detection daemon (15s polling) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 73)May include surrounding context.

md
| `scripts/dm-watcher.js` | Real-time DM detection daemon (15s polling) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 74)May include surrounding context.

md
| `scripts/dm-watcher.js` | Real-time DM detection daemon (15s polling) |

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

Accessing the browser debugging interface to enumerate tabs and retrieve cookies grants broad power over the user's active browser session beyond simple DM notification checks. In the context of an auto-reply skill, this creates an unnecessary credential-access pathway that could be repurposed to read or hijack other authenticated data if the local debugger is exposed or the script is extended.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The code silently harvests authenticated Instagram cookies and transmits them in a handcrafted HTTPS request, without any user-facing notice, consent, or audit signal. Even though the destination is Instagram, the dangerous part is the covert use of session credentials outside the browser's normal trust boundary, which increases the risk of unauthorized account access and privacy violations.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The file header states that '--auto-reply' performs automatic replying via OpenClaw session handoff, yet this file never uses AUTO_REPLY to send replies or invoke any reply action. AUTO_REPLY only affects a startup log line, while the code actually reads DMs, writes a local alert file, and optionally sends a Discord notification.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The watcher sends Instagram DM previews and usernames to Discord, which is an external channel unrelated to the core Instagram monitoring/reply function described by the skill. This creates a clear confidentiality risk by exfiltrating private communications to another service and broadens data exposure beyond user expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The code transmits message previews and usernames to Discord without any explicit disclosure in the interface or manifest. Sending private DM content to a third party without informed consent is a significant privacy and data-handling flaw, especially in a tool that users may expect to remain within Instagram and local automation boundaries.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script connects to a local Chrome DevTools endpoint, locates an Instagram tab, and extracts live session cookies including csrftoken and ds_user_id. That is effectively credential harvesting from the browser session, and it enables authenticated actions against the user's Instagram account without an explicit consent step or safer OAuth-style boundary.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The code initiates cookie extraction from the browser and prepares those credentials for authenticated API use without any user-facing warning, prompt, or approval. In skill context, this is especially dangerous because DM automation does not inherently require silent access to full browser session material, so the behavior can surprise users and widen compromise impact if the skill is misused or extended.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill advertises network- and environment-dependent behavior but does not declare any explicit tool scope or permissions boundary. That makes the trust surface unclear and can enable overbroad access assumptions, especially for a skill that interacts with authenticated browser sessions and external services.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Automatic outbound DM replies can cause unintended messages to be sent from a user's authenticated account without a strong warning or approval step. In social messaging contexts, autonomous sending increases the risk of spam, reputation damage, policy violations, and accidental responses to malicious prompts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Forwarding DM-derived information to Discord without a clear privacy warning risks exposing private Instagram communications to a separate service and audience. Because the skill monitors messages in near real time, even small disclosures can become persistent cross-platform leaks.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/dm-watcher.js:99