Back to skill

Security audit

Url To Obsidian

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently saves user-provided web pages into Obsidian notes, with expected network fetching and local note writing that users should understand before use.

Install only if you are comfortable with a skill fetching URLs through available web tools and writing Markdown files into your Obsidian vault. Avoid using it on confidential or login-only pages unless you understand which fetch backend is being used, and review saved command examples before running anything from the resulting notes.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

The template includes a classic 'curl | sh' install command that fetches and immediately executes a remote script without integrity verification. In a skill that captures web content into notes, preserving such commands can normalize unsafe execution patterns and may facilitate copy-paste compromise if users trust the generated note content.

Content

Scanner excerpt · references/template.md (reported line 88)May include surrounding context.

安装

bash
curl -sS https://starship.rs/install.sh | sh

配置

Chaining Abuse

High
Category
Tool Misuse
Confidence
91% confidence
Finding

The shell pipe into 'sh' is a dangerous command-chaining pattern because it converts remote content directly into executable shell input. Even though this appears in a markdown example, the surrounding skill context makes it more dangerous because the skill is designed to save and present third-party web content, increasing the chance users may later trust and run reproduced commands from notes.

Content

Scanner excerpt · references/template.md (reported line 88)May include surrounding context.

安装

bash
curl -sS https://starship.rs/install.sh | sh

配置

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill description does not prominently warn users that supplied URLs and fetched page content may be sent through external tools/services and then written into the local Obsidian vault. In this context, that omission is security-relevant because the workflow explicitly uses multiple fetch backends and persistent local writes, so users may unknowingly expose sensitive URLs/content or authorize storage changes without informed consent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger list contains broad, everyday phrases such as '收藏到 obsidian' and '保存到 obsidian', which increases the chance of accidental invocation in normal conversation. In this skill's context, accidental invocation is meaningful because it can cause external URL fetching and local file writes into the user's Obsidian vault, potentially transmitting content to third-party services and creating unwanted notes.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
77% confidence
Finding

The manifest description frames the skill as fetching a URL and saving it as an Obsidian note, with user-guided choices. However, the documentation additionally instructs probing existing vault directories via obsidian_list_files_in_vault, which is not present in allowed-tools and expands behavior beyond the clearly described fetch-and-save flow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file contains natural-language instructions that force a specific language context through Chinese-only headings and mandatory wording such as '不可违反' and '必须'. Under the policy, language or locale constraints should either be optional for the user or clearly justified as region-specific.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/template.md (reported line 154)May include surrounding context.

Chat Completions

bash
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/template.md (reported line 154)May include surrounding context.

Chat Completions

bash
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

At L033 the instructions state the purpose of prechecking is to avoid waiting for timeout before degrading. But the later operational rules still list command timeout as a downgrade condition for opencli, which contradicts the stated intent rather than merely omitting detail.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.