Back to skill

Security audit

InfoSeek

Security checks for vulnerabilities and agentic risk

Overview

This research skill is mostly coherent, but it under-discloses privacy and network behavior and includes unsafe, overbroad deletion and unpinned dependency instructions.

Review this skill before installing. It sends search subjects to external search and browsing providers despite saying otherwise, may store personal data in local archives, and should not be used for people research without a clear lawful purpose and retention plan. Avoid using its deletion command until it restricts targets to its archive and replaces the PowerShell/manual trash implementations with safer APIs. Pin and verify all dependent skills before use.

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

Error
Location
scripts/infoseek_helper.py:614
Finding

PowerShell Command Injection Through a User-Controlled Deletion Path

Content
View full analysis
bool: """Windows: move to recycle bin""" import subprocess safe_path = filepath.replace('"', '""') ps_command = f''' Add-Type -AssemblyName Microsoft.VisualBasic [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile("{safe_path}", "OnlyErrorDialogs", "SendToRecycleBin") ''' result = subprocess.run( ['powershell', '-Command', ps_command], capture_output=True, text=True, timeout=30 ) return result.returncode == 0 ``` ### Technical Analysis The `filepath` command-line argument is controlled by the caller and is interpolated directly into dynamically generated PowerShell source code. Replacing double quotes with two double quotes is not a reliable way to encode an untrusted value for use inside a PowerShell expandable string. In particular, PowerShell evaluates constructs such as `$()` inside double-quoted strings. A specially crafted file path containing a PowerShell subexpression can therefore cause arbitrary PowerShell expressions to be evaluated when the generated script is parsed. Other PowerShell metacharacters may also allow an attacker to alter the intended command structure. Using `subprocess.run()` with an argument list prevents command-line parsing by a conventional shell, but it does not mitigate this issue because the application deliberately invokes `powershell -Command` and supplies attacker-influenced PowerShell source code. ### Attack Path 1. An attacker causes the Skill or its user to process a Windows file path containing PowerShell syntax, such as an expandable `$()` expression. 2. The caller invokes the `delete` subcommand with the crafted value through `--filepath`. 3. The deletion workflow displays the path and requests confirmat ...[truncated 1243 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:35
Finding

Unpinned Installation of Third-Party Skills Creates a Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The documented behavior materially differs from what is actually specified: the skill claims comprehensive search and browser extraction, but the provided content mainly orchestrates helper scripts and external dependencies. This mismatch is dangerous because users and policy systems may trust the stated purpose while the skill performs a different operational role, weakening review, consent, and monitoring controls.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The Security & Privacy section states there is 'no external data transmission' even though the workflow explicitly uses external search engines and browser access to remote URLs. This is a misleading security claim that can cause users to disclose sensitive queries under false assumptions about privacy and data flow.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill declares no explicit tool scope while its instructions require environment access, shell execution, file writes, and network-enabled operations. In an agent setting, missing scope constraints can let the skill invoke broader capabilities than users expect, increasing the risk of unintended command execution, data access, or outbound requests.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill explicitly targets research on persons and dossier building but does not provide a clear privacy warning, lawful-use limitation, or safeguards for sensitive personal data handling. Given the context, this can facilitate intrusive profiling, overcollection, and retention of personal information without adequate notice or consent controls.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to activate on ordinary research or background-check requests, potentially causing the agent to engage in large-scale data collection and archival without sufficiently specific user intent. In a skill that stores dossiers and performs networked research, overbroad activation increases privacy and misuse risk.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
## Deletion Policy

**Strict data retention — no permanent deletes without confirmation.**

| Operation | Confirmation | Method |
|-----------|-------------|--------|

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The claim 'No personal data stored — only search results' is inaccurate because the skill is designed to archive information about persons, including metadata and dossier-like collections. Search results about identifiable people are still personal data in many contexts, so this statement understates privacy risk and retention obligations.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill is described primarily as a research/archive helper, yet it exposes a deletion capability that can act on any provided filepath. Because there is no boundary check ensuring the file belongs to the skill's workspace or generated archives, an agent or caller could be induced to move unrelated local files to trash, creating unintended destructive side effects.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
87% confidence
Finding

This invokes PowerShell with a command string built from a user-controlled filepath. Although quotes are doubled, PowerShell string interpolation/escaping rules are subtle, and launching a shell for file deletion broadens the attack surface compared with using a dedicated safe API. In this skill's context, the helper manages user-specified archive files, so unsafe deletion behavior is more sensitive because it can affect arbitrary local files if path handling is abused upstream.

Content

Scanner excerpt · scripts/infoseek_helper.py (reported line 726)May include surrounding context.

python
Add-Type -AssemblyName Microsoft.VisualBasic
        [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile("{safe_path}", "OnlyErrorDialogs", "SendToRecycleBin")
        '''
        result = subprocess.run(
            ['powershell', '-Command', ps_command],
            capture_output=True, text=True, timeout=30
        )

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The implementation claims recycle-bin-only semantics, but the macOS/Linux fallback uses shutil.move directly into fixed trash-like folders. That can overwrite existing files with the same name, fail to create FreeDesktop-compliant metadata, or simply relocate files in a way that is less recoverable and less predictable than true recycle-bin behavior. In a data archival skill, this mismatch is dangerous because users may trust the deletion safety guarantees when they are not consistently enforced.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/infoseek_helper.py (reported line 746)May include surrounding context.

python
"""Linux: move to trash (trash-cli or manual)"""
        import subprocess
        try:
            result = subprocess.run(['trash', filepath], capture_output=True, timeout=30)
            return result.returncode == 0
        except FileNotFoundError:
            home = Path.home()

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
68% confidence
Finding

The skill is named 'infoseek-en,' which suggests a fixed English locale, but the document does not explain the limitation or offer a language choice. Under the policy, forcing a specific language or locale without opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.