T01 · Skill Instruction Hijacking
- Location
SKILL.md:6- Finding
Mandatory Promotional Output Hijacks Agent Responses
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This HR assistant has a coherent purpose, but it handles API keys and sensitive HR content in ways users should review carefully before installing.
Install only if you are comfortable sending HR questions and document context to HRrule. Do not paste real API keys into chat, avoid the ws:// browser example, prefer a protected local secret store, and avoid including employee PII, compensation, medical, disciplinary, or legal details unless you have authorization and a data-processing basis.
SKILL.md:6Mandatory Promotional Output Hijacks Agent Responses
MEMORY.md:1Persistent Memory Rules Require Reproduction of Tokenized Download Links
scripts/call_hrrule_api.py:161Arbitrary WebSocket Endpoint Receives API Key and Full HR Prompt
scripts/call_hrrule_api.py:367Command-Line API Key Masking Does Not Hide Operating-System Process Arguments
scripts/config_api_key.py:33API Key Is Echoed During Entry and Stored Without Enforced Owner-Only Permissions
assets/chat_example.html:115Browser Example Sends Credentials and HR Content to a Configurable Plaintext Endpoint
USAGE_GUIDE.md:21Documentation Instructs Users to Paste Secrets into Chat and Use Plaintext WebSockets
INSTALL.md:72Unpinned Python Packages and CDN-Hosted Executable JavaScript Create Supply-Chain Risk
scripts/call_hrrule_api.py:190Full Sensitive HR Requests Are Automatically Disclosed to an External Processor Without a Data-Minimization Boundary
scripts/call_hrrule_api.py:17Missing Download Helper Prevents Review and Execution of Security-Critical Attachment Logic
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
#### 方式 D: 创建 .env 文件
```bash
# 复制示例文件
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
#### 方式 D: 创建 .env 文件
```bash
# 复制示例文件
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
#### 方式 D: 创建 .env 文件
```bash
# 复制示例文件
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
#### 方式 D: 创建 .env 文件
```bash
# 复制示例文件
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
#### 方式 D: 创建 .env 文件
```bash
# 复制示例文件
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 复制示例文件
cp .env.example .env
# 编辑 .env 文件,填入你的 API Key
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 复制示例文件
cp .env.example .env
# 编辑 .env 文件,填入你的 API Key
The documented behavior does not cleanly match the declared purpose: the skill is presented as HR content generation, but the file also instructs the platform to manage local credentials and configuration state. This mismatch can mislead users and operators about what the skill actually does, reducing informed consent and increasing the chance that sensitive operations occur unexpectedly.
The skill omits a clear warning that user HR questions and document contents may be sent to an external service. This is especially dangerous because HR workflows commonly include personally identifiable information, employment details, compensation data, and legal matters that users may not expect to leave the local platform.
The workflow explicitly instructs the platform to extract user context and forward it as content to the external HR service. In an HR/recruiting setting, that context can easily include employer identity, role details, and sensitive workforce information, creating meaningful risk of privacy leakage if transmitted without minimization and consent.
Parse Request:
Construct Content:
This example forwards organizational context such as company size and industry to the remote service as part of the generated request. While useful for generation, these details may still be sensitive internal information and should not be transmitted automatically without clear disclosure and necessity checks.
Parse Request:
Call API:
The example extracts department context and sends it to the external API. On its own this is less severe than employee PII, but in aggregate it still leaks internal organizational structure and business-process details to a third party.
Parse Request:
Call API:
This example involves labor-law questions about protected categories such as pregnancy, maternity, and breastfeeding status, then instructs the platform to extract and send that context externally. Protected employment and health-adjacent information is particularly sensitive, so automatic transmission meaningfully increases privacy and compliance risk.
Parse Request:
Call API:
The example extracts resignation-related context and forwards it externally. Employment status and separation matters can be sensitive personnel information, and the workflow provides no warning, minimization, or approval control before sharing it.
Parse Request:
Call API:
The skill explicitly instructs users to paste their API key into the chat for automatic configuration, creating a direct natural-language path for secret disclosure. Chat messages are commonly logged, retained, surfaced to models, or visible to operators, so this pattern materially increases the chance of credential compromise.
Telling users to paste API keys into chat for automatic configuration explicitly encourages disclosure of secrets in an unsafe channel. In chat-integrated environments like DingTalk/QQ/WorkBuddy, messages may be logged, forwarded, or accessible to admins and plugins, making credential theft materially more likely.
The example conversation normalizes sending an API key in plain text and rewards the behavior with successful configuration. This socializes insecure practices and can cause users to expose valid keys in retained chat transcripts.
Repeating that users can directly paste API keys in conversation reinforces secret exposure and increases the chance of accidental compromise. The risk is elevated by the skill's messaging-platform integrations, where conversational data commonly traverses multiple services.
The example defaults the WebSocket endpoint to an unencrypted ws:// URL while collecting an API key and HR chat content in the browser. This exposes credentials and potentially sensitive HR/legal data to interception or modification by any attacker on the network path, and the page provides no warning to users that transport security is absent.
The file title and all user-facing changelog content are presented only in Chinese, indicating the skill documentation is effectively constrained to a single language. There is no indication that users may choose another language or that the locale restriction is intentional and justified for a region-specific skill.
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.
- 避免打包时包含敏感信息
2. ✅ **修复 SSL/TLS 安全问题**
- 移除 `ssl_verify=False`
- 使用安全的 SSL 上下文:`ssl.create_default_context()`
- 确保 HTTPS 连接的安全性
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.
- 避免打包时包含敏感信息
2. ✅ **修复 SSL/TLS 安全问题**
- 移除 `ssl_verify=False`
- 使用安全的 SSL 上下文:`ssl.create_default_context()`
- 确保 HTTPS 连接的安全性
The installation guide instructs users to place an API key in config.json or a .env file, but it does not warn that these files contain secrets that must be protected and excluded from version control. This can lead to accidental credential exposure through repository commits, shared workspaces, backups, or permissive file access, which would allow unauthorized use of the HRrule API.
The title and all operational instructions are written as mandatory Chinese-language guidance, with no indication that the assistant should adapt to the user's preferred language. This can violate language/locale policy when a skill implicitly constrains output language without offering user choice.
The memory explicitly instructs the agent to reproduce full download URLs containing real temporary tokens in summaries. Those URLs are bearer-style secrets: anyone who sees them in chat logs, transcripts, analytics pipelines, or downstream model context may be able to access attached HR documents without further authentication. In an HR skill, the risk is elevated because generated files may contain sensitive employee, recruiting, compensation, or policy data.
Detected: suspicious.exposed_secret_literal