Back to skill

Security audit

维表智联管理

Security checks for vulnerabilities and agentic risk

Overview

This looks like a legitimate Dimens business-admin skill, but it gives agents live credential, permission, publishing, rollback, and deletion workflows without enough safeguards.

Install only if you intend to let the agent administer Dimens/BintelAI resources. Before use, require explicit confirmation for deletes, restores, public sharing, permission changes, and API key lifecycle actions; use only the official trusted base URL for authentication; avoid pasting real secrets into command lines or chats; and protect or clear any local CLI profile that stores tokens.

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

T09 · Insecure Skill Coding Practices

Warning
Location
references/key-auth/references/examples.md:82
Finding
API Secret Exposed Through Command-Line Arguments<![CDATA[ ## Vulnerability Details **File Location**: `references/key-auth/references/examples.md:82-94` **Additional Location**: `references/key-auth/references/login-flow.md:90-101` **Vulnerability Type**: API secret disclosure through process arguments **Risk Level**: Medium ### Vulnerable Code Snippet ```bash dimens-cli auth api-key-login \ --api-key ak_xxx \ --api-secret sk_xxx ``` The documentation also recommends the equivalent argument form: ```bash dimens-cli auth api-key-login \ --api-key=ak_xxx \ --api-secret=sk_xxx ``` ### Technical Analysis The documented authentication procedure places the API secret directly in the command-line argument vector. When real credentials replace the placeholders, the secret may become visible through: - Shell history files. - Process inspection tools while the command is running. - Agent tool-call logs and execution transcripts. - Terminal recording and diagnostic telemetry. - CI/CD command logs. - Operating-system process accounting. The Skill does not document a masked prompt, standard-input mechanism, protected credential file, operating-system credential store, or mandatory redaction behavior. Because successful API-key authentication returns a bearer token inheriting the bound user's permissions, disclosure of the API secret can lead to account impersonation within that user's authorization scope. ### Attack Path 1. A user or Agent substitutes a real API key and secret into the documented command. 2. The shell, Agent runtime, process table, or logging system records the complete argument vector. 3. An attacker with access to local process metadata, history, or logs extracts the API secret. 4. The attacker submits the stolen key and secret to the platform authentication endpoint. 5. The platform returns an access token and potentially a refresh token. 6. The attacker uses those tokens to access or modify resources available to the bound user. ### Impact Assessment Successful exploitation may ...[truncated 454 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace command-line secret arguments with a masked interactive prompt or standard-input mechanism. 2. Support an operating-system credential store such as Keychain, Credential Manager, or Secret Service. 3. If environment-based input is necessary, prevent environment values from appearing in logs and document the residual exposure risk. 4. Automatically redact API keys, API secrets, access tokens, and refresh tokens from command previews, errors, telemetry, and Agent transcripts. 5. Disable shell history around sensitive authentication operations or provide a dedicated login command that never receives secrets through `argv`. 6. Add an explicit warning that production secrets must not be copied into literal command lines, scripts, tickets, or chat messages. 7. Rotate any credential that has already appeared in command history or execution logs. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
references/key-auth/references/login-flow.md:113
Finding
Persistent Bearer Tokens Stored Without Documented Protection<![CDATA[ ## Vulnerability Details **File Location**: `references/key-auth/references/login-flow.md:113-119` **Additional Location**: `references/key-auth/references/examples.md:107-110` **Vulnerability Type**: Insecure local storage of authentication tokens **Risk Level**: Medium ### Vulnerable Code Snippet The authentication workflow states that successful login has the following side effects: ```text 1. Write the access token to the local profile. 2. If a refresh token is returned, write it to the local profile as well. 3. Reuse that login state by default for subsequent project, sheet, column, row, and AI commands. ``` The accompanying example similarly specifies: ```text data.token -> Written to the local profile for later commands. data.refreshToken -> Also written to the local profile when returned. ``` ### Technical Analysis The Skill instructs the CLI to persist bearer credentials locally but does not document: - The profile's exact storage location. - Owner-only file permissions. - Encryption at rest. - Integration with an operating-system keychain. - Protection against symbolic-link or shared-directory attacks. - Token redaction requirements. - Logout, revocation, or secure-deletion behavior. - Automatic expiration cleanup. Bearer tokens grant access to anyone who possesses them. Refresh tokens are particularly sensitive because they may provide access beyond the lifetime of the initial access token. The documented example indicates a refresh-token lifetime longer than the access-token lifetime, increasing the value of a stolen profile. ### Attack Path 1. A user authenticates using the documented workflow. 2. The CLI writes the access token and refresh token to a local profile. 3. Another local account, process, backup service, malware instance, or exposed workspace reads the profile. 4. The attacker extracts the bearer or refresh token. 5. The attacker replays the access token or uses the refresh token to obtain a new session. 6 ...[truncated 613 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Store access and refresh tokens in the operating system's protected credential store rather than a plaintext profile. 2. If a file-based fallback is unavoidable, create it with owner-only permissions and reject files owned by another user or exposed to a group. 3. Encrypt stored credentials using a key that is not kept alongside the profile. 4. Document the exact profile location and its security properties. 5. Never print complete tokens in successful output, debug output, exceptions, or Agent logs. 6. Add explicit logout and revocation commands that remove local credentials and invalidate server-side sessions. 7. Automatically remove expired tokens and minimize refresh-token lifetime. 8. Avoid storing refresh tokens unless persistent login is explicitly requested. 9. Detect symbolic links, unsafe parent-directory permissions, and shared workspaces before writing credentials. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
references/key-auth/references/login-flow.md:90
Finding
Custom Authentication Base URL Can Redirect API Credentials<![CDATA[ ## Vulnerability Details **File Location**: `references/key-auth/references/login-flow.md:90-110` **Additional Location**: `references/key-auth/references/examples.md:82-102` **Vulnerability Type**: Credential forwarding to an unconstrained endpoint **Risk Level**: Medium ### Vulnerable Code Snippet ```bash dimens-cli auth api-key-login \ --api-key ak_xxx \ --api-secret sk_xxx ``` The same workflow defines the following optional argument: ```text --base-url | Optional | API root URL; the current default is https://dimens.bintelai.com/api ``` ### Technical Analysis The authentication command accepts a custom API base URL while transmitting both the API key and API secret. The documentation does not require the supplied origin to be the official service, enforce HTTPS, define a trusted-host allowlist, or require informed confirmation before sending credentials to a different origin. Consequently, malicious instructions, copied configuration, DNS manipulation, or user error could direct authentication to an attacker-controlled server. That server would receive reusable credentials before any platform authorization check occurs. This is especially relevant for an Agent Skill because an untrusted task may supply a base URL as apparent project context. The Skill instructs the Agent to execute CLI operations and treats custom URLs as a supported contextual input, but it does not define a trust boundary for authentication. ### Attack Path 1. An attacker provides a project instruction or configuration containing an attacker-controlled base URL. 2. The Agent or user invokes `api-key-login` with that URL. 3. The CLI sends the API key and secret to the attacker-controlled endpoint. 4. The malicious endpoint records the credentials and returns either an error or a plausible response. 5. The attacker submits the captured credentials to the legitimate platform endpoint. 6. The legitimate platform issues bearer credentials for the bound user. 7. The ...[truncated 576 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Allowlist `https://dimens.bintelai.com/api` as the default and trusted authentication origin. 2. Reject plaintext HTTP for every operation that transmits credentials or bearer tokens. 3. Require explicit, informed confirmation before sending credentials to any non-default origin. 4. Display the normalized scheme, host, port, and path before authentication when a custom origin is used. 5. Prevent redirects from forwarding credentials to a different origin. 6. Separate project URL parsing from authentication endpoint selection so untrusted project links cannot silently control where credentials are sent. 7. Provide a configuration-level trusted-host list managed outside untrusted task content. 8. Validate TLS certificates and hostnames without insecure fallback options. 9. Warn users that changing `--base-url` changes the recipient of the API key and secret. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (53)

Ae1

High
Category
analysis-evasion
Content
| 项目初始化 | `references/project/overview.md` | 创建项目、项目菜单、文档资源、初始化主链 |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
| 项目初始化 | `references/project/overview.md` | 创建项目、项目菜单、文档资源、初始化主链 |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
| 项目初始化 | `references/project/overview.md` | 创建项目、项目菜单、文档资源、初始化主链 |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Credential Access

High
Category
Privilege Escalation
Content
| --- | --- | --- |
| `code` | `number` | 成功通常为 `1000` |
| `message` | `string` | 成功通常为 `success` |
| `data.expire` | `number` | access token 过期秒数 |
| `data.token` | `string` | 维表智联用户 JWT |
| `data.refreshExpire` | `number` | refresh token 过期秒数 |
| `data.refreshToken` | `string` | 刷新 token |
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
| --- | --- | --- |
| `code` | `number` | 成功通常为 `1000` |
| `message` | `string` | 成功通常为 `success` |
| `data.expire` | `number` | access token 过期秒数 |
| `data.token` | `string` | 维表智联用户 JWT |
| `data.refreshExpire` | `number` | refresh token 过期秒数 |
| `data.refreshToken` | `string` | 刷新 token |
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The manifest description and the primary heading present the skill entirely in Chinese, with no indication that users may choose another language or that the skill is restricted to a Chinese-only compliance or regional context. The policy requires flagging language or locale constraints when they are imposed without user opt-in or clear justification.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The document exposes a `canvas restore` command that can roll back a canvas to an earlier version, but it does not warn that this operation may overwrite or effectively discard newer work. In a skill designed to create, save, and maintain shared business canvases, omission of a destructive-operation warning increases the chance of accidental data loss or rollback of current state by users or downstream agents following the instructions literally.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
This markdown guidance contains a natural-language locale policy that explicitly requires Chinese text fields when the user input is Chinese. The file does not offer the user a language/locale choice or explain a justified region-specific constraint, so it can violate language-choice policy.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
This markdown file is natural-language content, and it consistently forces a single language/locale throughout the description and operational guidance. Under the policy, locale or language restrictions should not be imposed without user opt-in unless clearly justified as region-specific, which is not stated here.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The document states that login tokens and refresh tokens are written to a local profile for reuse, but provides no warning about secure local storage, file permissions, redaction, or avoiding shared machines. In a skill focused on authentication workflows, this omission can lead users to persist sensitive bearer credentials insecurely, increasing the chance of credential theft and unauthorized API access.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill documents destructive API key lifecycle actions such as disable, delete, and reset-secret without any caution about operational impact, confirmation requirements, or rollback implications. In an admin/operations skill, this can cause accidental outages, broken integrations, or secret invalidation if users follow the instructions without safeguards.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The document explicitly instructs users to pass an API secret on the CLI and states that access and refresh tokens are written to a local profile, but it provides no warning about shell history, process-list exposure, file permission hardening, or secure storage. In an authentication-focused skill, omitting these handling precautions can directly lead to credential leakage and session compromise on shared or monitored systems.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The document gives operators a direct write command to change effective access control on resources, but it does not include an explicit warning that this action can immediately alter who can view or edit sensitive assets. In a permission-management skill, omission of change-risk guidance increases the chance of accidental over-permissioning, unintended exposure, or disruption, especially when users copy commands verbatim.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
This markdown documents permission deletion and revocation-related operations, including `/permission/delete` and later ACL revoke endpoints, but does not include any explicit caution that these actions can immediately remove user access or alter collaboration behavior. For markdown files, the rule requires warnings when behaviors could affect user data, privacy, or system integrity, and access-control changes are safety-relevant because they can lock users out or change effective permissions unexpectedly.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill documents a destructive `doc delete` workflow but does not require explicit user confirmation immediately before deletion. In an agent setting, this increases the risk of accidental or overly-trusted destructive actions, especially because the surrounding guide encourages direct command execution and lifecycle maintenance flows.

Missing User Warnings

Medium
Confidence
85% confidence
Finding
The skill includes a `doc delete` command in the standard maintenance flow without highlighting that it is destructive and may permanently remove documentation or break project workflows. In an operational admin skill, presenting deletion alongside routine info/update commands without caution increases the chance of accidental data loss by users following the guide verbatim.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill recommends creating a default view with `--is-public true` but does not warn that this can expose table data to anyone with the public link or broader unintended audiences. In a resource-management skill that handles business projects, tables, permissions, roles, and reports, normalizing public-by-default configuration can easily cause accidental data disclosure of internal or customer information.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
Recommending version restore without warning that it overwrites current document content can cause unintended integrity loss, especially in collaborative environments. In this skill's context, the command operates on live business documentation, so an incautious restore could erase newer work or operationally important updates.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The document exposes destructive and visibility-changing operations such as report deletion and publication with operational guidance, but the nearby guidance does not consistently require explicit user confirmation or clearly warn about irreversible data loss, dependency breakage, or unintended public exposure. In an agent skill context, this increases the chance that an automated agent will execute high-impact actions from a casual prompt without an adequate safety checkpoint.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
This markdown file includes example commands for deleting and archiving reports, which can affect user data and report availability, but it does not provide any caution, confirmation note, or warning about irreversible or disruptive effects. Under the markdown-specific warning criterion, user-facing documentation should disclose potentially harmful behaviors when presenting such operations.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The document states that the `batch` widget API performs whole-array reconstruction and explicitly notes that missing components or changed ordering may be due to this overwrite behavior. In an agent skill that may generate or recommend commands, insufficient guardrails around bulk replacement can cause accidental loss of report component state or unintended destructive changes at scale.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The title and entire guidance prescribe the report component generation规范 in Chinese, and there is no indication that language choice is optional or limited to a justified region-specific workflow. Under the policy rule, forcing a specific language/locale without user opt-in is a natural-language policy concern.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
This markdown file presents all user-facing instructions in Chinese, which effectively forces a specific language for readers. The policy allows locale constraints only when the skill offers language choice or clearly documents and justifies the restriction, which is not present here.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The natural-language description is written entirely in Chinese and does not indicate that language selection is optional or limited to a China-specific/regional compliance context. Under the policy rules, forcing a specific language or locale without user opt-in is a natural-language policy violation.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The document defines a very generic trigger condition around requests like “帮我搭一个系统”, then prescribes broad operational steps across projects, tables, views, fields, relations, and reports. In an agent setting, an overly broad trigger can cause this skill to activate for common user requests outside its intended scope, leading the agent to perform or suggest high-impact resource creation and configuration in the wrong project or context.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
references/key-auth/references/examples.md:127

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
references/key-auth/references/login-flow.md:136