T09 · Insecure Skill Coding Practices
- Location
scripts/translator.py:42- Finding
Full customer email bodies are transmitted to an external translation service by default
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent email-quote automation tool, but it handles mailbox credentials and customer email contents with weak privacy and storage controls.
Review this skill carefully before installing. Use a dedicated mailbox with a revocable app password, keep SSL enabled, avoid committing config/config.py after adding secrets, disable external translation unless approved for your customer data, and store email_storage in a private location with retention rules.
scripts/translator.py:42Full customer email bodies are transmitted to an external translation service by default
config/config.py:16Mailbox credentials and API secrets are intended to be stored in tracked plaintext source code
scripts/email_utils.py:20Optional plaintext IMAP mode permits unencrypted credential and email transmission
scripts/email_utils.py:153Downloaded emails and generated business records use ambient filesystem permissions
requirements.txt:1Dependency installation is not fully pinned or integrity-verified
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</style>
</head>
<body>
<!--
This is an example HTML template for sending quotation emails.
You can customize this template according to your company branding.
这是一个用于发送报价邮件的HTML模板示例,你可以根据公司品牌需求自定义。
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</style>
</head>
<body>
<!--
This is an example HTML template for sending quotation emails.
You can customize this template according to your company branding.
这是一个用于发送报价邮件的HTML模板示例,你可以根据公司品牌需求自定义。
The documentation advertises automatic translation, including third-party engines such as Google and Baidu, without warning that customer email contents may be transmitted to external services. This is dangerous because inquiries may contain personal data, confidential designs, pricing, or business-sensitive information that could violate privacy obligations or confidentiality expectations when sent off-platform.
The README states that the tool stores raw emails, extracted text, translations, quotes, and marks emails as read, but it does not warn users about the privacy and operational implications of doing so. This can lead to unexpected retention of sensitive customer data and unintended mailbox state changes that affect auditability, workflows, or incident response.
The README advertises automatic email retrieval, archival, and translation but does not clearly warn that customer emails will be persistently stored locally and that translation may transmit their contents to external services. In a business quoting workflow, these emails can contain personal data, contact details, pricing discussions, and proprietary requirements, so lack of disclosure and guidance increases privacy, compliance, and data-handling risk.
The skill explicitly describes saving raw emails, extracted text, translations, and quote drafts to local storage, but does not warn users that customer communications may contain personal, commercial, or confidential data. This can lead to unintentional retention of sensitive information on disk without informed consent, access controls, or data-handling precautions, increasing privacy and compliance risk.
The skill states that non-Chinese emails are automatically sent to translation APIs, but it does not disclose that customer message contents may be transmitted to third-party services outside the local environment. This creates confidentiality, privacy, and regulatory exposure because inquiry emails can include customer identities, contact details, order details, pricing discussions, or proprietary business information.
The script automatically translates email content when it is not in the target language and generates quotes in a predetermined language, with comments indicating a fixed language choice for foreign customers. This is a natural-language locale policy concern because the behavior is automatic and does not present any user choice or documented opt-in for language preference.
The file fetches full email contents via IMAP and saves raw messages, extracted text, and generated quotations to disk. Although the functions are documented descriptively, there is no visible user disclosure, confirmation prompt, or explicit warning that potentially sensitive email data will be stored locally.
The function and template explicitly generate a Chinese quotation reply, including a Chinese-only salutation and body, with no indication that the user's language preference is checked first. This creates a natural-language policy concern because it forces a specific language/locale rather than offering or detecting user choice.
The docstring states that the module translates emails from non-target languages into a target language, and the implementation later uses a configured default target language. This describes a fixed language behavior without any natural-language indication that users can choose or opt into the locale, which can violate language/locale policy requirements.
The README states the tool detects 'non-target language' emails, translates them, and generates quotation replies in both Chinese and English, which suggests a preset language policy rather than a user-selected locale. Because no explicit opt-in or language choice is described here, this appears to impose a specific language workflow.
The documentation encourages users to directly send auto-generated quotes without explicitly requiring manual review of pricing, quantities, customer details, or translated content. This can lead to erroneous or misleading business communications, especially because the tool parses untrusted inbound email content and may translate or infer requirements imperfectly.
This file sets default_target_lang to zh-CN, which imposes a specific locale by default. Under the policy, forcing a language without offering user choice or documenting a justified region-specific constraint is a natural-language policy concern.
The document switches into Chinese content and effectively requires readers to process both English and Chinese, but it does not state that the bilingual format is optional or limited to a specific locale. Under the language/locale policy check, forcing or assuming a language without user opt-in can be a policy issue.
The dependency specification for pandas uses a lower-bound range instead of an exact pin, which makes builds non-reproducible and can cause the environment to resolve to unexpected or newly vulnerable releases over time. While this is not an exploit by itself, it is a real supply-chain hardening weakness because security posture depends on whatever version gets installed later.
pandas>=1.3.0
langdetect>=1.0.9
googletrans==4.0.0-rc1
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The dependency specification for langdetect is also unpinned, so installations may resolve to different versions across time and environments. This weakens reproducibility and increases supply-chain risk because a future compromised or vulnerable release could be pulled in without any change to this file.
pandas>=1.3.0
langdetect>=1.0.9
googletrans==4.0.0-rc1
The module docstring includes a Chinese description at L04 in addition to English, which indicates a language-specific presentation choice in natural-language content. The file does not state that multilingual output is optional or that the skill is intended for a specific locale, so this can conflict with a policy requiring user opt-in for language/locale constraints.
The module docstring and comments include Chinese-language text alongside English, but there is no indication that language preference is user-selectable or justified as a region-specific requirement. Under the policy, locale-specific language should be optional or clearly documented.
No suspicious patterns detected.