Back to skill

Security audit

PowPow ثبت‌نام — ثبت‌نام کنید، سفرنامه را روی نقشه پین کنید و با انسان دیجیتال گفت‌وگو کنید

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent and not malicious, but it should go to Review because it handles passwords, verification codes, bearer login links, session tokens, and payment setup with limited default security disclosure.

Install only if you are comfortable letting the agent help create a PowPow account, handle your email verification code, process a password via environment variable, temporarily store a session token locally, and send one-click login links in chat. Treat those links like account access tokens, run cleanup when finished, and complete payment only on the official Alipay or PayPal pages.

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
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (306)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
94% confidence
Finding

The manifest describes an agent-driven flow that collects user identity data, handles email verification, uploads avatars, creates login links, and participates in payment initiation and payment-status tracking. In skill metadata, such broad authority is dangerous because it encourages the agent to operate on behalf of the user across authentication and commerce boundaries, increasing the blast radius if the skill is misused, compromised, or executed in an untrusted environment.

Content

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

md
---
name: powpow-register
description: به کاربران کمک می‌کند ثبت‌نام PowPow (Bubble) و ورود با یک کلیک را کاملاً داخل گفتگو تمام کنند. ایجنت به جای کاربر فرم را پر می‌کند (از جمله آپلود آواتار) و کد تأیید ایمیل را می‌فرستد؛ کاربر فقط اطلاعات پایه را می‌دهد و کد تأیید را یک بار بررسی می‌کند — بدون آنکه گفتگو را ترک کند. پلتفرم هم‌اکنون در دوره آزمایشی رایگان است: حساب �

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- اسکریپت اصلی `scripts/powpow-register.mjs`: **بدون وابستگی**، به **Node ≥ 18** نیاز دارد. پیش از شروع یک بار `node scripts/powpow-register.mjs status` را اجرا

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

This step instructs the agent to create and send a one-click login link that places the user directly into an authenticated session. Magic-login links are bearer tokens; if they are exposed in chat logs, previews, analytics, browser history, or to the wrong recipient, they can enable unauthorized account access without a password.

Content

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

text
   node scripts/powpow-register.mjs login-link --target home
  1. لینک را برای کاربر بفرست: کلیک کند و مستقیم در صفحه اصلی، در حالت واردشده قرار بگیرد. پلتفرم هم‌اکنون در دوره آزمایشی رایگان است — بعد از ثبت‌نام همه قابلیت‌ها (فید، نقشه، انسان دیجیتال، چک‌این و غیره) قابل استفاده است، پرداخت لازم نیست.
  2. از کاربر بخواه تأیید کند که وارد شده؛ دو حالت دارد:
    • روی صفحه اصلی افتاد → مستقیم به گام 8 برای جمع‌بندی برو؛ ثبت‌نام کامل است؛
    • روی صفحه اشتراک افتاد → دوره آزمایشی رایگان پلتفرم تمام شده است؛ به کاربر بگو «دوره آزمایشی رایگان تمام شد، الان اشتراک عضویت لازم است»، سپس برای تکمیل اشتراک گام 7 را دنبال کن، و بعد از اشتراک به گام 8 برگرد.

Hidden Instructions

High
Category
Prompt Injection
Confidence
92% confidence
Finding

This line directs the agent to send a login link targeting a pending/subscription page while already authenticated. As with the home-target login link, this is effectively a bearer authentication token and can be replayed by anyone who gains access to the URL, exposing account session state and enabling unauthorized actions.

Content

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

  1. اگر کاربر خودش ارتقا یا حمایت از پلتفرم را بخواهد → به گام 7 هم برو (اشتراک داوطلبانه است؛ اصرار نکن).

گام 7: ارتقای اشتراک (اختیاری — فقط وقتی گام 6 ایجاب کند)

  1. اول لینک ورود نیمه‌کاره را بفرست تا صفحه بازگشت بعد از پرداخت درست «پرداخت موفق» را نشان دهد:
    text
    node scripts/powpow-register.mjs login-link --target pending
    

Hidden Instructions

High
Category
Prompt Injection
Confidence
95% confidence
Finding

The skill instructs the agent to execute a system-level command to open a locally generated payment page file using start, open, or xdg-open. If the returned file path or associated handler is malicious, tampered with, or insufficiently validated, this creates command/argument-injection and unsafe local execution risk, especially because it crosses from application logic into OS command execution.

