T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This AliMail skill is coherent and not deceptive, but it handles organization mailbox data and credentials with under-scoped permissions and weak privacy safeguards.
Review before installing. Use this only with an authorized AliMail application, grant read-only least-privilege scopes, avoid read-write scopes for these scripts, pin and review the npm dependency, and treat terminal output as sensitive because it may include user profile data and full email content.
SKILL.md:9Unpinned Third-Party Dependency Installation
references/alimail-api.md:38Read-Only Skill Documentation Permits Excessive Organization-Wide Write Access
The skill is designed to retrieve user information, message contents, and search mailbox data, yet it provides no warning about the sensitivity of mailbox content, privacy implications, or the handling of OAuth client credentials. Because email bodies and account metadata often contain confidential or regulated information, missing warnings and safeguards materially increase the risk of privacy violations and credential misuse.
Referenced artifact was not completely inspected
- 获取用户信息:调用 `scripts/get_user.js`
Referenced artifact was not completely inspected
- 获取用户信息:调用 `scripts/get_user.js`
Referenced artifact was not completely inspected
- 获取邮件详情:调用 `scripts/get_message.js`
Referenced artifact was not completely inspected
- 获取邮件详情:调用 `scripts/get_message.js`
Referenced artifact was not completely inspected
- 搜索邮件:调用 `scripts/search_messages.js`
Referenced artifact was not completely inspected
- 搜索邮件:调用 `scripts/search_messages.js`
Referenced artifact was not completely inspected
- 搜索邮件:调用 `scripts/search_messages.js`
The README documents capabilities to query user information, retrieve specific email content, and search mailboxes, and it instructs operators to configure application credentials, but it provides no privacy, authorization, or data-handling warnings. In a mailbox-management skill, this omission is security-relevant because it normalizes access to highly sensitive communications and personal data without emphasizing least privilege, legal basis, auditability, or consent requirements.
The skill requires sensitive environment variables (ALMAIL_APP_ID, ALMAIL_SECRET) and invokes local scripts, but it does not declare an explicit tool scope such as permitted environment access or allowed tools. That omission weakens containment and reviewability, making it easier for an agent runtime to grant broader-than-necessary access when handling mailbox data and credentials.
The trigger conditions are broad enough that the skill may activate whenever a user mentions enterprise mail users or messages, without clear boundaries, consent checks, or authorization requirements. In a mailbox-management context, overbroad activation increases the chance of unnecessary access to sensitive user records and email content.
The document promotes OAuth2 client_credentials with powerful application-wide scopes such as User.Read.All and Mail.Read.All / Mail.ReadWrite.All, yet omits guidance on secure secret storage, token handling, rotation, and the risks of non-user-scoped access. Because client_credentials often grants broad unattended access across many users, poor credential hygiene or overbroad scope assignment could expose the entire organization's mailbox and directory data.
The document describes APIs that can read highly sensitive enterprise data, including user profile details and full email contents, but provides no warning about privacy, consent, access control, or audit expectations. In a skill that enables mailbox lookup and message retrieval, this omission can normalize broad data access and increase the likelihood of over-collection, unauthorized review of employee mail, or use beyond legitimate business need.
This script fetches a message by email address and message ID, then prints the full returned object to stdout. In the context of an email-management skill, that can expose sensitive mail content, headers, recipients, and other private data into terminal history, logs, or upstream agent outputs without any masking, confirmation step, or safe default field restriction.
The script retrieves mailbox user information and prints the full returned object directly to stdout, which can expose personally identifiable information or administrative metadata in logs, terminals, CI output, or agent transcripts. In the context of an email-management skill, this is more dangerous because the data source is enterprise email account information, which is often sensitive even when access is authorized.
This code performs a networked mailbox search via client.searchMessages(params.email, options), sending the user's email address and query to an external mail service. Although the script logs that it is searching mail, it does not provide any user-facing warning or disclosure about transmitting mailbox-related data to a remote service or accessing potentially sensitive message metadata.
The natural-language documentation is entirely in Chinese and does not provide an alternative language option or indicate that the skill is intended only for a Chinese-speaking or region-specific audience. Under the language/locale policy, forcing a single language without user opt-in can be a policy concern when no justification is provided.
The natural-language strings in comments and error messages are exclusively in Chinese, including the usage description and user-facing error text. The policy explicitly flags language or locale constraints when a skill forces a specific language without user opt-in, and this file does not offer any alternative language or explain that it is intentionally region-specific.
The natural-language documentation and console messages in this file are written entirely in Chinese, which imposes a specific language on users without any opt-in or stated locale requirement. This can violate language or locale policy when skills are expected to be usable without forcing a single language.
The natural-language instructions, parameter descriptions, and examples are presented exclusively in Chinese. This can violate a language or locale policy when a skill forces a specific language without user opt-in or justification.
The natural-language content in comments, usage text, status output, and error messages is entirely in Chinese, which imposes a specific language on users without opt-in or an alternative. Under the stated policy, forcing a language or locale without user choice is a natural-language policy violation.
No suspicious patterns detected.