Back to skill

Security audit

问卷网

Security checks across malware telemetry and agentic risk

Overview

The skill mostly matches its survey-management purpose, but its recommended setup/update paths can run high-impact installation actions that deserve review before use.

Install only if you trust the publisher and the Wenjuan account access this skill will receive. Prefer installing Node.js yourself from trusted channels, then use the locked npm dependencies, and avoid running setup.sh -y on a sensitive machine. Keep WENJUAN_HOST unset unless you intentionally use a trusted endpoint, store tokens in a private WENJUAN_TOKEN_DIR, and remove ~/.wenjuan and the skill .wenjuan/auth.json when finished on shared systems.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding
The declared description frames the skill mainly as a survey-management tool, but the document also instructs the agent to perform materially broader actions: environment setup, local installation, login token acquisition and storage, browser opening, phone binding, deletion/editing operations, version update handling, and file generation. This scope expansion can mislead users or policy systems into authorizing a seemingly narrow business tool that in practice gains local execution and credential-handling abilities.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
print_info "正在安装 Node.js (Ubuntu/Debian)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    print_success "Node.js 安装完成"
Confidence
98% confidence
Finding
sudo -E preserves caller environment variables while executing a remote script as root, which increases risk beyond normal sudo usage. Malicious environment manipulation or unsafe inherited variables can influence privileged script behavior and magnify the danger of the curl-piped installer.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# 使用 NodeSource 安装较新版本
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    print_success "Node.js 安装完成"
}
Confidence
78% confidence
Finding
This line performs privileged package installation with sudo apt-get install -y nodejs. While elevated package installation is normal for setup scripts, it still expands blast radius if the package source was previously modified by the remote NodeSource setup step or if the script is run in an untrusted context.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
print_info "正在安装 Node.js (CentOS/RHEL/Fedora)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
    
    if command -v dnf &> /dev/null; then
        sudo dnf install -y nodejs
