Back to skill

Security audit

AGI数字伙伴

Security checks across malware telemetry and agentic risk

Overview

This skill is a broadly triggered AGI companion that also exposes powerful local filesystem, process, environment, and shell-command capabilities without tight scoping or approval gates.

Install only if you intentionally want this skill to act as a local system tool. Treat it as capable of reading, changing, or deleting files, exposing environment secrets, killing processes, and running shell commands. Use it in a disposable or sandboxed workspace unless you can add strict path limits, command allowlists, and explicit approval for destructive actions.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (18)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
shell = "cmd" if os.name == "nt" else "sh"
    flag = "/C" if os.name == "nt" else "-c"
    try:
        cp = subprocess.run(
            [shell, flag, cmd],
            capture_output=True, timeout=timeout,
        )
Confidence
98% confidence
Finding
cp = subprocess.run( [shell, flag, cmd], capture_output=True, timeout=timeout, )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
kw=pkwargs,
    )
    try:
        proc = subprocess.run(
            [sys.executable, "-c", script],
            capture_output=True,
            timeout=15,
Confidence
88% confidence
Finding
proc = subprocess.run( [sys.executable, "-c", script], capture_output=True, timeout=15, )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
# —— 子进程调用:spawn 失败/超时视为能力层崩溃,转保命层 ——
        try:
            proc = subprocess.run(cmd, capture_output=True, timeout=120)
        except (subprocess.TimeoutExpired, OSError) as e:
            logger.warning("[toolnode] capability layer crashed (%s: %s), falling back to BusyBox (trace=%s)",
                           type(e).__name__, e, trace_id)
Confidence
86% confidence
Finding
proc = subprocess.run(cmd, capture_output=True, timeout=120)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
timeout = params.get("timeout", 60)
        cwd = params.get("cwd")
        try:
            proc = subprocess.run(cmd, shell=True, capture_output=True,
                                   timeout=timeout, cwd=cwd)
            stdout = _decode(proc.stdout)
            stderr = _decode(proc.stderr)
Confidence
99% confidence
Finding
proc = subprocess.run(cmd, shell=True, capture_output=True, timeout=timeout, cwd=cwd)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
sig = params.get("signal", 15)
        try:
            if sys.platform.startswith("win"):
                subprocess.run(["taskkill", "/PID", str(pid), "/F"], capture_output=True, timeout=10)
            else:
                os.kill(pid, sig)
            return {"pid": pid, "killed": True}
Confidence
87% confidence
Finding
subprocess.run(["taskkill", "/PID", str(pid), "/F"], capture_output=True, timeout=10)

Lp3

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding
The skill exposes shell execution, file read/write, and environment access while declaring no permissions, which breaks least-privilege expectations and hides its true attack surface from reviewers and users. In a skill that can be triggered by 'any user question,' these capabilities materially increase the risk of unauthorized command execution, data exfiltration, or filesystem tampering if the implementation follows this specification.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The documented purpose presents the skill as a general conversational/AGI companion, but the behavior includes broad operational powers: filesystem manipulation, process inspection/termination, system information collection, and command execution. That mismatch is dangerous because it can socially legitimize a highly privileged agent under an innocuous description, especially when the skill states that any user query can trigger it, expanding the chance of unintended or abusive invocation.

External Transmission

Medium
Category
Data Exfiltration
Content
async def register_server(self, server_url: str):
        """注册 MCP Server"""
        # 连接服务器
        response = await requests.post(
            f"{server_url}/tools/list",
            json={}
        )
Confidence
86% confidence
Finding
requests.post( f"{server_url}/tools/list", json=

External Transmission

Medium
Category
Data Exfiltration
Content
server_url = self.servers[tool_name]
        
        response = await requests.post(
            f"{server_url}/tools/call",
            json={
                "name": tool_name,
Confidence
88% confidence
Finding
requests.post( f"{server_url}/tools/call", json=

Env Variable Harvesting

High
Category
Data Exfiltration
Content
if op == "env":
        key = params.get("key")
        if key:
            return {"key": key, "value": os.environ.get(key)}
        return {"count": len(os.environ), "sample_keys": list(os.environ.keys())[:20]}
    if op == "all":
        return {
Confidence
98% confidence
Finding
os.environ.get(key

Unvalidated Output Injection

High
Category
Output Handling
Content
shell = "cmd" if os.name == "nt" else "sh"
    flag = "/C" if os.name == "nt" else "-c"
    try:
        cp = subprocess.run(
            [shell, flag, cmd],
            capture_output=True, timeout=timeout,
        )
Confidence
97% confidence
Finding
subprocess.run( [shell, flag, cmd], capture_output

Unvalidated Output Injection

High
Category
Output Handling
Content
kw=pkwargs,
    )
    try:
        proc = subprocess.run(
            [sys.executable, "-c", script],
            capture_output=True,
            timeout=15,
Confidence
81% confidence
Finding
subprocess.run( [sys.executable, "-c", script], capture_output

Unvalidated Output Injection

High
Category
Output Handling
Content
# —— 子进程调用:spawn 失败/超时视为能力层崩溃,转保命层 ——
        try:
            proc = subprocess.run(cmd, capture_output=True, timeout=120)
        except (subprocess.TimeoutExpired, OSError) as e:
            logger.warning("[toolnode] capability layer crashed (%s: %s), falling back to BusyBox (trace=%s)",
                           type(e).__name__, e, trace_id)
Confidence
82% confidence
Finding
subprocess.run(cmd, capture_output

Unvalidated Output Injection

High
Category
Output Handling
Content
timeout = params.get("timeout", 60)
        cwd = params.get("cwd")
        try:
            proc = subprocess.run(cmd, shell=True, capture_output=True,
                                   timeout=timeout, cwd=cwd)
            stdout = _decode(proc.stdout)
            stderr = _decode(proc.stderr)
Confidence
97% confidence
Finding
subprocess.run(cmd, shell=True, capture_output

Tool Parameter Abuse

High
Category
Tool Misuse
Content
k0�
lH�
mP�
nX�
o`�
ph�
qp�
Confidence
95% confidence
Finding
rm -rf ~shutdownhostname0iMemTotal��@$@Y@�rm -rf /

Tool Parameter Abuse

High
Category
Tool Misuse
Content
k0�
lH�
mP�
nX�
o`�
ph�
qp�
Confidence
95% confidence
Finding
rm -rf /

Tool Parameter Abuse

High
Category
Tool Misuse
Content
��
��
��
� �
�(�
�0�
�8�
Confidence
92% confidence
Finding
rmdd if=/dev/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
timeout = params.get("timeout", 60)
        cwd = params.get("cwd")
        try:
            proc = subprocess.run(cmd, shell=True, capture_output=True,
                                   timeout=timeout, cwd=cwd)
            stdout = _decode(proc.stdout)
            stderr = _decode(proc.stderr)
Confidence
99% confidence
Finding
subprocess.run(cmd, shell=True

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/c_ext_loader.py:137

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/perception_node.py:244