Back to skill

Security audit

shimo-export

Security checks for vulnerabilities and agentic risk

Overview

This Shimo export skill is purpose-aligned, but it handles live document-session credentials and broad document export with unsafe and under-scoped controls that warrant review before installation.

Install only if you are comfortable granting an agent access to your Shimo account, file metadata, team spaces, and exported document contents. Prefer setting a short-lived credential manually, avoid broad all-files exports unless you explicitly need them, keep the credential file out of source control, and treat the browser proxy login flow as risky until it is replaced or hardened.

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 (4)

T09 · Insecure Skill Coding Practices

Error
Location
auth/scripts/browser-login.cjs:69
Finding

Authentication Proxy Weakens Transport, Cookie, and Browser Security Controls

Content
View full analysis
c.replace(/;\s*Domain=[^;]*/gi, '; Domain=localhost') .replace(/;\s*Secure/gi, '') .replace(/;\s*SameSite=None/gi, '; SameSite=Lax') ); } ``` ```js const server = http.createServer((clientReq, clientRes) => { // ... const proxyOptions = { hostname: TARGET_HOST, port: 443, path: clientReq.url, method: clientReq.method, headers: { ...clientReq.headers, host: TARGET_HOST, referer: (clientReq.headers.referer || '').replace( `http://localhost:${PORT}`, `https://${TARGET_HOST}` ), origin: clientReq.headers.origin ? `https://${TARGET_HOST}` : undefined, }, }; ``` ```js if (rawSetCookie) { responseHeaders['set-cookie'] = rewriteSetCookies(rawSetCookie); } delete responseHeaders['content-security-policy']; delete responseHeaders['content-security-policy-report-only']; delete responseHeaders['strict-transport-security']; delete responseHeaders['x-frame-options']; ``` ```js server.listen(PORT, () => { const loginUrl = `http://localhost:${PORT}/login?from=home`; // Auto-op ...[truncated 2144 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
file-management/scripts/list-spaces.cjs:55
Finding

API-Controlled Pagination URLs Can Receive the Shimo Session Cookie

Content
View full analysis
``` Consequently, a malicious or compromised API response can direct the next authenticated request to an arbitrary origin. This violates the Skill documentation's claim that credentials are sent only to `shimo.im`. ### Attack ...[truncated 1102 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
export/scripts/export-helper.cjs:88
Finding

Unvalidated Export Download URLs Permit Server-Side Request Forgery and Unbounded Downloads

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
auth/scripts/browser-login.cjs:35
Finding

Credential File Is Stored Inside the Project Despite an Absent Git Ignore Rule

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (29)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **出错时自动处理**:如凭证失效,Agent 应直接运行 `browser-login.cjs` 启动登录流程,告知用户"正在打开浏览器,请完成登录",而不是让用户手动运行命令。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **出错时自动处理**:如凭证失效,Agent 应直接运行 `browser-login.cjs` 启动登录流程,告知用户"正在打开浏览器,请完成登录",而不是让用户手动运行命令。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **出错时自动处理**:如凭证失效,Agent 应直接运行 `browser-login.cjs` 启动登录流程,告知用户"正在打开浏览器,请完成登录",而不是让用户手动运行命令。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **多步操作合并执行**:搜索+导出等复合任务,优先使用 `batch-export.cjs` 一条命令完成。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `list-files.cjs` | `SHIMO_COOKIE=$C node <skill-path>/file-management/scripts/list-files.cjs [folder-guid]` | 列出文件/文件夹 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `list-spaces.cjs` | `SHIMO_COOKIE=$C node <skill-path>/file-management/scripts/list-spaces.cjs` | 获取团队空间 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `export-helper.cjs` | `SHIMO_COOKIE=$C node <skill-path>/export/scripts/export-helper.cjs <fileGuid> <format> [outputDir] [--name "名称"]` | 导出单个文件 |

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger condition explicitly says to invoke this skill even when the user does not mention Shimo, as long as the request vaguely involves exporting or browsing documents. That can cause the agent to over-route ordinary document requests into a high-privilege skill that uses session cookies and performs bulk file discovery/export, increasing the chance of unintended access to sensitive workspace content.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The file prescribes exact user-facing output strings entirely in Chinese, including login, search, export, and result summaries, without indicating that the language should follow the user's preference. This is a natural-language policy issue because it imposes a specific language on all users rather than allowing locale choice or documenting a justified regional restriction.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · auth/SKILL.md (reported line 63)May include surrounding context.

text
   请将 cookie 值写入配置文件(文件权限会自动设为 600):
   echo '{"shimo_sid":"<你的cookie值>"}' > <skill-path>/config/env.json
   chmod 600 <skill-path>/config/env.json
  1. 用户完成后,运行预检验证:

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The top-level comments, usage text, success page, and console output are all written only in Chinese, which imposes a specific language on users without any opt-in or alternative locale. The policy allows locale constraints only when they are explicitly offered as a choice or clearly justified as region-specific, neither of which is present here.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This script transparently acts as a local reverse proxy for shimo.im, rewrites Set-Cookie headers to localhost, strips Secure and relaxes SameSite, and removes browser security headers such as CSP and HSTS. That design weakens browser trust boundaries and enables sensitive session cookies to be captured and persisted to disk, which is far more powerful and risky than the comment suggests.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill is described as interacting with shimo.im for login, browsing, scanning, and export. Spawning a local shell command via child_process.exec to invoke open/start/xdg-open is an additional host-execution capability that is not stated in the manifest and is not intrinsic to document export itself.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This file contains natural-language comments and console output that assume Chinese-language users, including usage guidance and error/help messages. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

The --raw mode intentionally outputs the Shimo session credential and skips validation, which can expose a live authentication token to stdout, logs, shell history, or downstream pipelines. In the context of a document-export skill handling sensitive enterprise content, leaking or blindly propagating a session cookie increases the risk of account takeover and unauthorized document access.

Content

Scanner excerpt · auth/scripts/preflight-check.cjs (reported line 57)May include surrounding context.

js
process.exit(1);
  }

  // --raw: output cookie value only (for env var piping), skip verification
  if (rawMode) {
    process.stdout.write(cookie);
    process.exit(0);

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation instructs agents to send an authenticated Cookie header to a remote service but does not explicitly warn that this transmits live session credentials off-host. In an AI skill context, that omission is risky because agents may automatically assemble and forward cookies without surfacing the sensitivity of the credential or obtaining clear user consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documentation describes downloading exported files from a temporary direct link without warning that the exported content and the download URL itself may expose sensitive document data. In this skill, the danger is elevated because the purpose is bulk export of user and team documents, so agents may fetch, store, or relay confidential content at scale without adequate safeguards.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly supports searching personal files, enumerating team spaces, and performing full recursive scans of document trees, but it does not require user confirmation, scope limitation, or any privacy warning before exposing potentially sensitive file metadata. In an agent setting, this can lead to over-collection of document names, paths, team structure, and timestamps far beyond the user's immediate need, especially because the module recommends broad scanning workflows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The API reference explicitly requires a session cookie (shimo_sid) as an authentication credential but provides no warning about secure handling, storage, redaction, or user-consent boundaries. In a skill designed for automated login, browsing, team-space scanning, and export, this omission can lead agents or integrators to log, persist, reuse, or expose a live account session, enabling unauthorized access to personal and organizational documents.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill functionality emphasizes searching files, scanning team spaces, browsing file lists, and batch export, but does not warn that these actions may enumerate or exfiltrate sensitive personal or enterprise content. In this context, omission of a warning lowers operator caution and increases the chance an agent will perform broad discovery/export against shared spaces without clear user confirmation or data-minimization controls.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
auth/scripts/browser-login.cjs:254