Back to skill

Security audit

Reminder Engine Free

Security checks for vulnerabilities and agentic risk

Overview

This reminder skill is mostly purpose-aligned, but it puts user-written reminder text into the agent’s main session as a system event and relies on incomplete validation.

Review before installing. This skill can create scheduled reminder jobs and deliver them to Discord or Telegram using the current session context. The main risk is that reminder text may be processed as a main-session system event rather than inert notification text, so avoid using it for reminders from untrusted people or sensitive conversations unless the implementation isolates reminder delivery and confirms the recipient and time.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:118
Finding

User-Controlled Reminder Content Is Promoted to a Main-Session System Event

Content
View full analysis
< \" or dangerous commands" exit 1 fi SESSION_INFO=$(session_status) AGENT=$(echo "$SESSION_INFO" | jq -r '.deliveryContext.accountId') TO=$(echo "$SESSION_INFO" | jq -r '.deliveryContext.to') REMIND_AT=$(date -u -d "$USER_TIME" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null) if [ -z "$REMIND_AT" ]; then echo "Error: unable to parse time '$USER_TIME'" echo "Supported formats: 30s/5m/2h/1d or 3pm/today 15:00" exit 1 fi NOW=$(date -u +"%Y-%m-%dT%H:%M:%SZ") if [[ "$REMIND_AT" < "$NOW" ]]; then echo "Error: reminder time must be in the future" exit 1 fi JOB_ID=$(skill-platform cron add \ --name "reminder-$(date +%s)" \ --at "$REMIND_AT" \ --session main \ --system-event "$TASK_CONTENT" \ --agent "$AGENT" \ --announce \ --channel "$CHANNEL" \ --to "$TO" \ --delete-after-run \ --output json | jq -r '.id') ``` The associated validation is a shell-oriented blacklist: ```bash CONTENT="$1" if [[ "$CONTENT" =~ \$\(.*\) ]] || [[ "$CONTENT" =~ '`' ]]; then echo "Reject: contains command substitution" exit 1 fi if [[ "$CONTENT" =~ [;\|&\>\<] ]]; then echo "Reject: contains shell metacharacters" exit 2 fi if [[ "$CONTENT" =~ [\"] ]]; then echo "Reject: contains double quotes" exit 3 fi if [[ "$CONTENT" =~ $'\n' ]]; then echo "Reject: contains a newline" exit 4 fi DANGEROUS=("sudo" "rm " "wget " "curl " "bash " "sh " "chmod " "chown ") for cmd in "${DANGEROUS[@]}"; do if [[ "$CONTENT" =~ ^$cmd ]] || [[ ...[truncated 3957 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (15)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 262)May include surrounding context.

  • 危险命令:sudo、rm、wget、curl、bash等

示例: ❌ "提醒我运行 rm -rf /tmp" ✅ "提醒我清理临时目录"

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 396)May include surrounding context.

  • 危险命令:sudo、rm、wget、curl、bash等

示例: ❌ "提醒我运行 rm -rf /tmp" ✅ "提醒我清理临时目录"

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 400)May include surrounding context.

  • 危险命令:sudo、rm、wget、curl、bash等

示例: ❌ "提醒我运行 rm -rf /tmp" ✅ "提醒我清理临时目录"

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 262)May include surrounding context.

  • 危险命令:sudo、rm、wget、curl、bash等

示例: ❌ "提醒我运行 rm -rf /tmp" ✅ "提醒我清理临时目录"

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 262)May include surrounding context.

  • 危险命令:sudo、rm、wget、curl、bash等

示例: ❌ "提醒我运行 rm -rf /tmp" ✅ "提醒我清理临时目录"

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 396)May include surrounding context.

场景描述:用户尝试创建包含危险命令的提醒,引擎拒绝并提示重新表述。

bash
./scripts/sanitize-message.sh "运行 rm -rf /tmp"
echo "抱歉,你的任务内容包含非法字符,请重新表述。"
echo "请避免使用:sudo、rm、wget、curl、bash等危险命令"
echo "示例:"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 400)May include surrounding context.

场景描述:用户尝试创建包含危险命令的提醒,引擎拒绝并提示重新表述。

bash
./scripts/sanitize-message.sh "运行 rm -rf /tmp"
echo "抱歉,你的任务内容包含非法字符,请重新表述。"
echo "请避免使用:sudo、rm、wget、curl、bash等危险命令"
echo "示例:"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 396)May include surrounding context.

场景描述:用户尝试创建包含危险命令的提醒,引擎拒绝并提示重新表述。

bash
./scripts/sanitize-message.sh "运行 rm -rf /tmp"
echo "抱歉,你的任务内容包含非法字符,请重新表述。"
echo "请避免使用:sudo、rm、wget、curl、bash等危险命令"
echo "示例:"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 396)May include surrounding context.

场景描述:用户尝试创建包含危险命令的提醒,引擎拒绝并提示重新表述。

bash
./scripts/sanitize-message.sh "运行 rm -rf /tmp"
echo "抱歉,你的任务内容包含非法字符,请重新表述。"
echo "请避免使用:sudo、rm、wget、curl、bash等危险命令"
echo "示例:"

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest and surrounding documentation consistently position the skill as a one-time reminder creation engine with time parsing, safety checks, delivery, confirmation, and basic lifecycle management. However, the capability coverage text abruptly claims use for project management, task planning, progress tracking, and team collaboration, plus create/query/export operations, which are not justified by or implemented within the stated reminder-engine purpose.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

L335 将该技能的覆盖范围扩展到“项目管理、任务规划、进度跟踪、团队协作”等大量通用场景关键词,这些表述与“一次性提醒创建”并不等价,且没有给出明确的触发边界或排除条件。对于 manifest/markdown 类文件,这种宽泛自然语言触发范围容易与日常对话重叠,导致技能在非提醒场景下被意外调用。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

L460-L462 明确将该技能定位为“完全中文化表达”,但文档未提供语言选择、用户 opt-in,或说明其为何必须限制为中文。按自然语言政策要求,强制单一语言/locale 而不给用户选择可能构成语言/地区策略违规。

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill reads session_status and reuses deliveryContext.accountId and deliveryContext.to for message delivery without clearly requiring user confirmation of the target destination. In an agent environment, implicit reuse of session routing data can cause reminders or system-event content to be delivered to an unintended channel or identity, creating a confidentiality and integrity risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The confirmation-reply section explicitly instructs not to show users the specific cron command. Elsewhere in the same skill file, quick-start and scenario sections expose full skill-platform cron add command lines as the prescribed interaction flow, which contradicts that stated intent rather than merely omitting detail.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

L311-L321 展示了 cron add、cron run 和 cron remove 等会创建、触发或删除作业的命令,这些都属于会影响系统状态的数据修改操作。虽然文档描述了功能,但缺少显式的用户警示,未提醒用户这些命令会立即对现有提醒任务产生持久性影响。

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.