Back to skill

Security audit

Remote Install

Security checks across malware telemetry and agentic risk

Overview

This skill appears to automate Windows software installs, but it can run discovered installers and logs remote-access credentials, so it needs careful review before use.

Install only if you are comfortable with a skill that can run software installers and click through install dialogs. Use exact trusted installer paths, avoid bulk install requests, remove or redact password logging, avoid shell-based execution, and require explicit confirmation for each package before use.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (13)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
logging.info("静默安装失败,尝试 GUI 自动化...")
        try:
            subprocess.Popen(f'"{installer_path}"')
            time.sleep(3)
            self.handle_installation_gui()
            return {"success": True, "message": "EXE 包通过 GUI 自动化安装"}
Confidence
91% confidence
Finding
subprocess.Popen(f'"{installer_path}"')

subprocess module call

Medium
Category
Dangerous Code Execution
Content
try:
            logging.info(f"执行命令:{cmd}")
            result = subprocess.run(cmd, shell=True, timeout=timeout, capture_output=True, text=True)
            
            if result.returncode == 0:
                logging.info(f"{pkg_type}包安装成功")
Confidence
99% confidence
Finding
result = subprocess.run(cmd, shell=True, timeout=timeout, capture_output=True, text=True)

Intent-Code Divergence

High
Confidence
94% confidence
Finding
The comment claims the script searches on the remote computer, but find_installers() scans local paths using local environment variables and os.walk. In a remote-control automation tool, this mismatch is dangerous because an operator may believe they are installing software remotely while actually executing a locally found package, potentially including a malicious file planted in Downloads/Desktop.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The trigger examples are broad enough to invoke software installation from vague user requests, including installing everything found on the desktop or in downloads. In a remote-install skill that performs system-changing actions, this increases the chance of unintended execution of untrusted installers or excessive actions beyond what the user specifically reviewed.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The workflow explicitly scans common folders for installer files and can automatically install all detected packages, but it does not prominently warn that this is a broad, system-modifying action with security risk. Because desktop and downloads commonly contain untrusted or stale executables, this design can lead to accidental installation of malicious software or unintended persistence-impacting changes on the host.

Missing User Warnings

High
Confidence
99% confidence
Finding
The code logs the remote_id and password in plaintext, exposing credentials to anyone with access to console output or installer.log. In a remote-access workflow, credential disclosure can directly enable unauthorized remote sessions and lateral movement.

Missing User Warnings

High
Confidence
98% confidence
Finding
This code executes arbitrary installers, tries multiple silent-install switches, and falls back to GUI automation that clicks through prompts without meaningful validation or user confirmation. In the context of scanning common user folders for installers, this creates a strong accidental-malware-execution and unwanted-software-installation risk.

Unvalidated Output Injection

High
Category
Output Handling
Content
try:
            logging.info(f"执行命令:{cmd}")
            result = subprocess.run(cmd, shell=True, timeout=timeout, capture_output=True, text=True)
            
            if result.returncode == 0:
                logging.info(f"{pkg_type}包安装成功")
Confidence
99% confidence
Finding
subprocess.run(cmd, shell=True, timeout=timeout, capture_output

Unpinned Dependencies

Low
Category
Supply Chain
Content
pyautogui>=0.9.53
pygetwindow>=0.0.9
pywinauto>=0.6.8
Pillow>=9.0.0
Confidence
93% confidence
Finding
pyautogui>=0.9.53

Unpinned Dependencies

Low
Category
Supply Chain
Content
pyautogui>=0.9.53
pygetwindow>=0.0.9
pywinauto>=0.6.8
Pillow>=9.0.0
Confidence
93% confidence
Finding
pygetwindow>=0.0.9

Unpinned Dependencies

Low
Category
Supply Chain
Content
pyautogui>=0.9.53
pygetwindow>=0.0.9
pywinauto>=0.6.8
Pillow>=9.0.0
Confidence
93% confidence
Finding
pywinauto>=0.6.8

Unpinned Dependencies

Low
Category
Supply Chain
Content
pyautogui>=0.9.53
pygetwindow>=0.0.9
pywinauto>=0.6.8
Pillow>=9.0.0
Confidence
96% confidence
Finding
Pillow>=9.0.0

Tool Parameter Abuse

High
Category
Tool Misuse
Content
try:
            logging.info(f"执行命令:{cmd}")
            result = subprocess.run(cmd, shell=True, timeout=timeout, capture_output=True, text=True)
            
            if result.returncode == 0:
                logging.info(f"{pkg_type}包安装成功")
Confidence
99% confidence
Finding
subprocess.run(cmd, shell=True

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.