Back to skill

Security audit

Graphify Source

Security checks for vulnerabilities and agentic risk

Overview

This skill is a review concern because it asks users to run an unreviewed local program over whole projects while giving inconsistent assurances about local-only operation and API key use.

Review carefully before installing. Only use it with a verified graphify.py from a trusted source, avoid running it over repositories containing secrets or private data, and do not set Anthropic/OpenAI keys unless you are comfortable with relevant extracted content potentially leaving your machine.

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:55
Finding

Execution Delegated to Unverified External Programs

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 55-57, 64, 156-157, and 165-167
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

SKILL.md, lines 55-57:

text
**Installation path**: `~/.workbuddy/skills/graphify.py`
**Status**: Installed and configured
**Invocation method**: Use the `/graphify` command directly in the AI assistant

SKILL.md, line 64:

bash
graphify .

SKILL.md, lines 156-157:

text
/graphify build .
/graphify query "what..."

SKILL.md, lines 165-167:

bash
python ~/.workbuddy/skills/graphify.py build .
python ~/.workbuddy/skills/graphify.py query "what is the structure?"

Technical Analysis

The audited package contains only SKILL.md; it does not include the referenced graphify.py implementation, an installation procedure, a dependency lockfile, a cryptographic hash, or another mechanism that establishes the executable's provenance and integrity.

The bare graphify command relies on operating-system PATH resolution. The Python invocation separately trusts a mutable file under the user's home directory. Neither target is controlled or verified by the audited package. As a result, the instructions can execute code whose contents were not included in the security review.

This is an insecure dependency and executable-resolution boundary. A malicious or previously compromised executable at either location could run under the identity and permissions of the user or agent following the instructions. The documented workflow supplies repository paths to that executable and recommends configuring API credentials in the process environment, increasing the sensitivity of the execution context.

The documentation also makes inconsistent claims about data handling: it describes operation as fully local while later stating that semantic extraction can use Anthropic or OpenAI API keys. Because t ...[truncated 1877 chars]

Remediation
View remediation

Remediation Suggestions

  1. Include the executable implementation within the reviewed skill package rather than relying on a mutable file in the user's home directory.
  2. Invoke the implementation through a canonical package-relative path instead of a bare command resolved through PATH.
  3. If an external artifact is unavoidable, document its authoritative source and pin an immutable release version and cryptographic SHA-256 hash.
  4. Verify the artifact's signature or hash before every installation or execution, and fail closed when verification does not succeed.
  5. Provide a reproducible installation process and dependency lockfile with hashes for all transitive dependencies.
  6. Restrict repository access to explicitly selected directories and run the executable with the minimum required filesystem and network permissions.
  7. Do not expose API credentials to AST parsing or other stages that do not require them. Supply narrowly scoped credentials only to the relevant process.
  8. Clearly disclose which files or extracted content may be sent to external LLM providers and require explicit user consent before transmission.
  9. Add tests or policy checks that reject execution when the resolved executable is outside the expected package directory or has unexpected ownership or permissions.
  10. Remove the contradictory claims of fully local operation unless the configured endpoint and implementation guarantee that no data leaves the host.
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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
Findings (3)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The metadata declares requires_api_key: false, while later sections instruct users to configure ANTHROPIC_API_KEY or OPENAI_API_KEY for semantic extraction. This mismatch is security-relevant because agents or users may classify the skill as local/safe and run it without realizing it can depend on external services and potentially transmit repository contents.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill documentation and usage guidance are presented exclusively in Chinese, which can impose a language constraint on users without any stated opt-in or alternative locale. Under the policy, forcing a specific language without user choice is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation makes strong claims that the skill is 'completely local' and needs no external API, but later usage sections state semantic extraction requires external API keys. This inconsistency can mislead users into exposing sensitive code, documents, or media to external LLM providers under false assumptions about locality and data handling.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.