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.
A normal chart or report request could download and execute third-party package installation code in the user's Python environment.
Chart generation automatically invokes pip to install matplotlib when it is missing, without a pinned version or install-spec declaration.
except ImportError:
print("matplotlib not found. Installing...")
os.system(f"{sys.executable} -m pip install matplotlib --quiet")Remove runtime pip installation. Declare and pin matplotlib in the install requirements, or require explicit user approval before installing dependencies.
Users must store a smart-home hub token locally; if the local network connection is spoofed or intercepted, the token could be exposed.
The skill reads a local Dirigera bearer token and sends it to the local hub, while disabling TLS certificate verification.
TOKEN_FILE = os.path.expanduser("~/.openclaw/workspace/.dirigera_token") ... "Authorization": f"Bearer {token}" ... ssl_context.verify_mode = ssl.CERT_NONEDocument the token requirement in metadata, protect the token file, use the least-privileged token available, and prefer certificate validation or certificate pinning where possible.
If invoked unintentionally, the skill can send air-quality readings and chart locations/files through the user's configured messaging accounts.
Report delivery invokes local Gmail and WhatsApp CLI tools to send outbound messages to configured contacts.
cmd = ["gog", "gmail", "send", "--to", EMAIL, ...] cmd = ["wacli", "send", "text", "--to", whatsapp_to, "--message", message]
Run report-sending commands only when intended, document the required gog/wacli account setup, and consider adding a confirmation step before sending.
The skill will continue collecting hourly air-quality data and writing logs until the cron entry is removed.
The skill instructs the user to create a persistent scheduled job for ongoing collection.
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
Only add the cron entry if continuous monitoring is desired, verify the path and schedule, and keep clear uninstall/removal instructions.
Accumulated home sensor history may reveal environmental or occupancy patterns and may be included in generated reports.
The skill persists historical home air-quality readings in a local SQLite database for later queries and reports.
DB_PATH = os.path.expanduser("~/.openclaw/workspace/skills/living-room-air-monitor/data/air_quality.db")Review database file permissions, retention expectations, backups, and whether old readings should be deleted periodically.
