Back to skill

Security audit

chatppt-agent

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent ChatPPT CLI helper, with disclosed cloud upload and login behavior, but users should treat installs, credentials, and document uploads carefully.

Before installing, consider using a restricted or disposable environment, avoid elevated npm installs, and do not upload confidential documents unless you are comfortable sending their contents to the ChatPPT/Baidu BOS-backed service. Do not paste or display raw auth config, AK/SK values, passwords, or tokens in chat logs.

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

Unpinned Global Installation of a Third-Party npm Package

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 12
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Complete Code Snippet:

bash
npm install -g @yooai/cli

Technical Analysis

The skill instructs users or agents to install @yooai/cli globally without pinning an exact version or verifying package integrity. Consequently, npm resolves a mutable package release from the configured registry at installation time rather than a specific version that was reviewed alongside the skill.

A global installation expands the effect beyond an isolated project environment and exposes the invoking account to package lifecycle scripts and subsequently executed CLI code. The audit found no evidence that the named package is currently malicious; the risk arises from the unsafe dependency acquisition method. A compromised publisher account, registry response, or future package release could cause the installed implementation to differ from the one originally intended or reviewed.

Attack Path

  1. An attacker compromises the npm publisher account, package release process, or another relevant supply-chain component for @yooai/cli.
  2. The attacker publishes a malicious release that becomes the version selected by npm.
  3. A user or agent follows the skill instruction and runs npm install -g @yooai/cli.
  4. npm downloads and installs the mutable release. Malicious lifecycle scripts may execute during installation, or malicious code may execute when later chatppt commands are invoked.
  5. The payload runs with the privileges of the account performing the installation and can affect files and resources accessible to that account.

Impact Assessment

Successful exploitation could permit arbitrary code execution with the invoking user's privileges. The accessible scope may include user files, environment variables, npm configuration, authentication material readable by that user, and the ...[truncated 305 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to an exact, reviewed version, for example:
    bash
    npm install --global --ignore-scripts @yooai/cli@X.Y.Z
    
    Use --ignore-scripts only after confirming that legitimate installation does not require lifecycle scripts.
  2. Document the expected npm registry and avoid relying on an uncontrolled user-level registry configuration.
  3. Publish and verify the expected package integrity digest or signed provenance before installation.
  4. Prefer a project-local installation with a lockfile over a global installation, then invoke the locked binary through an explicit local path.
  5. Review package contents, transitive dependencies, lifecycle scripts, ownership, and release provenance before approving version upgrades.
  6. Run the CLI under a least-privileged account or isolated environment and avoid elevated installation.
  7. Establish a controlled upgrade process so newer releases are security-reviewed before changing the pinned version.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description is entirely in Chinese and states when the skill should be triggered, but it does not indicate that the user may choose another language. Because SQP-3 applies to all file types and covers language/locale policy violations, this is a natural-language policy issue if users are not given an explicit language choice.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

L041 写明任务完成后要“询问用户要直接下载pptx文件还是跳转到线上编辑器”,但 L053 又明确要求当状态为 2 或 3 后“仅返回成功结果与关键信息,不执行任何后续操作”。这两处文档对成功后的 agent 行为给出了直接冲突的指令,属于文档意图与实际要求的自相矛盾。

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill instructs the agent to upload local files to a cloud-backed service for PPT generation, but it does not require an explicit warning that document contents will leave the local environment and be transmitted to third-party infrastructure. This can lead users to share sensitive files without informed consent, especially because the workflow encourages automated execution once parameters are present.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

前文 L302-L309 指定导入生成绘图 PPT 使用 chatppt ppt import_file_banana --file-path,但示例 L333-L334 却使用了 --file。这是文档对同一命令参数的直接不一致,可能导致 agent 按错误参数构造命令。

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation includes a config output example exposing an access_key_id and describes config show without strong guidance to avoid displaying or logging credential-related material. In agent settings, this increases the risk of secrets being echoed into chat transcripts, logs, or telemetry, which can enable credential misuse or reveal sensitive infrastructure details.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.