Back to skill

Security audit

Interview Question Gen

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent interview workflow, but it directs sensitive candidate materials into a fixed Feishu folder and fixed collaborator without explicit per-use approval.

Use this skill only if the fixed Feishu folder and collaborator are intended for your organization and users understand that candidate resumes, interview notes, evaluations, and possibly transcript links may be stored and shared there. Prefer requiring explicit confirmation of destination and recipients before upload, a private or local-only option, and cleanup of temporary resume images.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:48
Finding

Automatic Disclosure of Candidate Data to a Hard-Coded Feishu Collaborator

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:48-53, SKILL.md:64-72, SKILL.md:94-95, and references/evaluation-template.md:12-16
Vulnerability Type: Hard-coded external recipient and insecure handling of sensitive candidate information
Risk Level: High

Vulnerable Code

SKILL.md:48-53:

bash
cat /tmp/interview_questions.md | node scripts/feishu_bot_doc.mjs create \
  --title "【AI生成】{候选人姓名} {岗位} 面试题集" \
  --stdin \
  --folder AZ3nfFtial4bHTdOFahcdcfxnub \
  --collaborator ou_8b357150cff930fca19a733461a32526

SKILL.md:64-72:

markdown
### Step 1: Read the Transcript

Accept the transcript as:
- A Feishu doc link → use `feishu_doc` read action
- A pasted text block → read directly

### Step 2: Write Evaluation

Append the evaluation to the **existing interview question document** (not a new doc). Use `feishu_doc` append action on the same `doc_token`.

SKILL.md:94-95:

markdown
- Default save folder: `AZ3nfFtial4bHTdOFahcdcfxnub`
- Default collaborator: `ou_8b357150cff930fca19a733461a32526` (吴柏庆)

references/evaluation-template.md:12-16:

markdown
## 面试综合评价

**候选人:{姓名} | 岗位:{岗位} | 面试时间:{日期}**

> 原始面试记录:{transcript_url_if_available}

Technical Analysis

The Skill processes resumes and interview transcripts, which can contain candidate names, contact details, education, employment history, interview statements, and confidential hiring assessments. It then directs the agent to create a Feishu document in a fixed folder and grant access to a hard-coded collaborator.

Cloud document creation is part of the declared functionality, but automatic sharing with a predetermined account is not shown to be necessary. The Skill does not:

  • Confirm that the user authorizes disclosure to the hard-coded collaborator.
  • Verify that the destination folder belongs to the requesting organization.
  • Allow the user to select or approve recipients ...[truncated 2852 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the hard-coded folder and collaborator identifiers from the Skill.
  2. Require the user to select and explicitly confirm the destination workspace, folder, and recipients before any upload.
  3. Create documents as private by default and grant only the minimum permission required to explicitly approved recipients.
  4. Display a clear pre-upload summary identifying what candidate data will be transmitted and who will receive it.
  5. Provide a local-only output option so interview materials can be reviewed and redacted before publication.
  6. Do not include the original transcript URL by default. Add it only after explicit confirmation that its sharing permissions and recipients are appropriate.
  7. Minimize uploaded data by excluding contact details, addresses, identification numbers, and other attributes unnecessary for interview preparation.
  8. Validate that the destination folder belongs to the expected tenant or organization before writing.
  9. Implement revocation and retention controls for candidate documents and document their expected lifecycle.
  10. Include and audit scripts/feishu_bot_doc.mjs, verifying that it does not broaden sharing permissions, log document content, expose tokens, or transmit data to additional endpoints.
  11. Treat externally fetched Feishu documents as untrusted content and prevent their contents from changing agent instructions or destinations.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger list is broad enough that the skill may activate on generic interview-related requests without clear user intent to generate or upload hiring documents. In this skill, unintended activation is more dangerous because it can cause sensitive resume or transcript content to be processed and later written into Feishu documents, creating privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Mandating Japanese-only output for one interview section without user opt-in can cause the assistant to produce content in a language the user or interviewer did not explicitly request. In a hiring workflow, this may reduce reviewability, create misunderstandings, or conflict with accessibility and localization expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs the agent to create or append Feishu documents containing resume details and interview transcript-derived evaluations, but it does not require a user-facing disclosure or consent before sending that sensitive candidate data to Feishu. Because resumes and interview assessments often contain personal data and hiring judgments, silent external transmission materially increases privacy, compliance, and confidentiality risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The notes reiterate a hard requirement for Japanese-only content with no language choice, reinforcing behavior that may override user preferences or organizational policy. In this context the issue is not code execution, but workflow safety and usability: the skill can unexpectedly constrain output format in a way that affects hiring decisions and document comprehension.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
76% confidence
Finding

This markdown file contains natural-language instructions and template text that assume a specific language/locale context, including Chinese evaluation headings and a dedicated '日本市场理解' scoring dimension. Under the policy rule, locale-specific constraints should either be optional, user-selectable, or clearly justified as region-specific; this template does not provide that framing.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The template explicitly requires all questions in that section to be written entirely in Japanese, with no candidate language choice, accommodation path, or documented business-necessity exception. In an interview skill, this can create discriminatory screening risk by enforcing a language gate that may exclude otherwise qualified candidates or lead interviewers to apply inconsistent standards without justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill directs local rendering of uploaded PDF resumes into /tmp image files without warning the user that additional local artifacts will be created. While temporary local processing may be operationally necessary, undisclosed file creation can expose sensitive resume contents to residual storage, logging, or other local processes.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.