Back to skill

Security audit

ResearchVault

Security checks across malware telemetry and agentic risk

Overview

This is a disclosed local research tool with optional web fetching and portal features; its main risks are operational configuration choices rather than hidden or malicious behavior.

Install only if you are comfortable with a local research vault that can fetch user-supplied URLs, use configured search APIs, and run a localhost portal. Keep the portal bound to localhost, protect or delete .portal_auth when needed, leave private-network fetching disabled unless you intentionally need it, and avoid using --ai or search/watchdog features with sensitive research unless you accept those data flows.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (24)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill advertises substantial capabilities including environment-variable access, filesystem reads/writes, shell execution, networking, and MCP/service interaction, but does not declare permissions accordingly. This creates a transparency and trust problem: users or calling platforms may invoke it assuming limited scope while it can access local data, make outbound requests, and launch auxiliary components.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
The description frames the skill as a local-first research engine, but the documented behavior extends to running a web portal with authentication, CORS/session handling, scraping multiple remote sources, integrating third-party search APIs, exporting data, and spawning subprocesses/services. That mismatch can cause operators to underestimate exposure and approve the skill in environments where web-facing services, network access, or process launching are not acceptable, increasing the risk of data leakage, unintended remote exposure, or unsafe execution paths.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The diagnostics endpoint returns sensitive operational metadata including process details, environment configuration values, database paths, provider configuration sources, CLI stderr, and allowed DB roots. Even though some secrets are only exposed as booleans, this materially increases recon value for an authenticated attacker and can leak internal filesystem and deployment details unnecessary for normal operation.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The developer mode UI exposes state-mutating actions such as manual event logging, watch management, dry-run watchdog execution, and especially cache/result injection directly from the frontend. If this mode is accessible to normal authenticated users, it can undermine research integrity, enable tampering with evidence or workflow state, and create confusing or unsafe side effects that go beyond ordinary UI use.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The ingestion flow includes an explicit 'Allow private networks (SSRF risk)' option and forwards allow_private_networks to the backend. In a research tool that fetches arbitrary URLs, this materially increases the chance of server-side request forgery against internal services, localhost, cloud metadata endpoints, or other non-public network targets.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
Loading the discovery view automatically triggers /vault/verify/plan when no missions exist, causing state mutation during what appears to be a read/list operation. This violates user expectations, can create unintended work or data changes, and makes merely viewing a page perform backend actions with side effects.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
The skill is described as 'local-first' but it can ingest remote content through connectors and perform live web searches. That mismatch can cause users to provide sensitive research material under the assumption it stays local, when the system may transmit queries or source URLs externally.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The watchdog performs external web searches in the background via `core.perform_brave_search(val)`, which conflicts with the skill's 'local-first' description and can transmit user-defined queries to a third-party service. That creates privacy and expectation risks, especially because watched queries may contain sensitive research topics and the behavior is not evident from this file's interface.

Context-Inappropriate Capability

Medium
Confidence
81% confidence
Finding
This code uses an external search capability as part of an automated watchdog workflow and then ingests the results into local state. In a tool presented as local-first, that undisclosed remote dependency expands the trust boundary, leaks metadata/search terms, and may introduce untrusted remote content into the system without strong justification or controls shown here.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The `summary --ai` path forwards project objective and findings to an external helper process (`openclaw agent`), expanding the trust boundary beyond the local vault. Even with `--local`, the code does not verify what that binary does, and the comment about bypassing a gateway queue suggests possible unintended routing or persistence of sensitive research data.

Missing User Warnings

