Back to skill

Security audit

Вконтакте - публикация постов, фото и видео. Диалоги с посетителями. NodeJS

Security checks for vulnerabilities and agentic risk

Overview

This VK community-management skill is coherent, but it asks users to use broad, long-lived VK user tokens in unsafe ways that could expose account and community access.

Review before installing. Use this only with a narrowly scoped VK token, preferably an official VK developer flow and community-scoped credentials where possible. Avoid permanent offline user tokens unless truly needed, do not paste tokens into shell commands or shared terminals, and rotate any token already used with these examples. Treat posting, messaging, mark-as-read, and uploads as real account actions that can affect your VK community and conversations.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/vk_cli.js:12
Finding

Privileged VK access tokens are exposed through command-line arguments and URL query parameters

Content
View full analysis
"Message text" [attachments] ``` It also recommends constructing a URL containing the token: ```bash curl "https://api.vk.com/method/METHOD_NAME?access_token=TOKEN&v=5.131&PARAM1=VALUE1" ``` ### Technical Analysis The CLI accepts a VK access token as a positional process argument. Command-line secrets can be retained in shell history and may be observable through process-inspection facilities by other processes or users, subject to operating-system permissions. The `callVk` function then places the token in the URL query string. Other sensitive parameters, including message contents, are also encoded into the query string because every API parameter is appended to `url.searchParams`. Although HTTPS protects the URL from ordinary network interception in transit, complete URLs can still be exposed through application diagnostics, HTTP client instrumentation, endpoint monitoring, proxy logs, or improperly configured logging infrastructure. This issue is especially significant because the documentation recommends persistent, broadly privileged user tokens. Disclosure could therefore provide long-term access t ...[truncated 1495 chars]
Remediation
View remediation
` positional arguments with secure environment-variable or stdin-based examples. 7. Remove the token-bearing `curl` URL example. If a raw request example is necessary, demonstrate a protected variable and POST body while warning users about shell history. 8. Add automated tests that verify tokens do not appear in generated URLs, console output, or thrown error messages. 9. Recommend immediate token revocation and rotation if a token has been entered into shared terminals, recorded sessions, or exposed logs. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:9
Finding

Default setup guidance requests excessive persistent privileges through a third-party token provider

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/vk_cli.js:27
Finding

Local files can be uploaded to unvalidated API-provided destinations

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Credential Access

High
Category
Privilege Escalation
Confidence
82% confidence
Finding

The skill requires an access token and specifically pushes users toward a permanent, high-privilege User Token, which is a sensitive credential with broad API authority. In context, this is more dangerous because the skill manages posting and messages for a community, so compromise of the token could enable unauthorized posts, message access, deletions, and persistent abuse of the associated VK account/community.

Content

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

md
This skill allows you to manage a VK community using the VK API.

## Requirements
- VK Access Token. **Важно:** Используйте **User Token** для полных прав (удаление постов, простая загрузка фото). См. [references/api.md](references/api.md) для деталей.
- Node.js environment.

## Core Workflows

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
- `node scripts/vk_cli.js upload-photo $TOKEN $GROUP_ID "./image.jpg"`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `node scripts/vk_cli.js upload-photo $TOKEN $GROUP_ID "./image.jpg"`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `node scripts/vk_cli.js upload-photo $TOKEN $GROUP_ID "./image.jpg"`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/api.md (reported line 23)May include surrounding context.

md
## Setup

To use this skill, you need a VK Access Token with the following scopes:
- `wall`
- `groups`
- `photos`

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill documents and invokes network-capable operations against the VK API but does not declare any tool scope or allowed-tools boundaries. In an agent setting, this weakens policy enforcement and can let the skill perform external actions without explicit user-visible permission constraints.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation explicitly recommends using a high-privilege User Token for 'full rights,' including destructive actions like deleting posts, but does not warn about token sensitivity, account takeover risk, or the consequences of granting broad personal-account privileges. This encourages operators to supply overly powerful credentials to automation, increasing the blast radius if the token is exposed or misused.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The guide explicitly recommends a User Token with 'full administrator' style powers instead of a more limited community token, even though the skill is described for community posting and messaging. Encouraging broader privileges than necessary violates least privilege and raises the blast radius if the token is exposed or the skill is misused.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The document recommends a non-expiring offline user token with broad content, group, media, and messaging scopes without discussing the persistence and privilege risks. If compromised, such a token can provide durable unauthorized control over community operations and messaging with no natural expiry to limit exposure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The examples instruct users to pass access tokens directly as command-line arguments. On many systems, command-line arguments are exposed via process listings, shell history, logs, and monitoring tools, which can leak long-lived credentials to other users or administrators.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documentation broadens the skill from community management into arbitrary VK API invocation by recommending direct use of curl/fetch with METHOD_NAME and raw parameters. In this context, that effectively enables any action the supplied token permits, defeating scope expectations for the skill and increasing the chance of misuse or overprivileged operations.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/api.md (reported line 87)May include surrounding context.

md
const API_VERSION = '5.131';

async function callVk(method, params, token) {
  const url = new URL(`https://api.vk.com/method/${method}`);
  url.searchParams.append('access_token', token);
  url.searchParams.append('v', API_VERSION);
  for (const [key, value] of Object.entries(params)) {

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/vk_cli.js (reported line 14)May include surrounding context.

js
const API_VERSION = '5.131';

async function callVk(method, params, token) {
  const url = new URL(`https://api.vk.com/method/${method}`);
  url.searchParams.append('access_token', token);
  url.searchParams.append('v', API_VERSION);
  for (const [key, value] of Object.entries(params)) {

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The post and message commands publish content to VK, which can have user-visible and irreversible effects, but the tool provides no confirmation prompt or cautionary notice beyond terse usage text. For a general-purpose CLI, these are safety-relevant outbound actions that should be disclosed clearly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The help text advertises that poll can automatically mark messages as read when mark_read is set to 1, which is a state-changing action affecting user data. There is no confirmation prompt or explicit warning about this side effect before the operation is performed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The document contains operational instructions in both English and Russian, including critical workflow steps, but does not state that the skill is bilingual or let the user choose a preferred language. This can violate a language/locale policy when users are forced into a language without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

Key setup guidance about token types and acquisition is presented only in Russian, while other sections are in English. This creates an implicit language constraint for users without indicating that the skill is Russian-locale specific or offering an alternative language option.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.