Back to skill

Security audit

AI Vulnerability Tracker

Security checks for vulnerabilities and agentic risk

Overview

The skill broadly matches its stated tracker purpose, but it embeds Feishu credentials and hardcoded Feishu targets that should be reviewed before installation.

Review before installing. Do not run this version with live Feishu access until the embedded Feishu secret has been removed and rotated, the destination app/table IDs are verified, and you are comfortable with automatic uploads and any cron schedule you enable.

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

T09 · Insecure Skill Coding Practices

Error
Location
index.js:17
Finding

Hardcoded Feishu Application Credentials

Content
View full analysis

Vulnerability Details

File Location: index.js, lines 17-18
Vulnerability Type: Hardcoded secret / plaintext sensitive credentials
Risk Level: High

Vulnerable Code

js
appId: process.env.FEISHU_APP_ID || 'cli_a939c44a23789bd1',
appSecret: process.env.FEISHU_APP_SECRET || 'aaMNPvitP43wmkHV5Mav4VItJvOZHj5u',

Technical Analysis

The source code embeds a Feishu application ID and application secret as fallback values. When FEISHU_APP_ID and FEISHU_APP_SECRET are not set, the application automatically submits these embedded credentials to the Feishu tenant access-token endpoint.

Because the secret is distributed with the project, anyone who can read the repository, package, deployment artifact, backup, or related logs can recover it. Environment-variable support does not mitigate the exposure because the hardcoded fallback remains usable independently of the intended deployment.

The credentials are used in index.js, lines 211-214, to request a tenant access token:

js
const data = await feishuApiRequest('POST', 'open-apis/auth/v3/tenant_access_token/internal', {
  app_id: CONFIG.feishu.appId,
  app_secret: CONFIG.feishu.appSecret,
});

Attack Path

  1. An attacker obtains read access to the project source or a distributed Skill package.
  2. The attacker extracts the embedded Feishu application ID and secret from index.js.
  3. The attacker submits the credentials to Feishu's internal tenant access-token API.
  4. If the credentials remain valid, Feishu returns a tenant access token.
  5. The attacker uses that token to invoke Feishu APIs authorized for the application.
  6. The attacker may read or modify resources within the application's granted permission scope, including relevant Wiki or Bitable resources if those permissions are enabled.

Impact Assessment

Successful exploitation grants the attacker the API privileges assigned to the compromised Feishu applicat ...[truncated 561 chars]

Remediation
View remediation

Remediation Suggestions

  1. Revoke and rotate the exposed Feishu application secret immediately.
  2. Remove the application ID and secret fallback values from source code.
  3. Require credentials to be supplied through environment variables or an approved secret-management service.
  4. Fail closed during startup when required credentials are absent instead of silently using defaults.
  5. Prevent secrets from entering version control through secret-scanning hooks, CI checks, and repository protection rules.
  6. Review repository history and distributed artifacts for copies of the exposed secret.
  7. Audit Feishu authentication and API access logs for suspicious token issuance or resource access.
  8. Restrict the Feishu application's permissions to the minimum resources and operations required.
  9. Establish periodic credential rotation and incident-response procedures for future exposure.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description-behavior mismatch is security-relevant because it hides materially important behavior: embedded Feishu credentials/tokens, external data transmission, and discrepancies in the actual search sources and features. Users may approve or run the skill under false assumptions, enabling unintended secret exposure or unauthorized writes to external systems.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script contains hardcoded Feishu app credentials and uses them to obtain an access token for a third-party service. Embedded secrets can be extracted by anyone with access to the skill source or package, enabling unauthorized use of the Feishu tenant, data exfiltration, or abuse of downstream APIs.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Hardcoded Feishu credentials are silently embedded without disclosure, which magnifies the risk because operators may unknowingly ship or share live secrets. An attacker who discovers the source can reuse these credentials to authenticate against Feishu APIs and potentially access or manipulate tenant resources.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill declares no explicit tool scope or permissions even though it is intended to access environment-backed secrets and external services. This weakens least-privilege controls and makes it harder for users or the platform to understand what capabilities the skill will exercise before execution.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The usage section says only to '运行技能执行一次搜索和推送' and mentions cron execution, but it does not define a specific invocation phrase, scope, or exclusion conditions. For a markdown skill description, this ambiguity can cause unintended activation because readers are not told exactly when or how the skill should be invoked versus ordinary discussion of the topic.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill omits a clear warning that execution will transmit collected content to Feishu and possibly translation providers. This undermines informed consent and can lead to unintentional disclosure of scraped or transformed data to third parties, especially in automated cron-based runs.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This manifest sets the translation target language to "zh-CN", which imposes a specific locale in configuration rather than offering a user-selectable language. Under the policy, locale forcing is a natural-language violation unless the skill documents user opt-in or a justified region-specific constraint.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest explicitly states '支持去重和翻译', but the implementation only searches GitHub and WeChat, deduplicates URLs, and writes titles/descriptions directly to Feishu. There is no translation function, API call, or text-conversion logic anywhere in the file.

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 · index.js (reported line 110)May include surrounding context.

js
for (const keyword of CONFIG.keywords.en) {
    try {
      const query = `${keyword} created:>${getDateOneMonthAgo()} is:issue`;
      const url = `https://api.github.com/search/issues?q=${encodeURIComponent(query)}`;
      const data = await httpGet(url);
      const json = JSON.parse(data);

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The inline comments explain that the app_token differs from the wiki token and that the code needs to fetch the correct object token from wiki metadata. However, the implementation immediately sets const appToken = CONFIG.feishu.wikiToken, contradicting the stated intent and making the comment actively misleading about what the code actually does.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code sends titles, descriptions, and URLs gathered from external sources to Feishu via network requests. Although pushing to Feishu is part of the script's function, there is no explicit disclosure to the user at the point of execution that collected content will be uploaded to an external service.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

All user-facing description and operating instructions are presented in Chinese, and the file does not indicate that this language choice is optional or required for a region-specific purpose. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The top-level natural-language description is presented in Chinese only, which can impose a language constraint on users without any opt-in or explanation. The policy requires either offering a language/locale choice or clearly documenting and justifying a locale restriction.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.