Back to skill

Security audit

简历标准化解析虾

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent resume-parsing skill, but review is warranted because spreadsheet exports can carry unsanitized resume text that may be interpreted as formulas.

Use this only for resumes you are authorized to process. Confirm destinations before writing candidate data to Feishu or files, and treat exported CSV/XLSX files as potentially unsafe until formula sanitization is added; JSON output is safer for preserving raw parsed data.

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

Warning
Location
scripts/parse-resume.py:65
Finding

Spreadsheet Formula Injection Through Attacker-Controlled Resume Fields

Content
View full analysis
dict: phone = PHONE_RE.search(text) email = EMAIL_RE.search(text) lines = [l.strip() for l in text.splitlines() if l.strip()] name = lines[0] if lines else "" return { "name": name, "phone": phone.group() if phone else "", "email": email.group() if email else "", "gender": "未知", "age": None, "city": "", } ``` ```python def _export_tabular(results: list, output: str, fmt: str): rows = [] for r in results: b = r.get("basic", {}) rows.append({ "姓名": b.get("name", ""), "手机": b.get("phone", ""), "邮箱": b.get("email", ""), "工作年限": r.get("work_years", ""), "最高学历": r.get("highest_degree", ""), "技能标签": ", ".join(r.get("skills", {}).get("tech", [])), "质量分": r.get("quality_score", ""), "解析时间": r.get("parse_time", ""), "来源文件": r.get("source_file", ""), }) try: import pandas as pd df = pd.DataFrame(rows) if fmt == "csv": df.to_csv(output, index=False, encoding="utf-8-sig") else: df.to_excel(output, index=False) except ImportError: sys.exit("缺少依赖: pip install pandas openpyxl") ``` ### Technical Analysis Resume contents are untrusted input. `extract_basic()` takes the first non-empty line of a resume and stores it directly as the candidate name. `_export_tabular()` subsequently passes this value to pandas without neutralizing spreadsheet control characters. A name beginning with `=`, `+`, `-`, or `@` may be interpreted as a formula when the generated CSV or Excel file is opened in spreadsheet software. Leading whitespace, tab, carriage-return, or newlin ...[truncated 1957 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill describes reading local files and producing output files, but it does not declare any explicit tool scope or permissions boundary. In a resume-processing workflow that handles sensitive personal data, missing scope declarations increase the chance of overbroad file access or unintended writes beyond what the user expected.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This skill processes resumes containing highly sensitive personal data and states it can write records to Feishu Bitable or export Excel/JSON without an explicit user warning or confirmation step. That can lead to unintended disclosure, persistence, or transfer of candidate PII to external systems or local artifacts the user did not mean to create.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file presents all skill guidance and schema descriptions only in Chinese, which can impose a specific language on users without opt-in. Under the language/locale policy, forcing a language without offering choice or justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file presents all usage instructions and taxonomy labels exclusively in Chinese, which can amount to a language/locale policy violation when no user opt-in or explicit regional justification is provided. The rules specifically call for flagging forced language choices in natural-language content.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The top-level docstring, CLI description, and user-facing messages are all written in Chinese, which effectively forces a specific language for user interaction. Under the stated policy, language constraints should not be imposed without offering the user a choice or clearly documenting a justified locale-specific scope.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code extracts and processes sensitive resume data including names, phone numbers, and email addresses, then prints or writes the parsed results to JSON/CSV/Excel files. Although the script performs visible output actions, there is no user-facing warning, comment, or docstring disclosing that personal data will be stored and exported, which is a safety-relevant omission for code handling PII.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The natural-language description and usage guidance are entirely in Chinese, and there is no indication that users may interact in another language or that the Chinese-only behavior is a documented regional requirement. Under the language/locale policy, forcing a specific language without user opt-in can be a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The OCR path forces lang="chi_sim+eng", which imposes a specific language/locale behavior regardless of user needs. This is a language policy issue because the script does not offer a language selection mechanism or explain that it is intentionally limited to Chinese/English resumes.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.