Back to skill

Security audit

安全打卡提醒

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent safety-check purpose, but it automatically creates persistent reminders, stores sensitive contact data, and may call a third party without enough user control or cleanup guidance.

Install only if you are comfortable with a skill that stores an emergency phone number and Feishu chat ID in local project files, creates recurring automation, and may call a third party after missed check-ins. Before using it, confirm the emergency contact consents, verify the Feishu destination, and make sure you have a way to list, disable, delete, and expire the scheduled tasks and stored logs.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
Findings (2)

T06 · System Persistence

Error
Location
SKILL.md:16
Finding

Automatic Creation of Persistent Scheduled Tasks

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:16-21
Vulnerability Type: Automatic cross-session scheduled-task persistence
Risk Level: High

Vulnerable Code Snippet

markdown
配置完成后,系统**自动**:
1. 保存配置到 `config/settings.json`
2. 记录今日打卡到 `data/checkins.txt`
3. 创建两个定时任务:
   - 提醒任务:每天设定时间发送飞书提醒
   - 检查任务:提醒后15分钟检查打卡状态

Technical Analysis

The Skill instructs the agent to create two recurring scheduled tasks automatically after configuration. These tasks are intended to survive the initiating interaction and continue sending reminders and checking activity in later sessions.

No explicit final confirmation is required immediately before task creation. The instructions also omit task identifiers, expiration rules, duplicate-task prevention, ownership verification, scheduler restrictions, and a documented removal process. Consequently, repeated activation could produce duplicate tasks, while obsolete tasks could continue operating with stale or attacker-supplied destination information.

The repository contains no executable scripts or scheduler implementation, so exploitation depends on an agent runtime that follows the instructions and has access to a scheduling facility.

Attack Path

  1. A user or attacker activates the Skill.
  2. The actor supplies a reminder time and a Feishu group identifier.
  3. Following SKILL.md, an agent with scheduler permissions automatically creates recurring reminder and check tasks.
  4. The tasks remain active after the original interaction ends.
  5. If configuration becomes stale, is attacker-controlled, or is configured repeatedly, persistent tasks can continue sending messages or initiating follow-up actions without renewed authorization.

Impact Assessment

Exploitation does not grant operating-system privileges beyond those already available to the agent. However, it allows continued use of the agent's scheduling and communication capabilities across ...[truncated 206 chars]

Remediation
View remediation

Remediation Suggestions

  • Require explicit, informed confirmation immediately before creating each scheduled task.
  • Display the schedule, destination, action, expiration date, and potential emergency-call behavior in the confirmation prompt.
  • Use a constrained application scheduler rather than unrestricted system scheduling.
  • Assign stable, unique task identifiers and check for an existing task before creating another.
  • Verify that the configuring user owns or is authorized to use the Feishu destination and emergency contact.
  • Provide commands to list, pause, update, and permanently remove all tasks created by the Skill.
  • Add automatic expiration and require periodic reauthorization.
  • Prevent scheduled tasks from making calls without an additional controlled escalation and confirmation mechanism where feasible.
  • Record task creation and removal events without exposing sensitive contact information.

T09 · Insecure Skill Coding Practices

Warning
Location
data/alerts.txt:3
Finding

Plaintext Storage and Logging of Sensitive Contact Information

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:12-15, SKILL.md:48-68, config/settings.json:3-4, and data/alerts.txt:3
Vulnerability Type: Plaintext storage of personal and safety-related data
Risk Level: Medium

Vulnerable Code Snippets

Configuration fields defined in config/settings.json:

json
{
  "emergency_phone": "",
  "feishu_chat_id": ""
}

A full emergency telephone number recorded in data/alerts.txt:

text
2024-01-08 20:00 | 连续7天未打卡 | 13800138000 | 已通知

The storage behavior specified by SKILL.md:

json
{
  "emergency_phone": "",
  "feishu_chat_id": "oc_xxxxxx",
  "reminder_time": "18:15",
  "last_checkin": "2026-03-13",
  "missed_days": 0,
  "configured": true
}
text
# 时间 | 原因 | 联系人 | 状态
2026-03-20 18:30 | 连续7天未打卡 | phone_num | 已通知

Technical Analysis

The Skill design persists an emergency telephone number, a Feishu group identifier, check-in state, and alert history in ordinary project files. The existing alert record demonstrates that a complete telephone number can be written directly to the log.

No file-permission requirements, encryption, credential-store integration, log redaction, retention period, consent record, or secure deletion procedure is specified. Any local account, process, backup service, synchronization tool, or artifact collector with read access to the project directory may therefore obtain the stored contact information and infer safety-related activity.

The exposure requires read access to the repository or its copies; the audited files do not independently provide remote access or privilege escalation.

Attack Path

  1. The Skill collects an emergency telephone number and Feishu group identifier during configuration.
  2. The agent writes those values to config/settings.json.
  3. When an alert occurs, the full emergency telephone number is written to data/alerts.txt.
  4. A local pro ...[truncated 724 chars]
Remediation
View remediation

Remediation Suggestions

  • Store emergency contact information and communication credentials in a protected operating-system or platform credential store.
  • If file storage is unavoidable, encrypt sensitive values and restrict permissions to the minimum required account.
  • Replace full telephone numbers in logs with redacted forms, such as *******8000, or a non-sensitive contact identifier.
  • Do not include Feishu identifiers or other sensitive destinations in routine logs.
  • Define a short, documented retention period for check-in and alert data.
  • Provide user-accessible deletion, export, and consent-revocation controls.
  • Ensure backups and exported artifacts apply the same access controls and retention policy.
  • Validate that diagnostic output and error handling cannot reveal decrypted contact information.
  • Document the purpose, storage duration, and recipients of collected personal data before configuration.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README instructs users to provide an emergency phone number, Feishu group ID, and reminder time, then states the system will automatically save configuration, create scheduled tasks, send reminders, monitor check-ins, and place calls after 7 days, but it gives no warning about sensitive data storage, retention, consent, or the fact that external actions will occur automatically. This is dangerous because users may unknowingly authorize persistent monitoring and outbound communications affecting third parties, increasing privacy, abuse, and unauthorized-action risks.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill collects and stores an emergency contact phone number, stores chat identifiers, and performs automatic external communications, including calling a third party after seven days of inactivity, without prominent warnings or consent language. This is dangerous because it combines sensitive personal data retention with autonomous outreach, creating privacy, consent, and abuse risks if configured incorrectly or triggered unexpectedly.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The activation phrase "安全签到" is generic and the README provides no scope restrictions, confirmation step, or channel limitations before the skill begins collecting sensitive data and configuring automation. In a skill that stores emergency contact information and sets up scheduled reminders and phone calls, an overly broad trigger increases the chance of accidental invocation, unintended setup, or social engineering-driven activation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

All user-facing instructions, trigger phrases, and reminder messages in the skill are specified only in Chinese, such as the activation keywords and the Feishu reminder text. The file does not indicate that the skill is region-specific or provide user opt-in or alternatives for language/locale, which can violate language-choice policy expectations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The activation condition is underspecified because generic phrases like '打卡' or '安全签到' can be triggered in ordinary conversation, causing the skill to begin collecting sensitive contact information or initiate setup unexpectedly. In a skill that stores emergency contact data and creates autonomous scheduled actions, accidental activation increases the risk of unauthorized configuration and unintended downstream notifications.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The only natural-language instructions in the file are written in Chinese, which imposes a specific language context without any opt-in or documented justification. Under the policy, locale or language constraints should either be optional for the user or clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.