Back to skill

Security audit

LuLu Monitor

Security checks across malware telemetry and agentic risk

Overview

LuLu Monitor has a coherent firewall-helper purpose, but it installs persistent unpinned remote code and can let AI-controlled actions change firewall rules.

Review the GitHub repository and npm dependencies before installing, because the submitted skill fetches and runs code outside the reviewed artifact. Keep auto-execute disabled unless you accept automatic firewall changes, prefer temporary allow/block actions, and remove the LaunchAgent and Accessibility permission when you no longer need the monitor.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill clearly instructs use of shell commands (`bash`, `curl`, `launchctl`, `openclaw message send`, `osascript`) but does not declare permissions accordingly. This creates a trust and review gap: users or enforcement systems may underestimate the skill's ability to execute local commands that can affect firewall state, system services, and Telegram messaging.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The installer fetches and updates executable code directly from a remote GitHub repository using `git clone`/`git pull`, then immediately runs `npm install`. This creates a supply-chain risk because upstream repository compromise, branch changes, or malicious dependency updates can alter what gets installed and executed without any integrity pinning, signature verification, or version lock.

Description-Behavior Mismatch

Low
Confidence
83% confidence
Finding
The script creates a persistent `launchd` agent with `RunAtLoad` and `KeepAlive`, and relies on a local HTTP status endpoint at `127.0.0.1:4441`. While persistence may be expected for a monitoring companion, installing an always-on background service and exposing a network-reachable local endpoint increases attack surface and should be clearly disclosed and constrained.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill offers an auto-execute mode that can automatically allow firewall prompts, including creation of effectively persistent policy changes, without a strong upfront safety warning or hard guardrails. Because this governs network access control, a mistaken AI classification could silently permit unwanted outbound connections from malicious or compromised processes.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
## Auto-Execute Mode (Optional)

For reduced interruptions, enable auto-execute mode. When the AI has high confidence (known safe programs like curl, brew, node, git connecting to normal destinations), it will:
1. Automatically execute the Allow action
2. Still send a Telegram notification explaining what was auto-allowed

**To enable:**
Confidence
96% confidence
Finding
Automatically execute

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
5. Provides 4 action buttons: Always Allow, Allow Once, Always Block, Block Once
6. Executes the action on LuLu when user taps a button

## Auto-Execute Mode (Optional)

For reduced interruptions, enable auto-execute mode. When the AI has high confidence (known safe programs like curl, brew, node, git connecting to normal destinations), it will:
1. Automatically execute the Allow action
Confidence
92% confidence
Finding
Auto-Execute

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
## Auto-Execute Mode (Optional)

For reduced interruptions, enable auto-execute mode. When the AI has high confidence (known safe programs like curl, brew, node, git connecting to normal destinations), it will:
1. Automatically execute the Allow action
2. Still send a Telegram notification explaining what was auto-allowed
Confidence
95% confidence
Finding
auto-execute

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
cat > ~/.openclaw/lulu-monitor/config.json << 'EOF'
{
  "telegramId": "YOUR_TELEGRAM_ID",
  "autoExecute": true,
  "autoExecuteAction": "allow-once"
}
EOF
Confidence
97% confidence
Finding
autoExecute

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**Options:**
- `autoExecute`: `false` (default) - all alerts require manual button press
- `autoExecuteAction`: `"allow-once"` (default, conservative) or `"allow"` (permanent rule)

## Installation
Confidence
96% confidence
Finding
autoExecute

Session Persistence

Medium
Category
Rogue Agent
Content
mkdir -p "$LAUNCH_AGENTS"

# Create launchd plist
cat > "$LAUNCH_AGENTS/$PLIST_NAME" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
Confidence
94% confidence
Finding
PLIST

Session Persistence

Medium
Category
Rogue Agent
Content
echo ""
echo "🔄 Starting service..."
mkdir -p "$INSTALL_DIR/logs"
launchctl unload "$LAUNCH_AGENTS/$PLIST_NAME" 2>/dev/null || true
launchctl load "$LAUNCH_AGENTS/$PLIST_NAME"

# Verify service is running
Confidence
90% confidence
Finding
PLIST

Session Persistence

Medium
Category
Rogue Agent
Content
echo "🔄 Starting service..."
mkdir -p "$INSTALL_DIR/logs"
launchctl unload "$LAUNCH_AGENTS/$PLIST_NAME" 2>/dev/null || true
launchctl load "$LAUNCH_AGENTS/$PLIST_NAME"

# Verify service is running
sleep 2
Confidence
98% confidence
Finding
launchctl load

Session Persistence

Medium
Category
Rogue Agent
Content
echo "🔄 Starting service..."
mkdir -p "$INSTALL_DIR/logs"
launchctl unload "$LAUNCH_AGENTS/$PLIST_NAME" 2>/dev/null || true
launchctl load "$LAUNCH_AGENTS/$PLIST_NAME"

# Verify service is running
sleep 2
Confidence
98% confidence
Finding
PLIST

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.