Back to skill

Security audit

ScholarGraph-CancerFusionGenesResearch

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed workflow for cancer fusion-gene literature research, with expected but noteworthy use of external APIs, persistent local outputs, and an unpinned spreadsheet dependency.

Before installing, confirm you are comfortable using MiniMax or another configured AI provider for literature-research data, keep API keys out of committed files and logs, pin or lock the `xlsx` dependency if possible, and avoid using the fixed workspace output paths for sensitive research unless you manage cleanup and access controls.

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:112
Finding

Unpinned Third-Party npm Dependency

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 112–116
Vulnerability Type: Unpinned third-party dependency
Risk Level: Medium

Vulnerable Code:

bash
# Install xlsx library
npm install xlsx

The installed package is subsequently loaded by generate_excel_template.js:

javascript
const XLSX = require('xlsx');

Technical Analysis

The documented installation command retrieves the currently resolved release of xlsx and its transitive dependencies without specifying an exact version. The project also does not include a reviewed package manifest, committed lockfile, or explicit integrity metadata.

As a result, installation is not reproducible: users auditing the Skill at different times may receive different dependency code. If the package, a transitive dependency, a maintainer account, or the configured npm registry is compromised, attacker-controlled code could be introduced after this Skill has been reviewed. npm lifecycle scripts may execute during installation, while malicious runtime code could execute when generate_excel_template.js imports the package.

Attack Path

  1. An attacker compromises a relevant package release, maintainer account, transitive dependency, or npm registry path.
  2. The attacker publishes or serves a malicious release that satisfies the unrestricted package request.
  3. A user follows the instruction npm install xlsx.
  4. npm resolves and downloads the attacker-controlled release because no exact version or reviewed lockfile constrains resolution.
  5. Malicious code executes through an installation lifecycle script or later when require('xlsx') loads the package.
  6. The payload operates with the permissions of the user running npm or the report generator.

Impact Assessment

Successful exploitation could provide arbitrary code execution with the invoking user's privileges. The resulting scope may include access to project files, gen ...[truncated 317 chars]

Remediation
View remediation

Remediation Suggestions

  1. Create a package.json and pin xlsx to a reviewed exact version rather than using a floating dependency specification.
  2. Generate and commit a lockfile containing dependency versions and integrity hashes.
  3. Replace ad hoc installation instructions with npm ci, which installs the locked dependency graph without updating resolution.
  4. Review the direct package and all transitive dependencies before updating the lockfile.
  5. Configure npm to use an approved registry and enforce lockfile integrity in CI.
  6. Use npm ci --ignore-scripts when dependency lifecycle scripts are not required.
  7. Run the report generator under a least-privileged account with only the filesystem and environment access needed to create the Excel report.
  8. Add automated dependency vulnerability and provenance checks to the release process.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (11)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

声明描述的是一个端到端的文献调研技能,核心能力应包括基于 ScholarGraph 的检索、合并去重、提取和报告生成。而给出的代码片段实际只是一个报表生成脚本:加载静态 fusionData,做少量字段派生(频率级别、参考文献数),再写入本地 xlsx 文件。虽然“生成 Excel 表格”与声明的一部分一致,但这只是整体声明中的一个末端环节,且缺少前置的检索、整合、抽取等关键行为。因此代码实际行为与声明的主要用途存在实质性不匹配。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This file presents all operational instructions exclusively in Chinese, and there is no indication that users may choose another language or that the skill is intentionally restricted to a Chinese-speaking context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The skill description is written entirely in Chinese and the document consistently presents the workflow, output schema, and examples only in Chinese. There is no indication that the user may choose another language or locale, which can conflict with a policy requiring language choice or opt-in.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

The skill creates persistent directories and writes research artifacts under /workspace/research/fusion, which can retain downloaded documents, generated reports, and intermediate JSON across sessions. In shared or long-lived environments, this persistence can expose prior user data or sensitive research outputs to later sessions or other users with access to the same workspace.

Content

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

bash
# 创建工作目录
mkdir -p /workspace/research/fusion/review
mkdir -p /workspace/research/fusion/reports

# 第一轮: 搜索各癌种融合基因 review

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

技能说明强调全流程自动化能力,尤其是信息提取和报告生成。但文中的实现仅展示搜索命令、一个基于本地 JSON 的合并脚本,以及含示例数据的 Excel 生成脚本,没有对应的自动提取/报告生成代码,实际行为更像操作手册而非已实现的完整技能。

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Manifest 将技能描述为面向癌症融合基因文献调研的全流程,包括搜索、去重、提取和生成报告/Excel。这里的“学习概念”“分析任意论文URL”“构建知识图谱”等通用能力并未与该专门用途绑定,扩大了技能实际可执行的行为范围。

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill instructs users to place sensitive API credentials directly into environment variables and a .env configuration example without any warning about secret handling, storage, or exposure. In shared workspaces, logs, shell history, screenshots, or checked-in files can leak the key, leading to unauthorized use of the external AI account and possible billing or data exposure.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The skill is designed to send prompts and possibly research content to an external AI provider endpoint. In a literature-research context this may be expected, but without clear disclosure of what data leaves the environment, users may unknowingly transmit sensitive notes, proprietary search queries, PDFs, or derived analyses to a third party.

Content

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

bash
AI_PROVIDER=minimax
MINIMAX_API_KEY=sk-cp-xxx
MINIMAX_BASE_URL=https://api.minimaxi.com/v1
MINIMAX_MODEL=MiniMax-M2.5

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The file uses Chinese-only comments, worksheet names, column headers, and domain labels throughout, which effectively constrains generated spreadsheet content to a specific language. There is no indication that the user can choose the output language or that the locale restriction is documented as an explicit, justified requirement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code file performs a file write operation by saving an XLSX workbook directly to /root/.openclaw/workspace/research/fusion/reports/fusion_genes_report_v2.xlsx. Although the script logs the record count afterward, it does not provide any warning, confirmation, or explanatory comment near the write about modifying the filesystem or overwriting an existing report.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file’s natural-language documentation is entirely in Chinese, including the top-level description and usage text. Under the stated policy, forcing a specific language without user opt-in can be a locale/language policy violation when no alternative or choice is offered.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.