Back to skill

Security audit

Mvp Kanban Complete Skill

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent local Kanban tool, but it exposes unauthenticated editing and deletion paths with unsafe deployment guidance and web security flaws that need review before installation.

Use this only as a local single-user tool on a trusted machine or behind your own authenticated reverse proxy. Do not expose port 9999 to a network until authentication, output escaping/XSS fixes, safer delete confirmations, and dependency upgrades are in place. Expect task data to remain in the Docker volume after uninstall unless you remove it manually.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
src/templates/index.html:235
Finding

Stored Cross-Site Scripting Through Unsanitized Task and Lane Fields

Content
View full analysis
{ const laneProjects = kanbanData.projects.filter(p => p.lane === lane.id); return `
${lane.icon} ${lane.name} ${laneProjects.length} 个任务
➕ 任务 0 ? 'disabled style="opacity:0.5"' : ''}> 🗑️
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
src/app.py:65
Finding

Unauthenticated Destructive API Combined With Unsafe Network and Debug Deployment

Content
View full analysis
', methods=['PUT']) def update_project_endpoint(project_id): """更新项目""" data = request.json project = update_project(project_id, data) if not project: return jsonify({'error': 'Project not found'}), 404 return jsonify(project) @app.route('/api/projects/', methods=['DELETE']) def delete_project_endpoint(project_id): """删除项目""" project = delete_project(project_id) if not project: return jsonify({'error': 'Project not found'}), 404 return jsonify(project) ``` ```python @app.route('/api/batch/create', methods=['POST']) def batch_create(): data = request.json projects = data.get('projects', []) if not projects: return jsonify({'error': '需要提供 projects 数组'}), 400 results = [] for proj in projects: result = create_project(proj) results.append(result) return jsonify({ 'success': True, 'created': len(results), 'projects': results }) @app.route('/api/batch/update', methods=['POST']) def batch_update(): data = request.json updates = data.get('updates', []) if not updates: return jsonify({'error': '需要提供 updates 数组'}), 400 results = [] for update in updates: project_id = update.get('id') if not project_id: continue changes = {k: v for k, v in update.items() if k != 'id'} result = update_project(project_id, changes ...[truncated 4152 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (101)

Known Vulnerable Dependency: sqlite-vec==0.1.1 — 2 advisory(ies): CVE-2024-46488 (Heap-based Buffer Overflow in sqlite-vec); CVE-2024-46488 (Heap-based Buffer Overflow in sqlite-vec)

Critical
Category
Supply Chain
Confidence
98% confidence
Finding

sqlite-vec 0.1.1 is identified as vulnerable to a heap-based buffer overflow, which is a serious memory safety flaw. If untrusted input can reach the vulnerable code path, this could cause crashes, denial of service, or potentially memory corruption with more severe consequences depending on exploitability and environment.

Content

No source excerpt is available for this finding.

MCP Config Access

High
Category
Agent Snooping
Confidence
90% confidence
Finding

Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Content

Scanner excerpt · README_EN.md (reported line 144)May include surrounding context.

MCP tools unavailable

bash
# Check MCP config
cat ~/.openclaw/config/mcp.json

# Restart MCP
openclaw gateway restart

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · clawhub.yaml (reported line 136)May include surrounding context.

yaml
echo ""
    echo "✅ 服务已启动!"
    curl -s http://localhost:9999/api/health | python3 -m json.tool || echo "⚠️ 服务正在启动,请稍后访问"

  pre_uninstall: |
    echo "⚠️ 停止服务..."

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · clawhub.yaml (reported line 206)May include surrounding context.

yaml
echo ""
    echo "✅ 服务已启动!"
    curl -s http://localhost:9999/api/health | python3 -m json.tool || echo "⚠️ 服务正在启动,请稍后访问"

  pre_uninstall: |
    echo "⚠️ 停止服务..."

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

The skill exposes a destructive delete capability in both REST and LLM/MCP contexts, and the documentation provides no indication of confirmation, authorization boundaries, or safeguards. In an agent-integrated system, this increases the risk of accidental or prompt-induced destructive actions, especially when tools can be invoked through natural-language workflows.

Content

Scanner excerpt · docs/API.md (reported line 117)May include surrounding context.

}

text

#### DELETE /api/projects/:id
删除项目

---

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · docs/USAGE_METHODS.md (reported line 72)May include surrounding context.

添加任务:

bash
curl -X POST http://localhost:9999/api/projects \
  -H "Content-Type: application/json" \
  -d '{
    "name": "修复登录 bug",

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The LLM command endpoint accepts natural-language or tool-style input and directly executes state-changing actions, including create, update, move, and delete, with no authentication, authorization, confirmation, or dry-run step visible in this file. In this skill context, that is especially risky because an agent-facing endpoint can translate ambiguous or malicious prompts into destructive operations, making unintended deletion or tampering easier than a conventional explicit UI flow.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The batch deletion endpoint can remove multiple projects in one request with no preview, confirmation, rate limiting, or visible authorization checks. This amplifies the blast radius of mistakes or abuse, allowing a single malformed or malicious request to cause large-scale data loss.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: gunicorn==21.2.0 — 4 advisory(ies): CVE-2024-6827 (Gunicorn HTTP Request/Response Smuggling vulnerability); CVE-2024-1135 (Request smuggling leading to endpoint restriction bypass in Gunicorn); CVE-2024-6827 (Gunicorn HTTP Request/Response Smuggling vulnerability) +1 more

High
Category
Supply Chain
Confidence
99% confidence
Finding

Gunicorn 21.2.0 is flagged with multiple request smuggling advisories. If deployed behind a proxy or load balancer, request smuggling can let an attacker bypass access controls, poison request streams, or interfere with how upstream and downstream components interpret HTTP traffic.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: mcp==1.0.0 — 10 advisory(ies): CVE-2025-53366 (MCP Python SDK vulnerability in the FastMCP Server causes validation error, lead); CVE-2025-66416 (Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection); CVE-2025-53365 (MCP Python SDK has Unhandled Exception in Streamable HTTP Transport, Leading to ) +7 more

High
Category
Supply Chain
Confidence
97% confidence
Finding

The pinned mcp 1.0.0 dependency is reported with numerous advisories, including DNS rebinding protection issues and transport error-handling weaknesses. In an agent or MCP-exposed environment, these flaws can be especially dangerous because they may affect network trust boundaries, request validation, and server robustness when handling remote client traffic.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file is entirely written in Chinese and presents the skill security report as the default user-facing documentation without any indication that another language is available. Under the policy rule for language/locale constraints, forcing a specific language without opt-in or documented regional justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This markdown file contains user-facing policy text entirely in Chinese, but does not indicate that users may choose another language or that the locale restriction is intentional and justified. Under the natural-language policy rule, forcing a specific language without user opt-in can be a language/locale policy violation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
# 添加任务 Add task
curl -X POST http://localhost:9999/api/projects \
  -H "Content-Type: application/json" \
  -d '{"name":"Task","lane":"feature"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

docker ps | grep kanban

Health check

curl http://localhost:9999/api/health

text

### Access Web UI

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file presents all user-facing content exclusively in Chinese, including headings, guidance, and safety recommendations. Under the policy rule for natural-language violations, forcing a specific language without user opt-in is a locale-policy issue when no alternative language option or justification is provided.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The compliance table says GDPR is only partially met because there is 'no deletion interface' at L244. However, the same document earlier states '数据删除 ✅ 支持' with support for deleting tasks/lanes at L42, creating a direct contradiction in the file's stated capabilities.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
83% confidence
Finding

The document recommends FLASK_ENV=development, which enables a development-oriented configuration that is unsafe if copied into non-development or exposed environments. In Flask ecosystems, development mode can weaken security assumptions, increase debug exposure risk, and encourage unsafe defaults if operators reuse the snippet without understanding the boundary between dev and prod.

Content

Scanner excerpt · SECURITY_AUDIT.md (reported line 261)May include surrounding context.

ports: - "127.0.0.1:9999:5000" # 仅本地 environment: - FLASK_ENV=development

text

### 生产环境

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill promotes AI analysis and vector search over task data but does not disclose what data is processed, whether it leaves the local environment, or any privacy implications. Project/task data often contains internal roadmap, personnel, or security information, so undocumented AI processing increases confidentiality risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The feature list explicitly states 中文命令解析, and the natural-language examples are all Chinese, with no indication that other languages are supported or that the user can opt into this locale limitation. A skill that forces a specific language without user choice can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The documentation instructs users to pull and run a mutable Docker image tagged only as latest from a placeholder registry path. Mutable tags are a supply-chain risk because the referenced image can change over time, making builds non-reproducible and allowing a compromised or swapped image to be delivered without any change to the skill itself.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.