T09 · Insecure Skill Coding Practices
- Location
SKILL.md:81- Finding
Unsafe JSON Construction Using Unescaped User-Controlled Values
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent Pincaimao mock-interview API skill, with disclosed third-party data transmission and some implementation cautions but no artifact-backed malicious behavior.
Install only if you are comfortable sending resume content, job descriptions, interview answers, and optional media references to api.pincaimao.com. Verify the referenced pincaimao-basic dependency before allowing installation, keep the API key scoped, and prefer safer JSON-serialized request construction over copying the raw shell examples as-is.
SKILL.md:81Unsafe JSON Construction Using Unescaped User-Controlled Values
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
---
name: pincaimao-mock-interview
description: 聘才猫 - 模拟面试 Use when calling Pincaimao Mock Interview API to simulate a real interview scenario with multi-turn conversation. Supports text and video modes, custom questions, role settings, and reference answers. Requires PCM_MOCK_INTERVIEW_KEY env var.
version: 1.0.1
allowed-tools:
- Bash
metadata:
openclaw:
emoji: "🎭"
homepage: https://www.pincaimao.com
primaryEnv: PCM_MOCK_INTERVIEW_KEY
requires:
env:
- PCM_MOCK_INTERVIEW_KEY
bins:
- curl
- python3
---
# 聘才猫 - 模拟面试
**REQUIRED:** 请先检查
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
RESUME_FILE="/path/to/resume.docx"
# Step 1: 上传简历(可选)
UPLOAD=$(curl -s -X POST 'https://api.pincaimao.com/agents/v1/files/upload' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-F "file=@$RESUME_FILE")
COS_KEY=$(echo "$UPLOAD" | python3 -c "import sys,json; print(json.load(sys.stdin)['cos_key'])")
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Step 2: 第一轮 - 开始面试
QUERY=$(echo "$JOB_INFO" | cut -c1-20)
ROUND1=$(curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Step 3: 后续轮次
USER_ANSWER="我有5年销售经验,擅长大客户开拓..."
curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
The skill content and operational instructions are presented in Chinese, which effectively imposes a specific language on users and agents. The file does not indicate that Chinese is optional, nor does it offer an alternative language or user choice.
The upload example transmits a resume file to an external service and returns a storage key, creating a clear external transfer of highly sensitive personal data. Because resumes commonly contain contact data, employment history, and identifiers, the privacy impact is non-trivial even if the transfer is intended.
RESUME_FILE="/path/to/resume.docx"
# Step 1: 上传简历(可选)
UPLOAD=$(curl -s -X POST 'https://api.pincaimao.com/agents/v1/files/upload' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-F "file=@$RESUME_FILE")
COS_KEY=$(echo "$UPLOAD" | python3 -c "import sys,json; print(json.load(sys.stdin)['cos_key'])")
This finding duplicates the same external transmission at line 82, where interview session data is sent to api.pincaimao.com. In context, this is expected functionality, but it remains a genuine privacy/security concern because sensitive content leaves the local environment.
# Step 2: 第一轮 - 开始面试
QUERY=$(echo "$JOB_INFO" | cut -c1-20)
ROUND1=$(curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
This finding duplicates the same external transmission at line 82, where interview session data is sent to api.pincaimao.com. In context, this is expected functionality, but it remains a genuine privacy/security concern because sensitive content leaves the local environment.
# Step 2: 第一轮 - 开始面试
QUERY=$(echo "$JOB_INFO" | cut -c1-20)
ROUND1=$(curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
This duplicate finding again reflects outbound transmission of user interview responses to the external API in later turns. The context makes it legitimate product behavior, but not risk-free, because sensitive user-generated content is continuously exported.
# Step 3: 后续轮次
USER_ANSWER="我有5年销售经验,擅长大客户开拓..."
curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
This duplicate finding again reflects outbound transmission of user interview responses to the external API in later turns. The context makes it legitimate product behavior, but not risk-free, because sensitive user-generated content is continuously exported.
# Step 3: 后续轮次
USER_ANSWER="我有5年销售经验,擅长大客户开拓..."
curl -s -X POST 'https://api.pincaimao.com/agents/v1/chat/chat-messages' \
-H "Authorization: Bearer $PCM_MOCK_INTERVIEW_KEY" \
-H 'Content-Type: application/json' \
-d "{
The manifest describes a mock interview API skill, but the implementation guidance requires the agent to use the generic Bash tool plus curl and python3 to perform requests and parse responses. While network access to the interview API is expected, depending on a shell execution capability is broader than the business purpose described and is not itself part of the declared user-facing function.
No suspicious patterns detected.