Back to skill

Security audit

AI 토큰세이버

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for saving and searching context, but it sends and stores user content through a remote TokenSaver API without enough privacy, retention, deletion, or activation scoping disclosure.

Review this before installing. Do not save secrets, credentials, regulated data, or confidential project material unless you are comfortable storing it with TokenSaver and understand its retention and deletion policies. Prefer a pinned, verified package version in an isolated environment, and invoke the skill explicitly rather than relying on broad memory-related triggers.

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

Unpinned Third-Party Package Installation

Content
View full analysis
Remediation
View remediation
``` Install it with mandatory hash checking: ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Generate the hash from a trusted, independently verified release artifact. Do not copy a hash from the same potentially compromised distribution channel without additional verification. 4. Publish verifiable provenance for release artifacts and document the authoritative package publisher, repository, and package-index location. 5. Ensure that the published package is reproducibly tied to the reviewed source revision. Prefer signed tags, signed releases, build attestations, and reproducible builds. 6. In controlled deployments, install the reviewed local source or a trusted internally mirrored artifact instead of resolving a mutable public package name. 7. Configure pip to use only approved indexes and avoid combining trusted private indexes with untrusted public indexes in a way that permits dependency confusion. 8. Perform installation and execution as an unprivileged user inside an isolated virtual environment or container. Do not run the installation command as root or with unnecessary administrative permissions. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (12)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad and generic, including terms like '프롬프트 최적화' and '메모리 검색', which can plausibly appear in ordinary user requests unrelated to this skill. This increases the chance of unintended invocation, causing the agent to route user content into this skill unexpectedly and potentially disclose or transform sensitive context without explicit user intent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The description states that the skill uses a "한국어 Context DB" and later highlights "한국어 특화," but does not say whether other languages are supported or whether Korean is required by design. This can violate language/locale policy expectations when a skill imposes a specific language context without explicit user opt-in or clear limitation disclosure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs users to save and search content using an API-backed service but does not disclose that saved content is transmitted to an external provider. In an agent setting, users may provide project notes, roadmap details, or other sensitive data under the assumption it stays local, creating a meaningful confidentiality and data-governance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The save endpoint stores arbitrary user-provided content, but the exposed metadata gives no warning that sensitive user data may be persisted. In an agent skill context, this can lead to unintentional retention of secrets, personal data, or conversation content if callers assume the operation is ephemeral.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

All human-readable descriptions in this file are written in Korean, with no indication that the skill is region-specific or that users can choose their preferred language. This can violate language or locale policy when a skill imposes a specific language without opt-in or documented justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The description states '한국어 Context DB,' which suggests a Korean-language context bias without indicating user choice or locale negotiation. While not directly a code-execution issue, forcing or implying a fixed language context can mis-handle user data, degrade instruction fidelity, or cause incorrect retrieval/processing for users operating in other languages.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger list contains broad phrases such as '컨텍스트 저장', '메모리 검색', and '프롬프트 최적화' that could match many ordinary user requests unrelated to a narrowly scoped skill. Overbroad activation can cause the skill to intercept prompts unexpectedly, increasing the chance of unintended behavior, prompt routing mistakes, or abuse if the backing skill performs sensitive processing.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code presents its module description, docstrings, CLI help text, and runtime messages exclusively in Korean. Under the policy, forcing a specific language without offering a user-selectable alternative is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The save() method transmits arbitrary user-provided content to a third-party remote API, but the code provides no explicit disclosure or confirmation at the point of use. In a skill context, users may store sensitive prompts, notes, credentials, or proprietary data without realizing it leaves the local environment, creating privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This JSON manifest-like file lists callable endpoints and brief descriptions, but provides no explicit constraints, negative examples, or activation boundaries for when these operations should be invoked. For manifest files, missing specificity around trigger scope can lead to overly broad or unintended use of actions such as saving or searching memory.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The initializer reads TOKENSAVER_API_KEY from the environment and uses it in an Authorization header for outbound requests. While this is functionally expected for an API client, there is no explicit disclosure in code comments or CLI help about credential usage or the sensitivity of the environment variable.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The search() method sends user queries to an external API without prominently disclosing that search terms are transmitted off-device. Search queries can themselves contain sensitive project names, internal identifiers, or personal data, so silent exfiltration to a third party presents a privacy risk even if the functionality is expected.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.