Content

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

text
     node scripts/powpow-register.mjs create-order --provider paypal
     ```
   اسکریپت مسیر فایل صفحه پرداخت را برمی‌گرداند؛ **مستقیم با دستور سیستم بازش کن** (Windows: `start <file>`؛ macOS: `open <file>`؛ Linux: `xdg-open <file>`). مرورگر به‌طور خودکار به صندوق رسمی Alipay/PayPal می‌رود، جایی که کاربر پرداخت یا مجوز صورت‌حساب را تکمیل می‌کند.
4. هر 10–15 ثانیه `query` را اجرا کن تا `paid` یا `ACTIVE` برگردد (واریز/مجوز معمولاً چند ثانیه تا یک دقیقه طول می‌کشد). اگر کاربر صفحه پرداخت را وسط کار بست → فقط `create-order` را دوباره انجام بده (سفارش‌های قدیمی / اشتراک‌های معلق بعد از 2 ساعت خودکار بسته یا منقضی می‌شوند؛ بی‌خیال شو).
5. کانال کد QR WeChat دستی تأیید می‌شود و واریز ممکن است دیر بیاید؛ Huawei IAP فقط داخل اپلیکیشن HarmonyOS در دسترس است. این اسکیل آن دو را انجام نمی‌دهد — بعد از پرداخت، کاربر برمی‌گردد و به ایجنت خبر می‌دهد، ایجنت اول `whoami` را برای تأیید واریز اجرا می‌کند، سپس لینک صفحه اصلی را طبق بند 6 زیر می‌فرستد.
6. بعد از تأیید واریز، با newest claim اشتراک به حالت ورود تازه تبدیل کن، سپس لینک را مستقیم به صفحه اصلی بفرست:

Hidden Instructions

High
Category
Prompt Injection
Confidence
87% confidence
Finding

The instruction to poll payment status every 10–15 seconds can create unnecessary automated load and may encourage long-lived unattended loops in the agent environment. In the context of payment/order APIs, aggressive polling can amplify rate-limit issues, leak behavioral telemetry, and create denial-of-service or cost concerns if applied at scale.

Content

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

node scripts/powpow-register.mjs create-order --provider paypal ``` اسکریپت مسیر فایل صفحه پرداخت را برمی‌گرداند؛ مستقیم با دستور سیستم بازش کن (Windows: start <file>؛ macOS: open <file>؛ Linux: xdg-open <file>). مرورگر به‌طور خودکار به صندوق رسمی Alipay/PayPal می‌رود، جایی که کاربر پرداخت یا مجوز صورت‌حساب را تکمیل می‌کند. 4. هر 10–15 ثانیه query را اجرا کن تا paid یا ACTIVE برگردد (واریز/مجوز معمولاً چند ثانیه تا یک دقیقه طول می‌کشد). اگر کاربر صفحه پرداخت را وسط کار بست → فقط create-order را دوباره انجام بده (سفارش‌های قدیمی / اشتراک‌های معلق بعد از 2 ساعت خودکار بسته یا منقضی می‌شوند؛ بی‌خیال شو). 5. کانال کد QR WeChat دستی تأیید می‌شود و واریز ممکن است دیر بیاید؛ Huawei IAP فقط داخل اپلیکیشن HarmonyOS در دسترس است. این اسکیل آن دو را انجام نمی‌دهد — بعد از پرداخت، کاربر برمی‌گردد و به ایجنت خبر می‌دهد، ایجنت اول whoami را برای تأیید واریز اجرا می‌کند، سپس لینک صفحه اصلی را طبق بند 6 زیر می‌فرستد. 6. بعد از تأیید واریز، با newest claim اشتراک به حالت ورود تازه تبدیل کن، سپس لینک را مستقیم به صفحه اصلی بفرست:

text

Hidden Instructions

High
Category
Prompt Injection
Confidence
91% confidence
Finding

This step combines payment-confirmation logic with later session refresh, implying the agent maintains and acts on authenticated state after payment events. In a registration-and-payment flow, such persistent session handling becomes more dangerous because leakage or misuse of refreshed session artifacts can let an attacker hijack newly upgraded accounts.

Content

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