Confidence
98% confidence
Finding
This line pipes a remote NodeSource script directly into sudo bash, causing unverified internet content to run as root. That is a classic supply-chain risk and can lead to arbitrary code execution with full system privileges.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
print_info "正在安装 Node.js (Ubuntu/Debian)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    print_success "Node.js 安装完成"
Confidence
98% confidence
Finding
sudo -E preserves caller environment variables while executing a remote script as root, which increases risk beyond normal sudo usage. Malicious environment manipulation or unsafe inherited variables can influence privileged script behavior and magnify the danger of the curl-piped installer.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"author": "",
  "license": "MIT",
  "dependencies": {
    "axios": "^1.20.0",
    "open": "^10.0.0",
    "qrcode": "^1.5.4",
    "sharp": "^0.35.3"
Confidence
92% confidence
Finding
The dependency uses a caret range (^1.20.0), which allows npm to install newer compatible releases automatically. That increases supply-chain risk because future upstream releases may introduce malicious code, regressions, or newly exposed behavior without this package being explicitly reviewed and pinned.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"license": "MIT",
  "dependencies": {
    "axios": "^1.20.0",
    "open": "^10.0.0",
    "qrcode": "^1.5.4",
    "sharp": "^0.35.3"
  },
Confidence
92% confidence
Finding
The open package is referenced with a caret range, so installed code may change over time even when this skill itself is unchanged. In this skill context, that matters because open can trigger browser/system actions, so an unreviewed upstream update could alter local behavior or introduce abuse paths.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"dependencies": {
    "axios": "^1.20.0",
    "open": "^10.0.0",
    "qrcode": "^1.5.4",
    "sharp": "^0.35.3"
  },
  "engines": {
Confidence
90% confidence
Finding
Using ^1.5.4 for qrcode permits automatic uptake of later releases within the major version. While common in development, this still creates a supply-chain exposure because the code actually executed may differ from the code originally reviewed.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"axios": "^1.20.0",
    "open": "^10.0.0",
    "qrcode": "^1.5.4",
    "sharp": "^0.35.3"
  },
  "engines": {
    "node": ">=18.0.0"
Confidence
91% confidence
Finding
The sharp dependency is not fully pinned, allowing npm to resolve newer releases automatically. This is a supply-chain risk, and for native/image-processing packages it can also introduce build-time or runtime changes that have not been security-reviewed in this skill.

External Script Fetching

Low
Category
Supply Chain
Content
sudo apt-get install -y nodejs

CentOS/RHEL/Fedora:
  curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
  sudo yum install -y nodejs

Windows:
Confidence
98% confidence
Finding
The documentation instructs users to fetch a remote script from nodesource.com and pipe it directly into sudo bash, granting network-delivered content immediate root execution. If the remote source, transport path, or DNS/TLS trust chain is compromised, this can lead to full system compromise.

External Script Fetching

Low
Category
Supply Chain
Content
# 方式二:使用 nvm 管理 Node.js 版本(推荐)
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 安装 Node.js
nvm install 20
nvm use 20
Confidence
96% confidence
Finding
Piping a fetched install.sh from GitHub directly into bash executes unreviewed remote code on the user's machine. Although nvm is common and this runs unprivileged by default, a compromised upstream or man-in-the-middle scenario could still execute arbitrary commands in the user's account context.

External Script Fetching

Low
Category
Supply Chain
Content
print_info "正在安装 Node.js (CentOS/RHEL/Fedora)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
    
    if command -v dnf &> /dev/null; then
        sudo dnf install -y nodejs
Confidence
99% confidence
Finding
Fetching an external script over the network and piping it directly to sudo bash bypasses code review and integrity controls. In an installation script for a survey skill, this context makes the behavior less expected than in a dedicated OS bootstrap tool, so the supply-chain risk is more concerning.

Chaining Abuse

High
Category
Tool Misuse
Content
brew install node

Ubuntu/Debian:
  curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
  sudo apt-get install -y nodejs

CentOS/RHEL/Fedora:
Confidence
99% confidence
Finding
This command chains curl output directly into sudo -E bash, creating a one-step remote-code-as-root execution path. That combination is especially dangerous because it removes the inspection boundary and immediately executes attacker-controlled content with elevated privileges if the remote script is ever compromised.

Chaining Abuse

High
Category
Tool Misuse
Content
sudo apt-get install -y nodejs

CentOS/RHEL/Fedora:
  curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
  sudo yum install -y nodejs

Windows:
Confidence
99% confidence
Finding
This is another curl-to-sudo-bash chain, which is a classic unsafe installation pattern. It enables arbitrary root-level command execution from a remote endpoint with no content verification or review step, making compromise highly impactful.

Chaining Abuse

High
Category
Tool Misuse
Content
# 方式二:使用 nvm 管理 Node.js 版本(推荐)
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 安装 Node.js
nvm install 20
nvm use 20
Confidence
97% confidence
Finding
This command pipes a remotely fetched GitHub installer directly into bash, enabling arbitrary code execution in the current user context. It is less severe than the sudo variants but still unsafe because the user executes unaudited network content immediately.

Chaining Abuse

High
Category
Tool Misuse
Content
print_info "正在安装 Node.js (Ubuntu/Debian)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    print_success "Node.js 安装完成"
Confidence
99% confidence
Finding
This command chains a network fetch into a privileged shell, which collapses multiple trust boundaries in one step and gives unreviewed remote content root execution. In a general skill setup script, that is a serious and unnecessary risk if safer installation paths exist.

Chaining Abuse

High
Category
Tool Misuse
Content
print_info "正在安装 Node.js (CentOS/RHEL/Fedora)..."
    
    # 使用 NodeSource 安装较新版本
    curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
    
    if command -v dnf &> /dev/null; then
        sudo dnf install -y nodejs
Confidence
99% confidence
Finding
This line combines curl and sudo bash in a single pipeline, enabling direct privileged execution of remote content. If any part of the supply chain is compromised, the host can be fully compromised immediately.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.