Back to skill

Security audit

Ainative Vue Sdk

Security checks for vulnerabilities and agentic risk

Overview

This Vue chat SDK guide is mostly coherent, but it tells developers to expose an AINative API key in public frontend config, which could risk account or credit abuse.

Review this carefully before installing. Use a backend proxy or short-lived restricted client tokens unless AINative explicitly documents that the key is safe to publish in browsers, and add user notice for chat data sent to the hosted API.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:26
Finding

API Credential Exposed Through Public Client-Side Configuration

Content
View full analysis
import { provideAINative } from '@ainative/vue-sdk'; provideAINative({ apiKey: import.meta.env.VITE_AINATIVE_API_KEY }); ``` ```typescript // plugins/ainative.client.ts import { provideAINative } from '@ainative/vue-sdk'; export default defineNuxtPlugin(() => { provideAINative({ apiKey: useRuntimeConfig().public.ainativeApiKey }); }); ``` ```typescript // nuxt.config.ts export default defineNuxtConfig({ runtimeConfig: { public: { ainativeApiKey: process.env.VITE_AINATIVE_API_KEY } } }); ``` ### Technical Analysis The Skill instructs users to place a value identified as an `apiKey` in two explicitly public frontend configuration mechanisms: - Vite environment variables prefixed with `VITE_` are substituted into client-side application code and can be recovered from the generated JavaScript bundle or observed during browser requests. - Nuxt values under `runtimeConfig.public` are intentionally exposed to client-side code. Consequently, these mechanisms do not protect secret API credentials. The documentation does not state that this key is a restricted publishable token, nor does it require short expiration, origin restrictions, narrow scopes, or per-user authorization. Although transmitting authentication information and chat messages to the declared AINative API is consistent with the Skill's hosted-chat functionality, exposing a reusable secret to every browser exceeds minimum-privilege requirements. A secret credential does not need to be distributed to untrusted clients when requests can instead be brokered through an authenticated backend. ### Attack Path ...[truncated 1358 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:12
Finding

Unpinned Third-Party SDK Installation Creates Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

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

md
| `isLoading` | `Ref<boolean>` | True during request |
| `error` | `Ref<AINativeError \| null>` | Last error |
| `sendMessage` | `(msgs: Message[]) => Promise<...>` | Send next turn |
| `reset` | `() => void` | Clear conversation |

## useCredits Composable

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs developers to send user chat content and account-related data to a third-party AI service, but it provides no privacy, consent, retention, or disclosure guidance. In real applications this can lead to unannounced transmission of sensitive user data, creating privacy, compliance, and trust risks, especially if developers copy the example verbatim into production UI.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The manifest description scopes the skill to adding AI chat to Vue 3 apps, emphasizing installation, config provision, chat composables, and chat UI. The documented useCredits composable adds a separate account/credit-balance capability that is not mentioned in the manifest and is not necessary to implement chat UI itself.

Content

No source excerpt is available for this finding.