T09 · Insecure Skill Coding Practices
- Location
scripts/telecom_verify.py:251- Finding
Unmasked Identity Data Is Written to Standard Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it claims, but it handles highly sensitive identity data and under-discloses ways that data can be exposed.
Review carefully before installing. Use only for cases where the user explicitly wants Juhe telecom real-name verification, warn them that their identity data will be sent to Juhe, avoid passing API keys or identity values on the command line, and do not run the current script where stdout is logged unless the raw JSON output is removed or sanitized.
scripts/telecom_verify.py:251Unmasked Identity Data Is Written to Standard Output
scripts/telecom_verify.py:191API Credentials and Identity Data Are Accepted and Recommended Through Command-Line Arguments
The AI usage guidance instructs the agent to collect a phone number, real name, and national ID number and then call a third-party API, but it does not present a clear privacy warning or obtain explicit consent before transmission. Because these are highly sensitive identity attributes, silent collection and external transfer materially increases privacy, compliance, and identity-theft risk.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
API Key 配置(任选其一,优先级从高到低):
1. 命令行参数:python telecom_verify.py --key your_api_key ...
2. 环境变量:export JUHE_TELECOM_KEY=your_api_key
3. 脚本同目录的 .env 文件:JUHE_TELECOM_KEY=your_api_key
免费申请 API Key: https://www.juhe.cn/docs/api/id/208
"""
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
API Key 配置(任选其一,优先级从高到低):
1. 命令行参数:python telecom_verify.py --key your_api_key ...
2. 环境变量:export JUHE_TELECOM_KEY=your_api_key
3. 脚本同目录的 .env 文件:JUHE_TELECOM_KEY=your_api_key
免费申请 API Key: https://www.juhe.cn/docs/api/id/208
"""
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
API Key 配置(任选其一,优先级从高到低):
1. 命令行参数:python telecom_verify.py --key your_api_key ...
2. 环境变量:export JUHE_TELECOM_KEY=your_api_key
3. 脚本同目录的 .env 文件:JUHE_TELECOM_KEY=your_api_key
免费申请 API Key: https://www.juhe.cn/docs/api/id/208
"""
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
API Key 配置(任选其一,优先级从高到低):
1. 命令行参数:python telecom_verify.py --key your_api_key ...
2. 环境变量:export JUHE_TELECOM_KEY=your_api_key
3. 脚本同目录的 .env 文件:JUHE_TELECOM_KEY=your_api_key
免费申请 API Key: https://www.juhe.cn/docs/api/id/208
"""
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
if env_key:
return env_key
env_file = Path(__file__).parent / ".env"
if env_file.exists():
for line in env_file.read_text(encoding="utf-8").splitlines():
line = line.strip()
The skill advertises executable behavior that uses environment variables, local file access, and outbound network calls, but it does not declare any explicit tool scope or permissions boundary. That increases the chance an agent invokes the skill without clear user/admin awareness of its capability to read secrets and transmit sensitive data externally.
The description includes broad triggers like '实名认证' and related phrases that may cause the skill to activate on loosely related requests. In a skill that handles name, ID card number, and mobile number, over-broad activation raises the risk of collecting and sending highly sensitive PII when the user did not clearly intend to invoke this exact external verification workflow.
The script sends highly sensitive PII including real name, mobile number, and optionally a national ID number to a third-party API service. Although this is the intended function of the skill, there is no explicit privacy warning, consent prompt, minimization guidance, or retention/transmission notice, which creates a real privacy and compliance risk if users or integrators are unaware of the data-sharing implications.
All user-facing instructions, help text, and outputs are hard-coded in Chinese, which forces a specific language/locale on users. The policy allows locale constraints when they are clearly documented and justified or when users are given a choice, neither of which is present here.
No suspicious patterns detected.