Back to skill

Security audit

raai-price-probe-dogovornaya-20260421

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed customer-support automation package, but it asks for broad credentials and describes automated customer, CRM, and refund actions without enough scoping or approval controls.

Review this before installing in a real support environment. Use least-privilege, integration-specific credentials only after enabling a specific integration, avoid exposing model provider keys directly to the skill, require human approval for refunds and externally sent customer replies, and add privacy/data-retention rules for CRM and customer-message handling.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
build.sh:11
Finding

PowerShell Command Injection Through Unvalidated Version Input

Content
View full analysis
Building $ZIP_NAME (ver=$VER)" ``` ```bash elif command -v powershell.exe >/dev/null 2>&1 || command -v powershell >/dev/null 2>&1; then PSH="$(command -v powershell.exe 2>/dev/null || command -v powershell)" WIN_SRC="$(cygpath -w "$(pwd)/$(basename "$STAGE_DIR")" 2>/dev/null || echo "$(pwd)/$(basename "$STAGE_DIR")")" WIN_OUT="$(cygpath -w "$OUT_DIR/$ZIP_NAME" 2>/dev/null || echo "$OUT_DIR/$ZIP_NAME")" "$PSH" -NoProfile -Command "Compress-Archive -Path '${WIN_SRC}' -DestinationPath '${WIN_OUT}' -Force" ``` ### Technical Analysis The first positional argument is accepted as `VER` without format validation. This attacker-controlled value is incorporated into `OUT_DIR`, `ZIP_NAME`, and ultimately `WIN_OUT`. The PowerShell fallback embeds `WIN_OUT` directly into source code passed through PowerShell's `-Command` option: ```powershell Compress-Archive -Path '${WIN_SRC}' -DestinationPath '${WIN_OUT}' -Force ``` Although the paths are enclosed in PowerShell single quotes, a single quote contained in `VER` can terminate the string literal. The remainder of the value can then introduce additional PowerShell statements. Shell quoting at the Bash layer does not prevent this because the vulnerable interpretation occurs later when PowerShell parses the constructed command string. The absence of validation also permits path separators and traversal components in `VER`, potentially moving output files outside the intend ...[truncated 1602 chars]
Remediation
View remediation
&2 exit 1 fi ``` 2. For a strict release process, allow only semantic versions: ```bash if [[ ! "$VER" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "ERROR: version must use X.Y.Z format" >&2 exit 1 fi ``` 3. Explicitly reject path and command metacharacters, including quotes, slashes, backslashes, semicolons, whitespace, dollar signs, backticks, and traversal sequences. 4. Do not interpolate paths into PowerShell program text. Pass them as encoded or positional arguments to a fixed script block. For example, invoke a checked PowerShell script file whose parameters are bound by PowerShell rather than concatenated into `-Command`. 5. Resolve and verify the final output path before creating directories or archives. Confirm that it remains under the intended parent directory. 6. Add regression tests using versions containing single quotes, semicolons, whitespace, path separators, and `..`, and assert that every such value is rejected. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:5
Finding

Excessive Declaration of High-Value Environment Credentials

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (56)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill advertises CRM integration, customer history handling, and messaging-channel support but does not warn that personal data, complaint details, contact information, order history, and possibly financial context may be transmitted to third-party AI providers and external systems. This omission is dangerous because operators may enable the skill in production without understanding data-flow, consent, retention, or cross-system disclosure risks.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · install.sh (reported line 30)May include surrounding context.

sh
cp "$SRC_DIR/SKILL.md" "$SRC_DIR/config.yaml" "$SRC_DIR/README.md" "$SRC_DIR/install.sh" "$SRC_DIR/.env.example" "$TARGET/"
cp -r "$SRC_DIR/docs" "$SRC_DIR/examples" "$SRC_DIR/proof" "$SRC_DIR/test" "$TARGET/"
chmod +x "$TARGET/install.sh" "$TARGET/test/smoke-test.sh" 2>/dev/null || true
echo "[✓] Файлы скопированы в $TARGET" # 3. Создать .env из шаблона если нет
if [[ ! -f "$TARGET/.env" ]]; then cp "$SRC_DIR/.env.example" "$TARGET/.env" echo "[✓] Создан $TARGET/.env (заполнять только если нужны интеграции)"
else echo "[i] $TARGET/.env уже существует — не перезаписываю"
fi # 4. Напомнить про OBLIGATORY-поля

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · install.sh (reported line 31)May include surrounding context.

sh
cp "$SRC_DIR/SKILL.md" "$SRC_DIR/config.yaml" "$SRC_DIR/README.md" "$SRC_DIR/install.sh" "$SRC_DIR/.env.example" "$TARGET/"
cp -r "$SRC_DIR/docs" "$SRC_DIR/examples" "$SRC_DIR/proof" "$SRC_DIR/test" "$TARGET/"
chmod +x "$TARGET/install.sh" "$TARGET/test/smoke-test.sh" 2>/dev/null || true
echo "[✓] Файлы скопированы в $TARGET" # 3. Создать .env из шаблона если нет
if [[ ! -f "$TARGET/.env" ]]; then cp "$SRC_DIR/.env.example" "$TARGET/.env" echo "[✓] Создан $TARGET/.env (заполнять только если нужны интеграции)"
else echo "[i] $TARGET/.env уже существует — не перезаписываю"
fi # 4. Напомнить про OBLIGATORY-поля

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · install.sh (reported line 32)May include surrounding context.

sh
cp "$SRC_DIR/SKILL.md" "$SRC_DIR/config.yaml" "$SRC_DIR/README.md" "$SRC_DIR/install.sh" "$SRC_DIR/.env.example" "$TARGET/"
cp -r "$SRC_DIR/docs" "$SRC_DIR/examples" "$SRC_DIR/proof" "$SRC_DIR/test" "$TARGET/"
chmod +x "$TARGET/install.sh" "$TARGET/test/smoke-test.sh" 2>/dev/null || true
echo "[✓] Файлы скопированы в $TARGET" # 3. Создать .env из шаблона если нет
if [[ ! -f "$TARGET/.env" ]]; then cp "$SRC_DIR/.env.example" "$TARGET/.env" echo "[✓] Создан $TARGET/.env (заполнять только если нужны интеграции)"
else echo "[i] $TARGET/.env уже существует — не перезаписываю"
fi # 4. Напомнить про OBLIGATORY-поля

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · install.sh (reported line 31)May include surrounding context.

sh
cp -r "$SRC_DIR/docs" "$SRC_DIR/examples" "$SRC_DIR/proof" "$SRC_DIR/test" "$TARGET/"
chmod +x "$TARGET/install.sh" "$TARGET/test/smoke-test.sh" 2>/dev/null || true
echo "[✓] Файлы скопированы в $TARGET" # 3. Создать .env из шаблона если нет
if [[ ! -f "$TARGET/.env" ]]; then cp "$SRC_DIR/.env.example" "$TARGET/.env" echo "[✓] Создан $TARGET/.env (заполнять только если нужны интеграции)"
else echo "[i] $TARGET/.env уже существует — не перезаписываю"
fi # 4. Напомнить про OBLIGATORY-поля
echo ""

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.

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.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly describes processing customer requests, CRM cards, refunds, sentiment, LTV, statuses, and support reports, but does not warn about handling sensitive personal or business data, data minimization, access controls, or required human approval before consequential actions. In a support-automation context, this creates a real risk of unauthorized exposure of customer data and unsafe automated decisions such as refunds, escalations, or customer-facing responses without appropriate review.

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.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description explicitly states "Русский язык нативно" and repeats "Russian language native," presenting the skill as inherently language-specific. The file does not offer a language choice, opt-in mechanism, or clear compliance-based justification for restricting operation to Russian.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger list includes very broad phrases such as 'тикет', 'helpdesk', 'customer support', and 'карточка клиента', which can cause the skill to activate in unrelated conversations. In a support automation skill with CRM access and automated routing behavior, accidental invocation can expose customer data or trigger workflow actions without clear user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill describes automated categorization, SLA tracking, escalation, and customer replies, but it does not clearly warn users that it may autonomously affect live customer communications and internal escalation workflows. In a customer-support context, such hidden automation can create reputational damage, incorrect commitments, or inappropriate escalation if operators assume the skill is advisory only.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Stating that the skill should process 'any incoming customer message' creates an effectively universal activation condition. In context, this is more dangerous because the skill is designed to classify messages, query CRM history, create tickets, and send automated responses, so ambiguous activation can lead to unintended handling of sensitive communications and unauthorized operational actions.

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.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script asserts it is the only valid way to build the ZIP, then automatically unpacks the produced archive and executes a bundled test/smoke-test.sh from that fresh artifact. This creates an unnecessary code-execution path during packaging, so anyone running the build implicitly trusts and executes repository-controlled test content, increasing supply-chain risk if the test script is modified maliciously.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file’s natural-language instructions and warnings are written in Russian only, including the usage guidance and build policy notes. This imposes a specific language on users without offering an opt-in choice or documenting a justified locale restriction, which matches the language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrases are broad, generic support-operation requests that could match ordinary user prompts and cause unintended skill activation. In an agent environment, ambiguous activation can lead to the wrong workflow, instructions, or automation being applied, which may mis-handle customer support decisions or expose internal operating guidance in the wrong context.

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.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file repeatedly presents Russian language support as an exclusive defining behavior, culminating in "все 3 конкурента EN-only" and implying the skill is specifically Russian-only. Under the policy, forcing a specific language without user opt-in or clear justification is a natural-language policy concern.

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.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

The configuration enables autonomous approval of returns under a monetary threshold (auto_approve_return_under_rub: 1000) without any visible fraud checks, identity verification, or human review gates. In a customer-support automation context, this could allow abuse through scripted claims, repeated low-value refund requests, or manipulation of ticket categorization to trigger unauthorized financial actions.

Content

Scanner excerpt · config.yaml (reported line 27)May include surrounding context.

yaml
# TONE-OF-VOICE
# ═══════════════════════════════════════════════════ tone: default: "дружелюбный деловой" on_negative_sentiment: "спокойный эмпатичный" on_vip: "персональный профессиональный" on_legal_threat: "нейтральный официальный" address_form: "вы" use_emoji: false response_length: "medium" # ═══════════════════════════════════════════════════
# ВОЗВРАТЫ
# ═══════════════════════════════════════════════════ returns: return_policy_days: 14 return_processing_days: "5-7 рабочих" auto_approve_return_under_rub: 1000 requires_reason_code: true # ═══════════════════════════════════════════════════
# CRM-ИНТЕГРАЦИЯ (опционально)
# ═══════════════════════════════════════════════════ crm: enabled: false type: "bitrix24" # bitrix24 / amocrm / hubspot / freshdesk / zendesk api_url: "" api_key: "" auto_create_ticket: true auto_update_client_card: true required_fields: - "client_id" - "ticket_category" - "priority" - "channel" - "status" # ═══════════════════════════════════════════════════
# КАЧЕСТВО И NPS/CSAT

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The config explicitly sets language: "ru", which imposes a single language/locale behavior. The file does not provide an opt-in, alternative language choice, or a documented region-specific justification for this restriction.

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.

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.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The onboarding guide forces a specific language/locale experience through all headings, instructions, and trigger examples. Under the policy, language constraints should either be optional for the user or explicitly justified as region-specific; neither is stated here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.