Back to skill

Security audit

Cli Obsidian

Security checks for vulnerabilities and agentic risk

Overview

This is a small documentation-only skill for using an Obsidian CLI, with expected note access but some installation and privacy cautions users should review.

Install only if you trust the `cli-obsidian` package source, preferably in a virtual environment and without admin privileges. Point it only at Obsidian vaults you intend the agent to access or modify, and consider backups before allowing automated note management or export.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:14
Finding

Unpinned Third-Party Package Installation Enables Supply-Chain Compromise

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:14-18; duplicated in README.md:21-25
Vulnerability Type: Unpinned third-party dependency installed from a mutable public package repository
Risk Level: Medium

Relevant code from SKILL.md:

markdown
## 安装

```bash
pip install cli-obsidian
text

**Relevant code from `README.md`:**
```markdown
## 安装

```bash
pip install cli-obsidian
text

### Technical Analysis

Both installation instructions direct users or AI agents to install `cli-obsidian` from the default Python Package Index without specifying an exact version, package hash, or trusted artifact source. Consequently, the code installed is determined at installation time rather than being fixed to the version reviewed with this skill.

If the package owner account, publishing credentials, package namespace, or upstream release process is compromised, an attacker can publish a malicious newer release. Subsequent execution of the documented command would select that release. Python packages may execute build or installation logic, and their installed command-line entry points execute when users invoke `cli-obsidian`.

The repository contains only documentation and metadata; it does not include source code, a lock file, hashes, signatures, or other material through which the installed package can be independently audited or verified.

### Attack Path

1. An attacker compromises the upstream package publisher, release pipeline, or associated PyPI credentials.
2. The attacker publishes a malicious version of `cli-obsidian`.
3. A user or AI agent follows the project documentation and runs `pip install cli-obsidian`.
4. Pip resolves the mutable package name to the attacker-controlled release because no version or hash is constrained.
5. Malicious package installation logic or the installed CLI entry point executes with the installing user's privileges.
6. The payload can access resour
...[truncated 916 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the dependency to a reviewed exact version, for example:
    bash
    python -m pip install "cli-obsidian==1.0.0"
    
  • Publish and document SHA-256 hashes for approved distribution artifacts, and use a hash-locked requirements file:
    text
    cli-obsidian==1.0.0 --hash=sha256:<verified-wheel-hash>
    
    Install it with:
    bash
    python -m pip install --require-hashes -r requirements.txt
    
  • Ensure the pinned version actually corresponds to a reviewed upstream release; project metadata alone does not verify the external package.
  • Provide a link to the canonical source repository and signed release artifacts so users can inspect provenance.
  • Protect package-publishing accounts with phishing-resistant multi-factor authentication and narrowly scoped, short-lived publishing tokens.
  • Recommend installation inside an isolated virtual environment and explicitly advise against running pip or the CLI with administrative privileges.
  • Apply the same corrected installation instructions consistently in both SKILL.md and README.md.
  • Establish a controlled update process in which new package versions are reviewed, scanned, hash-pinned, and tested before documentation is updated.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file promotes direct AI-agent operation of notes, including automatic meeting-note recording, batch management, and data export, but does not include any caution about modifying user notes, exporting data, or privacy implications. For markdown files, user-facing documentation should warn when behavior may affect user data or system integrity.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README presents the skill entirely in Chinese and does not indicate that the language is optional, configurable, or justified by a region-specific scope. This can constitute a natural-language policy issue when a specific language is effectively imposed without user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The README states that the tool lets an AI agent directly operate notes and shows note-creation commands, but it does not include any user warning about modifying user data or note contents. For a markdown skill description, actions affecting user data should be disclosed so users understand the integrity and overwrite risks before use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The primary descriptive heading is written in Chinese and presents the skill in that language without any indication of language choice or opt-in. This can violate language/locale policy where skills should not impose a specific language on users absent documentation or explicit selection.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The display name and description are written only in Chinese, which can reflect a language-specific presentation without any stated opt-in or documented locale scope. Under the policy, language constraints should either offer user choice or be clearly justified as region-specific.

Content

No source excerpt is available for this finding.