Back to skill

Security audit

Phy Graphql Schema Audit

Security checks for vulnerabilities and agentic risk

Overview

This is a local GraphQL schema-audit skill with some scope and reliability caveats, but no evidence of hidden exfiltration, persistence, or destructive behavior.

Reasonable to install for local GraphQL schema review, but do not treat its deprecated-operation results as complete unless operation parsing is added. Review before letting it scan an entire repository, and avoid the unpinned npx command unless you trust the package source or have installed a pinned local dependency.

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:49
Finding
Unpinned Third-Party Package Execution via npx## Vulnerability Details **File Location**: `SKILL.md:49` **Vulnerability Type**: Unsafe execution of an unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```bash npx get-graphql-schema http://localhost:4000/graphql > schema.json ``` The same command is repeated in generated guidance at `SKILL.md:97`. ### Technical Analysis The documented command invokes `get-graphql-schema` through `npx` without specifying a package version, lockfile, integrity hash, or trusted package source. If the package is not already available locally, `npx` may retrieve it and execute its code with the invoking user's permissions. Although the GraphQL endpoint is limited to `localhost`, that restriction applies only to the command's intended schema request. It does not restrict the downloaded package or its transitive dependencies. Package code can access files, environment variables, credentials available to the user, local network services, and external network destinations. This is unnecessary for the Skill's declared local static-analysis functionality. Users can provide an existing SDL or introspection JSON file, or the documentation can require a pinned and reviewed local dependency. ### Attack Path 1. An attacker compromises, replaces, or otherwise gains control over the referenced npm package or one of its transitive dependencies. 2. A user follows the Skill's documented `npx get-graphql-schema` instruction. 3. `npx` resolves and downloads the currently published, unpinned package code. 4. The retrieved package or dependency executes with the user's privileges. 5. Malicious code can read accessible project data or credentials, execute commands, modify files, or transmit information over the network. ### Impact Assessment Successful exploitation would provide code execution under the account running the command. The accessible scope may include the current project, other user-readable files, environment va ...[truncated 502 chars]
Remediation
## Remediation Suggestions 1. Do not recommend dynamically executing an unversioned package through `npx`. 2. Pin a reviewed package version as a project development dependency and commit the package manifest and lockfile. 3. Invoke the installed local binary in a way that prohibits fallback downloads, such as `npx --no-install`, after verifying the package is installed. 4. Use package-manager integrity verification and automated dependency scanning. 5. Prefer a GraphQL server's built-in schema export or introspection mechanism where practical, avoiding dynamically retrieved executable tooling. 6. Clearly inform users that introspection output may reveal sensitive schema metadata and should remain local unless they explicitly authorize disclosure. 7. Apply the same correction to the repeated command at `SKILL.md:97`.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (3)

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill claims it can detect deprecated fields still used in operations, but the provided implementation contains no logic to parse operation files or correlate them with deprecated schema fields. This is dangerous because it can give users false assurance that deprecated-field usage has been audited, causing missed migration or security-relevant cleanup work.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger list includes generic phrases such as "review my schema", "query complexity", and "introspection json" that are not narrowly scoped to invoking this specific skill. In a markdown skill description, these vague triggers can overlap with normal user requests and increase the chance of accidental activation.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill advertises 'pure local file analysis' of schema SDL/introspection input, but it also searches application source files to infer whether depth-limit middleware is configured. That discrepancy can cause users to expose a broader portion of their repository than expected and undermines trust in the skill's stated scope, even though it remains local-only rather than exfiltrating data externally.

Static analysis

No suspicious patterns detected.