text
   اسکریپت مسیر فایل صفحه پرداخت را برمی‌گرداند؛ **مستقیم با دستور سیستم بازش کن** (Windows: `start <file>`؛ macOS: `open <file>`؛ Linux: `xdg-open <file>`). مرورگر به‌طور خودکار به صندوق رسمی Alipay/PayPal می‌رود، جایی که کاربر پرداخت یا مجوز صورت‌حساب را تکمیل می‌کند.
4. هر 10–15 ثانیه `query` را اجرا کن تا `paid` یا `ACTIVE` برگردد (واریز/مجوز معمولاً چند ثانیه تا یک دقیقه طول می‌کشد). اگر کاربر صفحه پرداخت را وسط کار بست → فقط `create-order` را دوباره انجام بده (سفارش‌های قدیمی / اشتراک‌های معلق بعد از 2 ساعت خودکار بسته یا منقضی می‌شوند؛ بی‌خیال شو).
5. کانال کد QR WeChat دستی تأیید می‌شود و واریز ممکن است دیر بیاید؛ Huawei IAP فقط داخل اپلیکیشن HarmonyOS در دسترس است. این اسکیل آن دو را انجام نمی‌دهد — بعد از پرداخت، کاربر برمی‌گردد و به ایجنت خبر می‌دهد، ایجنت اول `whoami` را برای تأیید واریز اجرا می‌کند، سپس لینک صفحه اصلی را طبق بند 6 زیر می‌فرستد.
6. بعد از تأیید واریز، با newest claim اشتراک به حالت ورود تازه تبدیل کن، سپس لینک را مستقیم به صفحه اصلی بفرست:

POWPOW_REGISTER_PASSWORD=<رمز عبور> node scripts/powpow-register.mjs refresh-login

Hidden Instructions

High
Category
Prompt Injection
Confidence
92% confidence
Finding

Sending a post-payment authenticated link to the home page again relies on bearer-style session URLs. Because the account is now in a paid or fully activated state, interception of that link has higher impact, potentially granting access to premium features and account data.

Content

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

node scripts/powpow-register.mjs login-link --target home

text
لینک را برای کاربر بفرست: **کلیک کند و مستقیم در صفحه اصلی با حالت عضویت کامل قرار بگیرد**.
## گام 8: جمع‌بندی

1. `node scripts/powpow-register.mjs cleanup` را برای پاک‌سازی فایل‌های حالت موقت محلی (اعتبارنامه جلسه) اجرا کن.
2. به کاربر یک «کارت حساب» بده: نام کاربری، ایمیل (رمز عبور دیگر نشان داده نمی‌شود — در حالت تولید، از کاربر خواسته شده بود هنگام تولید ذخیره کند؛ اگر کاربر خودش تعیین کرده، خودش می‌داند).

Hidden Instructions

High
Category
Prompt Injection
Confidence
88% confidence
Finding

The skill explicitly tells the agent not to discuss password security unless asked. In a flow where the agent collects credentials, generates passwords, and sends authenticated links, suppressing default security messaging increases the risk that users mishandle credentials or fail to recognize sensitive operations.

Content

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

👉 الان کار تو: در ایمیل دنبال کد تأیید ۶ رقمی بگرد و مستقیم برایم بفرست (به محض رسیدن، اکانت را فوراً می‌سازم)

text
- **درباره رمز عبور از خودتان موعظه امنیتی نکنید**؛ تا کاربر نپرسد سازوکار داخلی، محدودیت‌ها یا طراحی امنیتی را توضیح ندهید.
- در حالت انجام‌کار توسط ایجنت گزارش پیشرفت مهم‌تر هم هست: بعد از هر مرحله اسکریپت با یک جمله بگویید الان چه شد («اکانت ساخته شد» «صفحه پرداخت را برایت باز کردم»).

## قوانین سخت

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

The repeated P2 detections strongly suggest invisible Unicode control characters or zero-width characters embedded throughout the document. Hidden text in operational documentation is dangerous because it can conceal instructions, alter rendered meaning versus copied meaning, or create review-evasion conditions for downstream agents and maintainers.

Content

Scanner excerpt · references/registration-flow.md (reported line 1)May include surrounding context.

md
# جزئیات فرایند ثبت‌نام — powpow-register

