Living Room Air Monitor

PassAudited by VirusTotal on May 11, 2026.

Overview

Type: OpenClaw Skill Name: living-room-air-monitor Version: 1.0.0 The skill is classified as suspicious due to several critical vulnerabilities, primarily a direct SQL injection risk in `scripts/query_data.py` where the `metric` parameter is unsafely interpolated into an f-string for database queries. Additionally, `scripts/generate_chart.py` uses `os.system` for dependency installation, posing a potential Remote Code Execution (RCE) risk, and `scripts/send_report.py` uses `subprocess.run` with potentially unsanitized arguments for external CLI tools (`gog`, `wacli`), which could lead to command injection. The `collect_air_data.py` script also disables SSL certificate verification, creating a Man-in-the-Middle (MITM) vulnerability. While these are significant flaws, there is no clear evidence of intentional malicious behavior like unauthorized data exfiltration or backdoor installation; the code's functionality aligns with its stated purpose.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A normal chart or report request could download and execute third-party package installation code in the user's Python environment.

Why it was flagged

Chart generation automatically invokes pip to install matplotlib when it is missing, without a pinned version or install-spec declaration.

Skill content
except ImportError:
    print("matplotlib not found. Installing...")
    os.system(f"{sys.executable} -m pip install matplotlib --quiet")
Recommendation

Remove runtime pip installation. Declare and pin matplotlib in the install requirements, or require explicit user approval before installing dependencies.

What this means

Users must store a smart-home hub token locally; if the local network connection is spoofed or intercepted, the token could be exposed.

Why it was flagged

The skill reads a local Dirigera bearer token and sends it to the local hub, while disabling TLS certificate verification.

Skill content
TOKEN_FILE = os.path.expanduser("~/.openclaw/workspace/.dirigera_token") ... "Authorization": f"Bearer {token}" ... ssl_context.verify_mode = ssl.CERT_NONE
Recommendation

Document the token requirement in metadata, protect the token file, use the least-privileged token available, and prefer certificate validation or certificate pinning where possible.

What this means

If invoked unintentionally, the skill can send air-quality readings and chart locations/files through the user's configured messaging accounts.

Why it was flagged

Report delivery invokes local Gmail and WhatsApp CLI tools to send outbound messages to configured contacts.

Skill content
cmd = ["gog", "gmail", "send", "--to", EMAIL, ...]
cmd = ["wacli", "send", "text", "--to", whatsapp_to, "--message", message]
Recommendation

Run report-sending commands only when intended, document the required gog/wacli account setup, and consider adding a confirmation step before sending.

What this means

The skill will continue collecting hourly air-quality data and writing logs until the cron entry is removed.

Why it was flagged

The skill instructs the user to create a persistent scheduled job for ongoing collection.

Skill content
Add to crontab for automatic data collection every hour:
0 * * * * /opt/homebrew/bin/python3 .../collect_air_data.py >> /tmp/air_quality_cron.log 2>&1
Recommendation

Only add the cron entry if continuous monitoring is desired, verify the path and schedule, and keep clear uninstall/removal instructions.

What this means

Accumulated home sensor history may reveal environmental or occupancy patterns and may be included in generated reports.

Why it was flagged

The skill persists historical home air-quality readings in a local SQLite database for later queries and reports.

Skill content
DB_PATH = os.path.expanduser("~/.openclaw/workspace/skills/living-room-air-monitor/data/air_quality.db")
Recommendation

Review database file permissions, retention expectations, backups, and whether old readings should be deleted periodically.