Back to skill

Security audit

Paradiz

Security checks for vulnerabilities and agentic risk

Overview

The skill is a plausible Russian VK booking assistant, but it packages real-looking guest records and uses broad credential and data-sharing behavior that users should review before installation.

Install only if you are comfortable with this skill acting as a full booking/CRM helper, not just a price calculator. Remove packaged guest records, use dedicated Telegram credentials only, disclose and minimize customer data sent to Telegram, define retention/deletion rules, and review database-maintenance scripts before running them.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/save_booking.py:297
Finding

Excessive Transmission of Guest Personal Data to Telegram

Content
View full analysis
None: url = f"https://api.telegram.org/bot{bot_token}/sendMessage" payload = parse.urlencode({ "chat_id": chat_id, "text": text, "disable_web_page_preview": "true", }).encode("utf-8") req = request.Request(url, data=payload, method="POST") with request.urlopen(req, timeout=15) as resp: if resp.status != 200: raise RuntimeError(f"Telegram HTTP {resp.status}") ``` ```python if bot_token and chat_id: text = ( "📌 Новая бронь Парадиз\n" f"Номер брони: {booking_number}\n" f"Статус: {booking_status}\n" f"Гость: {args.guest}\n" f"Телефон: {args.phone}\n" f"Email: {args.email}\n" f"Период: {args.checkin} → {args.checkout}\n" f"Гостей: {args.guests}\n" f"Номер: {args.room}\n" f"Итого: {args.total}\n" f"Предоплата: {args.prepay} ({prepay_state})\n" f"Комментарий: {args.notes or '-'}" ) try: send_telegram(bot_token, chat_id, text) sent = True except Exception as e: err = str(e) ``` ### Technical Analysis When `--notify` is enabled, the script sends a complete booking record to the Telegram Bot API. The transmitted record includes the guest's name, telephone number, email address, travel dates, room details, payment information, and unrestricted notes. Telegram notification is part of the declared workflow, so the network request is not hidden remote exfiltration. However, the payload exceeds data-minimization requirements. The free-form notes field is particularly sensitive because it may contain arrival times, information about children, transportation requirements, or other persona ...[truncated 1211 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/save_booking.py:157
Finding

Unauthorized Fallback to Agent-Wide Telegram Credentials

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
data/bookings.txt:2
Finding

Personal and Booking Records Included in the Distributed Skill Package

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/save_booking.py:128
Finding

Guest-Controlled Values Inserted into DOCX XML Without Escaping

Content
View full analysis
`. A normal name containing an ampersand can therefore produce malformed XML. A deliberately crafted value containing closing and opening XML elements may alter the document structure when inserted in an appropriate placeholder context. The broad exception handler suppresses rendering failures, preventing reliable detection of malformed output. ### Attack Path 1. An attacker supplies a crafted guest, room, amount, or other field containing XML metacharacters or Office XML markup. 2. `save_booking.py` creates the replacement dictionary. 3. `render_booking_dotx()` replaces a placeholder with the raw attacker-controlled string. 4. The generated DOCX contains malformed or attacker-influenced XML. 5. The workflow sends or presents the generated document to a guest or employee. 6. The document may fail to open, display manipulated ...[truncated 458 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/maintain_sync_sqlite.py:11
Finding

Destructive Synchronization Log Cleanup Without Backup or Retention Bounds

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (44)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Instructions to alter SQLite databases, back up data, and synchronize pricing materially exceed the declared task of responding to VK price inquiries. In context, this means the skill could be trusted as a harmless sales helper while actually possessing broad administrative powers over reservation data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Instructions to alter SQLite databases, back up data, and synchronize pricing materially exceed the declared task of responding to VK price inquiries. In context, this means the skill could be trusted as a harmless sales helper while actually possessing broad administrative powers over reservation data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Instructions to alter SQLite databases, back up data, and synchronize pricing materially exceed the declared task of responding to VK price inquiries. In context, this means the skill could be trusted as a harmless sales helper while actually possessing broad administrative powers over reservation data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Instructions to alter SQLite databases, back up data, and synchronize pricing materially exceed the declared task of responding to VK price inquiries. In context, this means the skill could be trusted as a harmless sales helper while actually possessing broad administrative powers over reservation data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Instructions to alter SQLite databases, back up data, and synchronize pricing materially exceed the declared task of responding to VK price inquiries. In context, this means the skill could be trusted as a harmless sales helper while actually possessing broad administrative powers over reservation data.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest advertises only VK price replies, but the body documents full booking operations, database writes, file creation, and Telegram messaging. This is a significant scope-declaration integrity problem because risk assessment, consent, and access provisioning may all be based on the understated manifest.

Content

No source excerpt is available for this finding.

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/price_template.csv (reported line 1)May include surrounding context.