برای مراجعه هنگام رفع مشکل. همه قوانین از سورس‌کد پلتفرم می‌آیند (اعتبارسنجی یکپارچه فرانت و بک Next.js)، با ذکر منبع.
با به‌روزرسانی پلتفرم، رفتار واقعی آنلاین ملاک است.

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

Invisible characters near headings and narrative text can be used to smuggle instructions that are not obvious in normal rendering. In an agent-skill context, this raises the risk of prompt/instruction hiding, review bypass, and inconsistent interpretation between tooling layers.

Content

Scanner excerpt · references/registration-flow.md (reported line 3)May include surrounding context.

md
# جزئیات فرایند ثبت‌نام — powpow-register

برای مراجعه هنگام رفع مشکل. همه قوانین از سورس‌کد پلتفرم می‌آیند (اعتبارسنجی یکپارچه فرانت و بک Next.js)، با ذکر منبع.
با به‌روزرسانی پلتفرم، رفتار واقعی آنلاین ملاک است.

## نقاط ورود

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

Hidden characters around section boundaries can disguise content or interfere with security review workflows. Even if not overtly malicious here, the pattern creates an opportunity for adversarial instruction smuggling in skill content that should be treated as untrusted.

Content

Scanner excerpt · references/registration-flow.md (reported line 4)May include surrounding context.

md
# جزئیات فرایند ثبت‌نام — powpow-register

برای مراجعه هنگام رفع مشکل. همه قوانین از سورس‌کد پلتفرم می‌آیند (اعتبارسنجی یکپارچه فرانت و بک Next.js)، با ذکر منبع.
با به‌روزرسانی پلتفرم، رفتار واقعی آنلاین ملاک است.

## نقاط ورود

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

Embedding invisible characters in entry-point descriptions can cause copied URLs, labels, or surrounding prose to differ from what reviewers visually inspect. That gap between appearance and actual content is a common review-evasion vector in adversarial text supplied to agents.

Content

Scanner excerpt · references/registration-flow.md (reported line 8)May include surrounding context.

md
## نقاط ورود

- صفحه ثبت‌نام: https://global.powpow.online/register
- صفحه لاگین: https://global.powpow.online/login
- صفحه اشتراک: https://global.powpow.online/subscription
- اگر از لینک اشتراک‌گذاری و غیره با `?next=...` وارد شوید، بعد از اتمام ثبت‌نام + پرداخت خودکار به صفحه قبلی برمی‌گردید.

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

Invisible characters in structural markdown make the document harder to audit and can hide prompt-like content from humans while remaining present for machine processing. In a skill file, this is security-relevant because the skill content is untrusted and may influence agent behavior or operator decisions.

Content

Scanner excerpt · references/registration-flow.md (reported line 11)May include surrounding context.

md
- صفحه ثبت‌نام: https://global.powpow.online/register
- صفحه لاگین: https://global.powpow.online/login
- صفحه اشتراک: https://global.powpow.online/subscription
- اگر از لینک اشتراک‌گذاری و غیره با `?next=...` وارد شوید، بعد از اتمام ثبت‌نام + پرداخت خودکار به صفحه قبلی برمی‌گردید.

## فیلدهای فرم و قوانین

Hidden Instructions

High
Category
Prompt Injection
Confidence
93% confidence
Finding

Hidden characters inside validation-rule tables can conceal subtle text differences or instructions that are not visible in rendered markdown. That undermines trustworthy review of security-sensitive process documentation such as registration and verification flows.

Content

Scanner excerpt · references/registration-flow.md (reported line 15)May include surrounding context.

md
## فیلدهای فرم و قوانین

| فیلد | اجبار | قانون | منبع سورس‌کد |
|---|---|---|---|
| عکس پروفایل | اختیاری | تصویر ≤5MB، SVG پشتیبانی نمی‌شود؛ سرور خودکار فشرده می‌کند (بیش از 100KB به 400×400 / کیفیت 90) | `src/app/api/auth/register/route.ts` |
| نام کاربری | اجباری | ۲ تا ۵۰ نویسه، بعد از trim با **حروف کوچک** ذخیره می‌شود (Tom و tom یک نام کاربری حساب می‌شوند، در ثبت‌نام و لاگین هر دو بدون حساسیت به بزرگی/کوچکی) | همان (zod schema) |