High
Confidence
96% confidence
Finding
The /scuttle endpoint lets any authenticated caller trigger server-side outbound fetches to arbitrary URLs and can explicitly enable private-network access via --allow-private-networks. In a local-first research engine, this creates a strong SSRF primitive that can probe internal services, cloud metadata endpoints, or other sensitive network resources reachable from the server environment.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
Developer mode exposes dangerous low-level actions, including cache injection and direct state mutation, without strong inline warnings or friction proportional to their impact. In a research orchestration context, this can silently compromise data provenance and trustworthiness, especially if users do not understand that they are altering system state rather than performing ordinary analysis tasks.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The code issues live search requests and stores query/result data in a local cache without any visible consent, warning, or minimization controls in this file. If queries contain proprietary or personal research terms, they may be disclosed to Brave and then retained locally, increasing privacy and compliance risk.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The watchdog runs background network and ingestion actions automatically, including URL ingestion and external search, without any user-facing disclosure in this code path. Silent background collection and import increase privacy risk, can surprise users, and may continuously pull untrusted content into projects, which is particularly sensitive in a research tool that may handle confidential topics.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The strategize() function supports execute=True, which causes the recommended action to be run automatically. In the SYNTHESIZE path, execute_recommendation() calls synthesize(..., persist=True), creating persistent writes based only on heuristic state evaluation and without an explicit confirmation gate in this file. In a research orchestration skill that manages project state and background services, silent state mutation increases the chance of unintended or cascading actions.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The AI summary feature packages findings content and project metadata into a prompt and sends it to another agent process without a clear user-facing notice at runtime that sensitive content is leaving the core application flow. In research workflows, findings may include proprietary or sensitive material, so silent transmission to another component materially increases confidentiality risk.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script silently persists a long-lived authentication token to .portal_auth in the working directory and automatically reloads it on future runs. Even though the file is chmod 600, writing a reusable bearer token to disk without an explicit consent/warning increases the chance of unintended credential persistence, backup leakage, shell-user compromise impact, or accidental inclusion in workspace copies.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
if not has_open_queue:
            rationale = [
                f"Low-confidence/unverified findings detected (low_conf={state.low_confidence_count}, unverified={state.unverified_count}).",
                "No verification missions exist yet for this branch.",
            ]
            cmds = [
                f"vault verify plan --id {state.project_id} --branch {state.branch} --threshold {cfg.verify_threshold} --max {cfg.max_verification_missions}",
Confidence
73% confidence
Finding
No verification

Known Vulnerable Dependency: vite==5.0.0 — 10 advisory(ies): CVE-2025-32395 (Vite has an `server.fs.deny` bypass with an invalid `request-target`); CVE-2025-31125 (Vite has a `server.fs.deny` bypassed for `inline` and `raw` with `?import` query); CVE-2026-39365 (Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling) +7 more

High
Category
Supply Chain
Confidence
95% confidence
Finding
vite==5.0.0

Known Vulnerable Dependency: postcss==8.4.31 — 1 advisory(ies): CVE-2026-41305 (PostCSS has XSS via Unescaped </style> in its CSS Stringify Output)

Low
Category
Supply Chain
Confidence
69% confidence
Finding
postcss==8.4.31

Known Vulnerable Dependency: requests — 10 advisory(ies): CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +7 more

High
Category
Supply Chain
Confidence
91% confidence
Finding
requests

Known Vulnerable Dependency: fastapi — 3 advisory(ies): CVE-2021-32677 (Cross-Site Request Forgery (CSRF) in FastAPI); CVE-2021-32677 (FastAPI is a web framework for building APIs with Python 3.6+ based on standard ); CVE-2024-24762 (FastAPI is a web framework for building APIs with Python 3.8+ based on standard )

High
Category
Supply Chain
Confidence
84% confidence
Finding
fastapi

Known Vulnerable Dependency: uvicorn — 4 advisory(ies): CVE-2020-7694 (Log injection in uvicorn); CVE-2020-7695 (HTTP response splitting in uvicorn); CVE-2020-7694 (This affects all versions of package uvicorn. The request logger provided by the) +1 more

High
Category
Supply Chain
Confidence
86% confidence
Finding
uvicorn

Known Vulnerable Dependency: mcp — 6 advisory(ies): CVE-2025-53366 (MCP Python SDK vulnerability in the FastMCP Server causes validation error, lead); CVE-2025-66416 (Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection); CVE-2025-53365 (MCP Python SDK has Unhandled Exception in Streamable HTTP Transport, Leading to ) +3 more

High
Category
Supply Chain
Confidence
88% confidence
Finding
mcp

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal