Back to skill

Security audit

Daily-Observatory Lite

Security checks for vulnerabilities and agentic risk

Overview

This skill matches its stated purpose, but users should understand that scheduled reports can include mood/task status and be sent through Telegram.

Before installing, review the files it reads under ~/.openclaw/workspace-frontdesk and only set telegram_chat_id or cron jobs if you are comfortable sending those daily summaries to Telegram automatically. Consider removing the unused pip install instruction or pinning any dependency if you maintain this skill.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Note
Location
README.md:65
Finding

Unnecessary Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: README.md:65-68
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Low

Vulnerable Code Snippet:

markdown
### Dependencies
```bash
pip install python-telegram-bot
text

### Technical Analysis

The installation documentation instructs users to install `python-telegram-bot` without pinning a specific version or verifying package integrity. This allows the package manager to resolve whichever release and transitive dependencies are current at installation time, meaning the installed code may differ from the code considered during review.

The dependency is also unnecessary for the current implementation. `pusher.py:12-24` sends messages by invoking the `openclaw` command-line interface and does not import or use `python-telegram-bot`. Installing an unused package expands the project’s supply-chain attack surface without supporting its declared functionality.

This finding does not establish that the named package is malicious. The risk arises from unnecessary, mutable, and unverified third-party code installation.

### Attack Path

1. A user follows the installation instructions in `README.md`.
2. The user runs `pip install python-telegram-bot`.
3. `pip` retrieves the currently resolved package release and its transitive dependencies from the configured package index.
4. If a resolved release, dependency, package index, or distribution artifact has been compromised, attacker-controlled package code may execute during installation or later package use.
5. That code executes with the same operating-system privileges and environmental access as the user running `pip`.

### Impact Assessment

Successful exploitation could execute code under the installing user’s account. The resulting access could include files, credentials, environment variables, and OpenClaw configuration available to that user. If installation is performed in 
...[truncated 251 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the python-telegram-bot installation instruction because the current implementation does not use that package.
  2. Keep the dependency set limited to components required at runtime.
  3. If the package becomes necessary, declare an audited, exact version in a dependency lock file rather than using an unconstrained installation command.
  4. Verify distribution integrity with cryptographic hashes, such as a hash-locked requirements file installed using pip install --require-hashes.
  5. Pin and review transitive dependencies, and use automated dependency vulnerability monitoring.
  6. Recommend installation inside an isolated virtual environment under a non-privileged account.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (27)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The reported implementation appears to perform task scanning of workspace files rather than the advertised health and mood monitoring. Accessing specific workspace files under a misleading description can expose sensitive project information and undermines informed consent for installation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The reported implementation appears to perform task scanning of workspace files rather than the advertised health and mood monitoring. Accessing specific workspace files under a misleading description can expose sensitive project information and undermines informed consent for installation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The reported implementation appears to perform task scanning of workspace files rather than the advertised health and mood monitoring. Accessing specific workspace files under a misleading description can expose sensitive project information and undermines informed consent for installation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The reported implementation appears to perform task scanning of workspace files rather than the advertised health and mood monitoring. Accessing specific workspace files under a misleading description can expose sensitive project information and undermines informed consent for installation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README explicitly instructs users to enable Telegram pushes but does not warn that operational or health data will be sent to a third-party messaging service. This creates a real privacy and data-exfiltration risk because users may enable outbound delivery without understanding what information leaves the local environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documentation tells users to install unattended cron jobs that run twice daily and deliver messages automatically, but it does not clearly warn that the skill will execute and transmit data without interactive review. Unattended scheduled automation increases the chance of repeated unintended disclosure, spam, or operational side effects if configuration is wrong or the skill behavior changes.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 17)May include surrounding context.

3. 啟用自動推播

bash
crontab -e
# 加入:
# 0 8 * * * openclaw agent --agent daily-observatory-lite --message "run" --deliver
# 0 23 * * * openclaw agent --agent daily-observatory-lite --message "run" --deliver

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill advertises behavior that would require file access, shell execution, and likely outbound delivery, but it declares no explicit tool scope or permissions. In an agent ecosystem, missing permission boundaries makes the effective trust surface unclear and can allow broader-than-expected host access if the runtime grants defaults.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README promotes automatic Telegram pushes of health and mood data without warning that potentially sensitive operational or personal-status information will be sent to a third-party service. Even if intended as a feature, silent external transmission increases privacy and compliance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The installation instructions encourage cron-based automation and message delivery without clearly warning that the skill will run unattended and may send notifications automatically. Users may unknowingly enable recurring execution and data transmission, which is a meaningful operational and privacy risk.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
85% confidence
Finding

The documented use of crontab establishes persistent scheduled execution across sessions. Persistence is not inherently malicious here, but when combined with automatic delivery and unclear permissions it increases risk by allowing the skill to continue running and sending data without active user awareness.

Content

Scanner excerpt · SKILL.md (reported line 42)May include surrounding context.

bash
# 修正 crontab(如果沒有自動設定)
crontab -e
# 加入:
# 0 8 * * * openclaw agent --agent daily-observatory-lite --message "run" --deliver
# 0 23 * * * openclaw agent --agent daily-observatory-lite --message "run" --deliver

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script sends a daily report to Telegram, and that report includes emotion-tracking fields such as today_score and trend. Transmitting potentially sensitive behavioral or mental-state data to a third-party messaging service without explicit consent, notice, or granular opt-in creates a privacy risk and can expose personal telemetry if the chat is misconfigured, shared, or intercepted via account compromise.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The natural-language docstrings and user-facing status messages are exclusively in Chinese, which can impose a language choice on users without offering an alternative or opt-in. Under the policy, locale or language constraints should be optional or explicitly justified.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill includes an outbound messaging capability by calling the OpenClaw agent to deliver messages, which creates an exfiltration and unsolicited-communication channel. For a health-check and mood-tracking skill, this is only safe if explicitly disclosed, tightly scoped, and user-approved; otherwise the capability broadens what the skill can do beyond passive local processing.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · pusher.py (reported line 19)May include surrounding context.

python
"--deliver"
        ]
        
        result = subprocess.run(
            cmd,
            capture_output=True,
            text=True,

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The module name, docstrings, status strings, and user-facing output are written exclusively in Traditional Chinese, with no indication that users can choose another language or locale. This is a natural-language policy concern because the skill imposes a fixed language on all users without opt-in or documented locale justification.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · system_health.py (reported line 12)May include surrounding context.

python
def check_gateway():
    """檢查 Gateway 狀態"""
    try:
        result = subprocess.run(
            ["openclaw", "gateway", "status"],
            capture_output=True,
            text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · system_health.py (reported line 50)May include surrounding context.

python
def check_skills():
    """檢查技能狀態"""
    try:
        result = subprocess.run(
            ["openclaw", "agents", "list"],
            capture_output=True,
            text=True,

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a broader skill that includes mood tracking and proactive alerts for OpenClaw agents. This file's implemented behavior is limited to checking gateway status, memory file presence, and agent listing, with no logic related to mood data collection or alert generation, creating a clear mismatch between claimed capability and actual code behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring is written entirely in Traditional Chinese and presents the skill's purpose and behavior only in that language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless a locale restriction is documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill manifest claims a broader observability function centered on automated health checks, mood tracking, and alerts for OpenClaw agents. In this file, the implemented behavior is limited to reading specific workspace files and counting regex matches for P0/P1 todo-like lines, which does not correspond to health checking or mood tracking as described.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The README is entirely written in Chinese and presents the skill experience in that language without indicating any option for other languages or a region-specific justification. This may violate the stated language/locale policy when no user opt-in or documented constraint is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module title and description are written entirely in Traditional Chinese, and the user-facing messages returned by the program are also fixed in Chinese. This creates a language/locale constraint without any visible opt-in or alternative language handling, which matches the policy concern for forced language selection.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

Docstrings, status text, and user-facing output are consistently in Chinese, and the file provides no opt-in or alternative language selection. This may violate language/locale policy when a skill forces a specific language without giving the user a choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The code can send messages externally without any user-facing notice, confirmation, or visible consent flow at the point of use. Even if intended for alerts, silent outbound delivery can surprise users, leak sensitive status information, or be abused by other components that call this function.

Content

No source excerpt is available for this finding.