Back to skill

Security audit

Soc Deploy Misp

Security checks across malware telemetry and agentic risk

Overview

This skill appears to deploy MISP as advertised, but it uses unsafe credential and TLS defaults that users should review before installing.

Review before installing. Run it only on a host intended for MISP, use a strong unique admin password, restrict or delete ~/misp/api-key.txt after setup, lock down .env permissions, rotate exposed secrets, configure trusted TLS certificates instead of relying on curl -k or MISP_VERIFY_SSL=false, and pin the misp-docker version for production deployments.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (14)

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill explicitly saves highly sensitive credentials, including an API key, to a predictable path on disk but does not foreground this as a security warning. On multi-user hosts or poorly permissioned home directories, those secrets may be exposed to other local users, backups, shell history workflows, or later exfiltration by unrelated compromise.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The recovery instructions include `docker compose down -v`, which deletes the database volume, but the wording does not explicitly warn that this permanently destroys any existing MISP data. In an operational deployment guide, that omission can lead an administrator to irreversibly erase threat intel, users, and configuration while attempting routine recovery.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The script persists highly sensitive material to ~/misp/api-key.txt, including the admin password, API key, and database credentials, without setting restrictive permissions or warning the operator about long-term secret storage. On multi-user systems, in backups, or via later host compromise, this file becomes a concentrated source of credential exposure.

Credential Access

High
Category
Privilege Escalation
Content
MYSQL_ROOT_PW=$(openssl rand -base64 24)
MYSQL_PW=$(openssl rand -base64 24)

sed -i "s|MISP_BASEURL=.*|MISP_BASEURL=http://${VM_IP}|" .env
sed -i "s|MISP_ADMIN_EMAIL=.*|MISP_ADMIN_EMAIL=${ADMIN_EMAIL}|" .env
sed -i "s|MISP_ADMIN_PASSPHRASE=.*|MISP_ADMIN_PASSPHRASE=${PASSWORD}|" .env
Confidence
89% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
sed -i "s|MISP_BASEURL=.*|MISP_BASEURL=http://${VM_IP}|" .env
sed -i "s|MISP_ADMIN_EMAIL=.*|MISP_ADMIN_EMAIL=${ADMIN_EMAIL}|" .env
sed -i "s|MISP_ADMIN_PASSPHRASE=.*|MISP_ADMIN_PASSPHRASE=${PASSWORD}|" .env

# Set DB passwords
grep -q "MYSQL_ROOT_PASSWORD" .env && \
Confidence
94% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
sed -i "s|MISP_ADMIN_PASSPHRASE=.*|MISP_ADMIN_PASSPHRASE=${PASSWORD}|" .env

# Set DB passwords
grep -q "MYSQL_ROOT_PASSWORD" .env && \
  sed -i "s|MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}|" .env || \
  echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}" >> .env
Confidence
92% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
# Set DB passwords
grep -q "MYSQL_ROOT_PASSWORD" .env && \
  sed -i "s|MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}|" .env || \
  echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}" >> .env

grep -q "MYSQL_PASSWORD" .env && \
Confidence
90% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
# Set DB passwords
grep -q "MYSQL_ROOT_PASSWORD" .env && \
  sed -i "s|MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}|" .env || \
  echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}" >> .env

grep -q "MYSQL_PASSWORD" .env && \
  sed -i "s|MYSQL_PASSWORD=.*|MYSQL_PASSWORD=${MYSQL_PW}|" .env || \
Confidence
88% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
sed -i "s|MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}|" .env || \
  echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW}" >> .env

grep -q "MYSQL_PASSWORD" .env && \
  sed -i "s|MYSQL_PASSWORD=.*|MYSQL_PASSWORD=${MYSQL_PW}|" .env || \
  echo "MYSQL_PASSWORD=${MYSQL_PW}" >> .env
Confidence
88% confidence
Finding
.env

Tool Parameter Abuse

High
Category
Tool Misuse
Content
MISP_API_KEY=<key>
  MISP_VERIFY_SSL=false

Note: Self-signed HTTPS. Use curl -k for API calls.
Credentials saved to: ~/misp/api-key.txt
```
Confidence
97% confidence
Finding
curl -k

Tool Parameter Abuse

Low
Category
Tool Misuse
Content
1. **MariaDB OOM (showstopper):** Default InnoDB buffer pool is 2GB. On 4GB hosts, MariaDB crashes instantly. MUST set `INNODB_BUFFER_POOL_SIZE` in `.env`
2. **Recovery from OOM:** `docker compose down -v` to wipe failed DB volume, fix `.env`, restart
3. **First boot is slow:** 5-10 min for DB schema creation and initial data load
4. **Self-signed HTTPS:** Use `curl -k` for all API calls
5. **Advanced authkeys:** Enabled by default. `cake` CLI is the most reliable key generation method
6. **MISP web UI:** `https://<ip>` (port 443, not 80)
Confidence
93% confidence
Finding
curl -k

Unsafe Defaults

Medium
Category
Tool Misuse
Content
MCP Connection:
  MISP_URL=https://<target>
  MISP_API_KEY=<key>
  MISP_VERIFY_SSL=false

Note: Self-signed HTTPS. Use curl -k for API calls.
Credentials saved to: ~/misp/api-key.txt
Confidence
96% confidence
Finding
VERIFY_SSL=false

Tool Parameter Abuse

High
Category
Tool Misuse
Content
MySQL User: misp / ${MYSQL_PW}
InnoDB Buffer Pool: ${BUFFER_POOL}

Note: Self-signed HTTPS. Use curl -k for API calls.
EOF

echo ""
Confidence
93% confidence
Finding
curl -k

Unsafe Defaults

Medium
Category
Tool Misuse
Content
MCP Connection:
  MISP_URL=https://${VM_IP}
  MISP_API_KEY=${API_KEY}
  MISP_VERIFY_SSL=false

MySQL Root: ${MYSQL_ROOT_PW}
MySQL User: misp / ${MYSQL_PW}
Confidence
95% confidence
Finding
VERIFY_SSL=false

VirusTotal

59/59 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.