Back to skill

Security audit

Image Compress

Security checks across malware telemetry and agentic risk

Overview

The skill does compress images through a remote API, but it also reads broad .env files, persists API keys, and sends a machine-derived device identifier with insufficient user-facing disclosure.

Review this skill before installing. It sends image contents to a third-party NX API/CDN, may store your NX API key in a project .env file, searches parent and home .env files, and sends a stable device identifier derived from the machine unless you override it with --client or NX_CLIENT_ID. Avoid using it on sensitive images or in directories with unrelated secrets unless those behaviors are acceptable.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill declares no permissions while its documented behavior clearly requires environment-variable access and network communication. This under-disclosure prevents informed consent and makes it harder for reviewers and users to understand the real trust boundary of the skill.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented behavior goes beyond simple image compression by searching ancestor and home-directory .env files, downloading remote content to disk, and per the static finding, sending a machine-unique identifier to a remote service. These extra behaviors expand data exposure and tracking risk well beyond what users would reasonably expect from an image-compression skill.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill instructs persisting a user-provided API key into the project-root .env file, which is broader than needed for a one-off compression action. Storing credentials in a shared project file can expose them to source control, other tools, teammates, or later unintended use.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The script derives a persistent device identifier from hostname and MAC addresses, then sends it to a remote API for every compression request. For an image-compression utility, collecting and transmitting a machine fingerprint is broader than necessary and creates avoidable privacy and tracking risk if the service correlates activity across runs or users.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The script walks parent directories and the user's home directory to load .env files, expanding its access to credentials and configuration unrelated to the compression task. This broad secret discovery behavior can unintentionally ingest sensitive tokens from other projects and make them available to the script's runtime, increasing exposure if the script or dependencies are modified or compromised.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README explicitly states that images are uploaded to an external NX API and a CDN URL is returned, but it does not clearly warn users that image contents and metadata leave the local machine and are processed by a third party. This can lead to inadvertent disclosure of sensitive or proprietary images, especially because the skill supports local folders and remote URLs and presents the workflow as routine optimization.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill encourages writing a supplied API key into a local .env file without clearly warning about persistence, project-wide visibility, or possible check-in to version control. Users may assume the key is used transiently when in fact it is being stored for future access.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The script uploads local image contents to a third-party remote API and also transmits a device identifier, but provides no explicit runtime warning or consent flow about off-device data transfer and tracking. In a skill context, users may expect local image optimization and may not realize their files and metadata are leaving the machine.

Ssd 3

Medium
Confidence
95% confidence
Finding
Persisting a user-supplied API key into the project's .env file creates unnecessary long-term credential exposure. In the context of a compression skill, this is more dangerous because the operation could be performed with transient credentials and does not require modifying project configuration.

Credential Access

High
Category
Privilege Escalation
Content
const fs=require('fs'),path=require('path'),os=require('os'),crypto=require('crypto');

// ===== 读取 .env 文件 =====
// 查找链: 当前目录逐级向上爬到根 → 兜底主目录 ~/.env,就近优先合并,已有环境变量优先
function findEnvFiles(){
  const files=[];
Confidence
92% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
const files=[];
  let dir=process.cwd();
  while(true){
    const candidate=path.join(dir,'.env');
    if(fs.existsSync(candidate)) files.push(candidate);
    const parent=path.dirname(dir);
    if(parent===dir) break;
Confidence
92% confidence
Finding
.env'

Credential Access

High
Category
Privilege Escalation
Content
if(parent===dir) break;
    dir=parent;
  }
  const homeEnv=path.join(os.homedir(),'.env');
  if(fs.existsSync(homeEnv)) files.push(homeEnv);
  return files;
}
Confidence
94% confidence
Finding
.env'

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/compress.js:41