Back to skill

Security audit

Llm Wiki Admin

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Obsidian wiki manager that reads and writes wiki project files for its stated knowledge-management purpose.

Install this only for an Obsidian vault or project where you want the agent to manage wiki files. Before ingesting large or sensitive material, ask the agent to list exact files it will create or modify and confirm before writing, especially for business/team or personal-growth wikis.

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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (27)

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill mandates activation for a very broad set of phrases, including common expressions like adding an article to a wiki or asking whether the wiki contains something. In an agent environment, such overbroad routing can cause the skill to trigger in contexts the user did not intend, leading to unintended file reads/writes and use of dependent skills like /obsidian or /markitdown.

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 88)May include surrounding context.

md
**必须先读取** `references/templates.md`,获取对应场景的模板(含 `_meta.json` 领域元数据模板),然后:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**必须先读取** `references/templates.md`,获取对应场景的模板(含 `_meta.json` 领域元数据模板),然后:

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 3)May include surrounding context.

md
# LLM-Wiki senario templates references

> When generating the file, replace the placeholders in the `<!-- ... -->` comments with the actual content entered by the user.

---

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 3)May include surrounding context.

md
# LLM-Wiki senario templates references

> When generating the file, replace the placeholders in the `<!-- ... -->` comments with the actual content entered by the user.

---

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 355)May include surrounding context.

md
## Hypothesis / Working Thesis

<!-- Your current best guess. This will evolve — update it as evidence accumulates. -->

>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 548)May include surrounding context.

md
## Key Themes to Track

<!-- What thematic threads do you expect or want to follow? -->

1.
2.

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 575)May include surrounding context.

Final Takeaways

text

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 729)May include surrounding context.

md
## Motivation

<!-- Why now? What prompted you to start this wiki? -->

## Current Goals (Summary)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/templates.md (reported line 931)May include surrounding context.

md
## Key Projects

<!-- High-level list — create detailed pages in wiki/projects/ -->

-
-

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill metadata and examples instruct activation on very broad phrases such as adding an article to a wiki, which can cause the skill to trigger outside clearly bounded contexts. Over-broad invocation can lead to unintended file reads/writes, unexpected use of the Obsidian-dependent workflow, and prompt-scope hijacking where unrelated user requests are forced into this skill's behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Forcing output language to follow the source material without user opt-in can create unsafe or misleading behavior by overriding the user's preferred language and reducing transparency in security-sensitive or file-modifying workflows. In a multilingual knowledge-management skill, this can also cause the model to present plans, confirmations, or change summaries in a language the user did not request, increasing the chance of mistaken approval or misunderstood edits.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

整个技能说明以中文固定表述,并在初始化问卷中仅提供“跟随资料语言 / 统一中文 / 统一英文”的内容语言选项,但没有说明技能交互语言是否可由用户选择。若组织政策要求不强制特定语言或需用户自主选择语言,此类默认单一语言说明可能构成自然语言层面的语言/locale 约束。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The mode mapping uses short, ambiguous trigger phrases such as '查一下', '问题', or '读这篇文章' without requiring wiki-specific context. This increases the chance the agent will misclassify ordinary conversation as an instruction to query, ingest, or modify the wiki, expanding the skill's authority beyond what the user clearly requested.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The INIT workflow instructs bulk creation of multiple files in the user's Obsidian Vault but does not require an explicit consent checkpoint summarizing the write set and destination. In practice, this can surprise users, create project sprawl, or write into the wrong location if path assumptions are incorrect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The ingest flow authorizes multi-file updates, creation of new domain indexes, metadata changes, log updates, and overview rewrites after only a brief preamble. Because ingestion may touch many files and evolve the knowledge structure, insufficient confirmation can lead to unintended modifications at scale, especially when source material is large or ambiguous.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document instructs the system to 'ALWAYS match the language of the source document,' which imposes a language behavior automatically rather than offering the user a choice. This matches the policy-violation category for forced language or locale behavior without user opt-in.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

L166-L167 明确写明创建/变更领域类操作只应在 LINT 中执行,不应在 INGEST 时进行。但 L082-L088、L110-L117 以及 L168-L183 又把创建新领域、更新 wiki/domains/_meta.json、渲染 wiki/index.md 等领域变更纳入 ingest 流程,且“创建领域”段落的触发条件就是摄入识别出新主题。这会让实现者或用户无法判断 ingest 是否被允许修改领域结构。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The exported LANGUAGE_RULE requires titles, content, and descriptions to be in the same language as the source material and says this is enforced in both analysis and generation. This is a natural-language policy issue because it mandates a specific language outcome across the workflow without presenting an opt-in or override path.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The template states 'ALWAYS match the language of the source document' and requires titles, content, and descriptions to follow that language. This imposes a language policy on users without offering a choice or opt-in, which matches the rule's language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This section requires the output to 'ALWAYS match the language of the source document.' Because it mandates a specific language behavior and does not provide a user choice, it violates the natural-language policy rule for language constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The language rule forces the generated content language to mirror the source language, with no opt-in or user selection mechanism. That is a natural-language policy violation because it hard-codes language behavior across the skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The business/team template includes an absolute language rule that requires matching the source document language. Since no user choice or justified locale restriction is provided, this is a language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The general template mandates that content be written in the same language as the source document. This is a hard-coded language policy without user opt-in, which falls under the natural-language policy violation category.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The Research schema says Every entity and concept should appear in wiki/index.md, but the same file repeatedly defines a two-layer index where wiki/index.md lists only top-level domains and content pages belong in per-domain index pages. This is an active contradiction in the documentation that could cause incorrect wiki generation behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.