Back to skill

Security audit

Create Mcp App

Security checks across malware telemetry and agentic risk

Overview

This package is a mixed bundle of unrelated app, skill, cloud-cluster, Terraform, and release-feed content rather than a clean single-purpose skill.

Review this package carefully before installing. The MCP app guidance itself looks ordinary, but the artifact includes unrelated cloud and infrastructure instructions; do not let an agent follow the OpenShift or Terraform operational steps unless you intentionally want those changes and understand their impact.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (25)

Credential Access

High
Category
Privilege Escalation
Content
git clone https://github.com/Velclaw/Velclaw.git
cd Velclaw
npm install
cp .env.example .env   # điền API key của bạn
npm run dev
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
git clone https://github.com/Velclaw/Velclaw.git
cd Velclaw
npm install
cp .env.example .env   # điền API key của bạn
npm run dev
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Hidden Instructions

High
Category
Prompt Injection
Content
</div>
</header>

<!-- ============ HERO (merged from trang chủ developer.hashicorp.com) ============ -->
<section class="hero" id="hero">
  <div>
    <div class="hero-eyebrow"><span class="dot"></span> Terraform CLI · Tutorial trực tiếp</div>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Credential Access

High
Category
Privilege Escalation
Content
];

const TECH_BADGES = [
  "Node.js", "Anthropic API", "GitHub", "VS Code", "JetBrains Mono", ".env",
  "REST", "Claude", "Express",
];
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
];

const TECH_BADGES = [
  "Node.js", "Anthropic API", "GitHub", "VS Code", "JetBrains Mono", ".env",
  "REST", "Claude", "Express",
];
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
];

const TECH_BADGES = [
  "Node.js", "Anthropic API", "GitHub", "VS Code", "JetBrains Mono", ".env",
  "REST", "Claude", "Express",
];
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
This markdown file includes a concrete example where `req.body` is sent to `https://api.example-provider.com` using the server-held API key. The surrounding documentation emphasizes key safety, but does not warn users that their prompts or other submitted data may be transmitted to a third-party provider, which is a privacy-relevant behavior for markdown under the missing-warning rule.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```js
app.post('/api/chat', async (req, res) => {
  const r = await fetch('https://api.example-provider.com/v1/messages', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.THIRD_PARTY_API_KEY}` },
    body: JSON.stringify(req.body)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
```bash
npm install -D tsx

npm pkg set scripts.dev="cross-env NODE_ENV=development concurrently 'cross-env INPUT=mcp-app.html vite build --watch' 'tsx --watch main.ts'"
```

> [!NOTE]
Confidence
60% confidence
Finding
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
This HTML sets the document language to Vietnamese via `lang="vi"`, and the visible navigation and tutorial content are written in Vietnamese throughout the page. For a general developer tutorial page, this imposes a specific language/locale without any visible opt-in, switcher, or justification, which matches the language/locale policy violation criteria.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The documentation instructs users to disable outbound traffic protection, which materially weakens cluster egress controls and increases exposure to data exfiltration, malware download, and unauthorized external communications. Although a note mentions that all external connections are permitted, the warning is not prominent enough before the action step and the guidance normalizes a cluster-wide security downgrade for optional functionality.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The UI workflow similarly directs users to disable outbound traffic protection, creating the same reduction in network security posture through a guided console action. In a setup/install document, users are likely to follow these steps verbatim, so insufficiently emphasized warnings can lead to broad, unintended exposure of production clusters.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This TypeScript/TSX file contains user-facing navigation labels in Vietnamese, and the rest of the interface text throughout the file is likewise fixed to a single language. Under the policy criteria, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly documented and justified, which is not present here.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This code file contains user-facing natural-language strings such as navigation, FAQ, and feature descriptions entirely in Vietnamese. Under the policy rule, forcing a specific language without user opt-in or a documented regional justification is a natural-language policy violation.

Natural-Language Policy Violations

Low
Confidence
84% confidence
Finding
The Atom feed declares `xml:lang="en-US"`, which fixes the content locale to US English. In the absence of any surrounding documentation in this file offering locale choice or explaining that the feed is intentionally region-specific, this can be considered a natural-language locale policy concern.

Scope Creep

Low
Category
Excessive Agency
Content
You can choose to also install additional operators that are recommended for the use of certain OpenShift AI features. If they are not already installed on your cluster, you can choose to include them in the add-on installation. Or, you can install them at anytime by using OperatorHub or by following the operator-specific installation steps. To use these operators, you must [disable outbound traffic protection](https://cloud.ibm.com/docs/openshift?topic=openshift-sbd-allow-outbound&format=markdown) for your cluster.

You are responsible for managing these operators, including but not limited to updating, monitoring, recovery, and re-installation.
{: important}

The following operators are recommended.
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Scope Creep

Low
Category
Excessive Agency
Content
You can choose to also install additional operators that are recommended for the use of certain OpenShift AI features. If they are not already installed on your cluster, you can choose to include them in the add-on installation. Or, you can install them at anytime by using OperatorHub or by following the operator-specific installation steps. To use these operators, you must [disable outbound traffic protection](https://cloud.ibm.com/docs/openshift?topic=openshift-sbd-allow-outbound&format=markdown) for your cluster.

You are responsible for managing these operators, including but not limited to updating, monitoring, recovery, and re-installation.
{: important}

The following operators are recommended.
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Scope Creep

Low
Category
Excessive Agency
Content
You can choose to also install additional operators that are recommended for the use of certain OpenShift AI features. If they are not already installed on your cluster, you can choose to include them in the add-on installation. Or, you can install them at anytime by using OperatorHub or by following the operator-specific installation steps. To use these operators, you must [disable outbound traffic protection](https://cloud.ibm.com/docs/openshift?topic=openshift-sbd-allow-outbound&format=markdown) for your cluster.

You are responsible for managing these operators, including but not limited to updating, monitoring, recovery, and re-installation.
{: important}

The following operators are recommended.
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Scope Creep

Low
Category
Excessive Agency
Content
You can choose to also install additional operators that are recommended for the use of certain OpenShift AI features. If they are not already installed on your cluster, you can choose to include them in the add-on installation. Or, you can install them at anytime by using OperatorHub or by following the operator-specific installation steps. To use these operators, you must [disable outbound traffic protection](https://cloud.ibm.com/docs/openshift?topic=openshift-sbd-allow-outbound&format=markdown) for your cluster.

You are responsible for managing these operators, including but not limited to updating, monitoring, recovery, and re-installation.
{: important}

The following operators are recommended.
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Intent-Code Divergence

Low
Confidence
80% confidence
Finding
The inline comment makes a concrete claim about provenance and authenticity of the demo asset. In the code shown, the value is simply a hardcoded base64 GIF string, so the implementation does not substantiate that it is a real execution capture rather than a prepared or edited asset.

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
index.tsx:206