text
Тип номера;Период с;Период по;Гостей от;Гостей до;Питание;Цена за ночь;Валюта;Примечание
Домик Эконом;2026-05-01;2026-06-30;1;4;без питания;2000;₽;Сезон 01.05–30.06
Домик Эконом;2026-07-01;2026-08-31;1;4;без питания;2000;₽;Сезон 01.07–31.08
Домик Эконом;2026-09-01;2026-10-31;1;4;без питания;2000;₽;Сезон 01.09–31.10

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/prices.csv (reported line 1)May include surrounding context.

text
Тип номера;Период с;Период по;Гостей от;Гостей до;Питание;Цена за ночь;Валюта;Примечание
Домик Эконом;2026-05-01;2026-06-30;1;4;без питания;2000;₽;Сезон 01.05–30.06
Домик Эконом;2026-07-01;2026-08-31;1;4;без питания;2000;₽;Сезон 01.07–31.08
Домик Эконом;2026-09-01;2026-10-31;1;4;без питания;2000;₽;Сезон 01.09–31.10

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/prices_human_utf8.csv (reported line 1)May include surrounding context.

text
Тип номера;Период с;Период по;Гостей от;Гостей до;Питание;Цена за ночь;Валюта;Примечание
Домик Эконом;2026-05-01;2026-06-30;1;4;без питания;2000;₽;Сезон 01.05–30.06
Домик Эконом;2026-07-01;2026-08-31;1;4;без питания;2000;₽;Сезон 01.07–31.08
Домик Эконом;2026-09-01;2026-10-31;1;4;без питания;2000;₽;Сезон 01.09–31.10

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill metadata says it should only answer VK clients about pricing, but this script persists full booking records, creates booking IDs, stores contact details, and operationalizes reservations. That is a scope expansion into transaction handling and PII processing, which increases privacy and abuse risk because an assistant intended for quoting can now silently create durable business records.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill documents capabilities to read and write local files, modify SQLite databases, invoke local scripts, and send notifications externally, yet it declares no explicit tool or permission scope. This creates an overbroad operational envelope where an agent could perform sensitive actions without clear least-privilege boundaries or user-visible authorization.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description states the skill should answer customers in VK in Russian, and the rest of the document prescribes Russian-language templates only. There is no opt-in or alternative language handling, so the skill imposes a language choice unconditionally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow instructs collecting guest names, phone numbers, email addresses, booking details, and comments, then relaying some of that data onward, without an explicit privacy notice or data-handling safeguards. In this context, that creates clear risk of unconsented PII processing and broader disclosure than the guest may expect from a simple quote interaction.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill mandates collecting and propagating personal data and free-form comments across multiple logs and channels. Free-text comments often contain extra sensitive details, so copying them widely increases privacy risk, accidental disclosure, and long-term data sprawl.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The instructions require sending booking details to Telegram without a clear warning to the user about third-party transmission. Because Telegram is an external service, this materially changes the data-sharing boundary and can expose personal data to additional systems, operators, or retention policies.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill writes customer data to local text logs, JSONL files, and databases without clearly warning that the information will be persistently stored. Persistent storage of reservation and contact data increases breach impact and may violate user expectations or internal data-governance requirements.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The explicit requirement to preserve client comments in booking journals and Telegram notifications encourages broad duplication of potentially sensitive free-text data. This is risky because comments may include health, family, schedule, or travel details that are not necessary in every destination system.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill includes CRM-style follow-up, segmentation, and retention of guest tags that are not justified by the narrow stated purpose of price quoting. This broadens personal-data use beyond the user's likely expectation and increases privacy and compliance exposure.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Earlier rules explicitly say that 'Парадиз' does not provide meals and the agent must not offer meal-inclusive tariffs or ask about food options. But the mini-template includes 'Включено: <питание/условия>', which conflicts with the stated business rule and could cause the agent to present unsupported meal information.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file stores personally identifiable information including full name, phone number, email address, message history, and booking details in a local lead dataset, which exceeds the skill’s stated purpose of calculating prices and generating short VK replies. If this file is exposed, copied, or retained without strict access controls and data minimization, it creates unnecessary privacy and compliance risk for customers.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code emits multiple user-facing error and status messages in Russian, such as the messages at L036, L050, L057, L077, and L161. Under the policy rule for language/locale, forcing a specific language without user opt-in or clear justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a skill that answers VK clients about vacation pricing from an Excel price list and returns a short sales-oriented response. This file instead performs local database maintenance: deleting old log rows and running VACUUM on a sync.sqlite database, which is not part of the described pricing or response-generation behavior.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Counting rows, deleting historical records from the log table, and vacuuming the database are operational maintenance capabilities, not capabilities obviously required to calculate vacation prices from Excel data or answer VK messages. This gives the skill a data-management function that is unjustified by the manifest’s narrow customer-support purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code performs irreversible maintenance actions by deleting rows from the SQLite log table and vacuuming the database. Although the script name and argparse description hint at cleanup, there is no explicit runtime warning, confirmation prompt, or in-file comment/docstring disclosing that old log data will be removed.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.