Back to skill

Security audit

Log Analyzer Dashboard

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local log-analysis web app with expected local file-reading behavior and no evidence of exfiltration, persistence, or destructive actions.

Install only if you are comfortable with a local Streamlit app reading the log directory you choose. Avoid pointing it at directories containing unrelated secrets or sensitive logs, and prefer installing in an isolated environment with reviewed or pinned dependency versions.

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

Warning
Location
SKILL.md:6
Finding

Unpinned Third-Party Python Dependencies

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 6-29
Vulnerability Type: Supply-chain exposure through mutable dependency resolution
Risk Level: Medium

Vulnerable Code

yaml
metadata:
  {
    "openclaw":
      {
        "requires": { "bins": ["streamlit"], "runtime": "python3" },
        "install":
          [
            {
              "id": "python",
              "kind": "pip",
              "package": "streamlit",
              "label": "Install Streamlit (pip)",
            },
            {
              "id": "pandas",
              "kind": "pip",
              "package": "pandas",
              "label": "Install Pandas (pip)",
            },
            {
              "id": "plotly",
              "kind": "pip",
              "package": "plotly",
              "label": "Install Plotly (pip)",
            },
          ],
        "emoji": "📊",
      },
  }

Technical Analysis

The installation metadata requests streamlit, pandas, and plotly from pip without exact versions, package hashes, a constraints file, or a lockfile. Consequently, separate installations can resolve different package versions and transitive dependency graphs.

These are legitimate package names, and the reviewed project contains no evidence that they are currently malicious. Nevertheless, mutable dependency resolution creates a supply-chain weakness: if an upstream release, maintainer account, package index, or transitive dependency is compromised, installation may retrieve and execute code that was not part of the audited artifact. The empty Node.js dependency declarations in package.json do not provide integrity controls for these Python dependencies.

Attack Path

  1. An attacker compromises an upstream package, package-maintainer account, distribution channel, or transitive dependency.
  2. The attacker publishes a malicious release under one of the d ...[truncated 1154 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin every direct dependency to an exact, reviewed version, such as streamlit==X.Y.Z, pandas==X.Y.Z, and plotly==X.Y.Z.
  2. Generate a reproducible lock or requirements file that also constrains all transitive dependencies.
  3. Record cryptographic hashes and install with a command equivalent to:
    bash
    python3 -m pip install --require-hashes -r requirements.txt
    
  4. Configure installation to use an approved HTTPS package index or an internally controlled package mirror.
  5. Run dependency vulnerability and provenance checks in CI before approving lockfile updates.
  6. Review dependency updates explicitly rather than automatically accepting the newest available releases.
  7. Install and run the application in an isolated virtual environment or container under a non-privileged account with access limited to the required log files.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

The core behavior generally matches the declared description: it is local-only, analyzes local log files, computes statistics, checks duplicates, detects errors, and identifies simple anomalies. It does not perform network access or request undeclared permissions. However, there is a notable description-to-behavior mismatch inside the supplied skill itself: the code advertises capabilities such as '索引性能优化' (index performance optimization), '查询性能', 'indexing_efficiency', 'storage_optimization', and 'trend_analysis', but the implemented logic only reuses basic log stats and error detection without real index/query/storage performance analysis or trend modeling. So while the top-level declared purpose mostly aligns, the supplied code chunk materially overstates some functional capabilities it claims to provide, making this a moderate mismatch overall.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill advertises local log analysis and inherently needs filesystem access, but it does not declare any explicit tool scope or permissions boundary. That omission can cause the agent platform to invoke the skill without clear limits on what files it may read, increasing the risk of overbroad access to sensitive local logs or unrelated files.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The activation examples are broad enough to match ordinary user requests such as 'analyze this log file,' which can cause the skill to auto-trigger in situations the user did not explicitly intend. In a skill with file-reading capability, overbroad routing increases the chance of unintended access to local files or processing of sensitive logs without sufficiently specific consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code file contains natural-language UI text and labels that are overwhelmingly Chinese throughout the interface, despite only a brief bilingual header comment. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation when no language or locale selection is provided.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest and in-code feature description present this skill as supporting index efficiency, query performance, and storage optimization. However, when the '索引性能优化' function is executed, the code only calls analyze_log_stats and detect_errors, with no logic for index analysis, query benchmarking, or storage optimization anywhere in the file.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The inline interface documentation says this mode provides '错误检测、异常分析、性能评估' and lists anomaly recognition and performance evaluation. But the corresponding branch only runs log statistics and error detection, and never invokes detect_anomalies or any performance-specific logic.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The package description is written only in Chinese and does not offer a language choice or explain a region-specific constraint. This can violate language/locale policy when the skill metadata effectively assumes a specific language for all users without opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrases are generic enough that the skill could activate for broad log-related requests without strong scoping or user confirmation. That increases the chance of unintended invocation and inappropriate handling of user data or workflow redirection, even though this package.json does not itself show direct exfiltration or code execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest description and all user-facing instructions are presented only in Chinese, with no indication that another language can be selected. This can violate language or locale policy where skills should not force a specific language without user opt-in or a documented regional justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

This shell script presents its description and status messages entirely in Chinese, which imposes a specific language on users. The file does not offer an opt-in language choice or explain that the skill is intended only for a Chinese-speaking or region-specific context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.