Back to skill

Security audit

auto-file-sender

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it promotes automatic external sharing of workspace files with broad defaults and weak user-review safeguards.

Review before installing. Use this only for deliberate Feishu/Lark delivery workflows, restrict the watched directory and file pattern, verify the recipient and file list before any send tool call is executed, avoid sensitive workspaces, and do not run watch mode unattended. Treat the helper script as a command generator, not as a complete sender.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/auto_send.py:104
Finding

Symbolic Link Traversal May Expose Files Outside the Watched Directory

Content
View full analysis
MAX_FILE_SIZE_MB: return False, f"File too large ({size_mb:.1f}MB > {MAX_FILE_SIZE_MB}MB)" ``` ```python for item in Path(directory).glob(pattern): if item.is_file(): files.append(str(item.absolute())) ``` ```python def generate_send_command(filepath, recipient=None, message=None): """Generate the message.send tool call""" filename = os.path.basename(filepath) cmd = { "action": "send", "filePath": filepath, "filename": filename } if recipient: cmd["target"] = recipient ``` ### Technical Analysis The directory scanner accepts entries for which `Path.is_file()` returns true. Both `Path.is_file()` and `os.path.isfile()` follow symbolic links by default. The subsequent size and modification-time checks also operate on the linked target. Although `item.absolute()` creates an absolute path, it does not securely resolve the path and verify that the final target remains under the configured watch directory. The code also does not reject symbolic links. Consequently, a symbolic link located inside the watched directory can point to a readable file elsewhere on the local filesystem and still pass validation when: - The target is a regular file. - Its apparent extension is included in `SUPPORTED_EXTENSIONS`. - Its size does not exceed 30 MB. - It satisfies the file-age and stability checks. The resulting path is embedded in a `message.send` instruction. The script itself only prints this instruction and does not perform a network request. Exploitation therefore requires the surrou ...[truncated 1795 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description says the skill automatically sends files to Feishu/Lark when files are generated or updated. However, the code merely scans/watches a directory and prints JSON objects like {"action":"send", ...} as instructions. There is no API call, SDK usage, subprocess invocation, or tool integration that performs message/file delivery. The watch behavior and file filtering broadly align with the described workflow, but the core promised capability—automatic sending—is absent. Therefore this is a material description-to-behavior mismatch.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill promotes automatic transmission of workspace files to Feishu/Lark without prominently warning about confidentiality, recipient verification, or the risk of exfiltrating sensitive data. Because the workspace may contain private or regulated files, encouraging unattended sending materially increases the chance of unauthorized disclosure.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill's stated workflow encourages bulk disclosure of all matching workspace files to a recipient, which materially increases exfiltration risk if the workspace contains sensitive or mixed-trust content. In this context, even though the current code only prints send commands, the skill is designed to drive automated outbound file transfer and normalizes sending entire classes of files without human review.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/auto_send.py (reported line 142)May include surrounding context.

python
def print_send_instructions(files, recipient=None):
    """Print instructions for sending files"""
    print("\n" + "="*60)
    print("AUTO FILE SENDER - Send Instructions")
    print("="*60 + "\n")

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
84% confidence
Finding

Autonomous decision-making is risky here because the skill is framed to send files automatically when they are created or updated, potentially without a per-file human review. In a file-transfer context, automation can convert routine workspace activity into external data transmission, making mistakes or misclassification more consequential.

Content

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

md
---
name: auto-file-sender
description: |
  Automatically send files from workspace to Feishu/Lark when files are generated or updated. 
  Use when: (1) User creates new documents and wants them delivered automatically, 
  (2) Batch processing generates multiple files that need to be sent, 
  (3) Setting up automated file delivery workflows.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The activation criteria are broad enough to trigger in many ordinary file-generation workflows, which increases the chance the skill is invoked when the user did not specifically intend external file delivery. In this context, the skill's purpose is transmitting workspace files to recipients, so overbroad activation raises the risk of unintended disclosure of sensitive documents.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% 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 · scripts/auto_send.py (reported line 3)May include surrounding context.

python
#!/usr/bin/env python3
"""
Auto File Sender - Watch workspace and automatically send files to Feishu

Usage:
    python3 auto_send.py [options]

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstring and CLI description present this as an automatic file sending tool, and functions like send_once and watch_directory are described as sending files. In reality, the code only scans directories and prints command objects to stdout via print_send_instructions and print(json.dumps(...)), with no Feishu/Lark API call or tool invocation implemented.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is explicitly framed as automatic file delivery from a workspace to a recipient, but it provides no prominent warning about privacy, data sensitivity, or unintended disclosure. In an agent-skill context, that omission is dangerous because users may enable broad file matching and recipient targeting without understanding that generated documents could contain secrets or personal data.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

watch_directory is documented as 'Watch directory for new files and print send commands', which is accurate, but send_once says 'Send all matching files once and exit' and the --once help text says 'Send existing files and exit'. The actual behavior of send_once is to collect valid files and call print_send_instructions, which only prints JSON instructions rather than sending anything.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.