Back to skill

Security audit

Bookmark Intelligence

Security checks across malware telemetry and agentic risk

Overview

This skill’s core purpose is understandable, but it asks for full X session credentials, runs continuously, fetches arbitrary linked pages, and sends bookmark-derived content into external analysis paths with uneven disclosure and control.

Install only if you are comfortable giving the skill effective full-session access to your X account and letting it continuously process bookmarks and linked pages. Use a low-value or dedicated X account if possible, keep the .env file out of backups and repositories, review PM2 persistence, and disable or avoid automatic link fetching, external LLM analysis, notifications, and payment/licensing flows unless you explicitly need them.

SkillSpector

By NVIDIA
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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (24)

Intent-Code Divergence

Medium
Confidence
92% confidence
Finding
The README asserts 'No telemetry, no phone-home' while elsewhere documenting license checks, activation, payment processing, and Telegram notifications, all of which involve outbound communication. This mismatch can mislead users into granting credentials or enabling features under false privacy assumptions, undermining informed consent and trust.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The documentation makes a misleading privacy claim by saying credentials never leave the machine, even though the skill requires those X session cookies to be used in outbound authenticated requests to X.com. While the cookies may not be sent to arbitrary third parties, they do leave local storage during network authentication, so the statement can cause users to underestimate the sensitivity and transmission of their credentials.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The analyzer fetches arbitrary external URLs found in bookmark text using shell-invoked curl, which gives this local analysis skill network retrieval capability beyond simple offline processing. This can expose the host to SSRF-like access to internal or sensitive endpoints, pull attacker-controlled content into downstream processing, and increase attack surface through shell-based execution.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
LLM invocation is performed via a shell command that embeds prompt material and references a temp file path, giving an analysis skill unnecessary command-execution capability. Even if the current prompt is written to a file first, using execSync and shell composition expands the attack surface for command injection, environment abuse, and operational misuse compared with direct process or API invocation.

Intent-Code Divergence

Medium
Confidence
92% confidence
Finding
The code writes attacker-controlled bookmark data to a temp file, but still launches child processes through shell-constructed command strings using execSync. While analyzerPath is quoted, tempFile incorporates bookmark.id into a shell command and cleanup also invokes rm through the shell, so a crafted or unexpected bookmark.id could enable command injection or shell metacharacter abuse if the upstream data is not strictly trusted. In a skill that ingests remote social-media content, that context makes shelling out on derived filenames more dangerous.

Intent-Code Divergence

Medium
Confidence
97% confidence
Finding
The function is documented as validating license key format and signature, but it only checks a regex and tier prefix, then accepts the key as valid. This allows anyone to forge a paid-tier key locally and activate Pro or Enterprise features without any cryptographic verification or server-side check, undermining licensing and any feature gating built on it.

Intent-Code Divergence

Low
Confidence
90% confidence
Finding
The CLI exposes a reset-usage command in normal runtime even though the comment says it is only for testing. Any local user can reset persisted usage counters and bypass free-tier quota enforcement, defeating the integrity of usage-based controls.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The code claims to generate a Stripe Checkout session but actually fabricates a checkout.stripe.com URL from a random local payment ID without contacting Stripe or creating any server-side payment object. This creates a deceptive payment flow that can leave the system tracking payments that can never be validated through Stripe, and when combined with the manual completion path, it enables issuance of licenses without real payment verification.

Intent-Code Divergence

High
Confidence
99% confidence
Finding
The completePayment function marks any stored payment as completed and issues a license key without verifying a Stripe charge, crypto transfer, admin authorization, or any proof of payment. Anyone with access to invoke this function and knowledge of a pending payment ID can convert unpaid orders into active licenses, directly bypassing the payment system.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The checklist instructs users to run destructive deletion commands, including recursive removal of files outside the immediate skill directory, without an explicit warning, confirmation step, or safeguards. In a publishing or testing workflow, this can cause accidental loss of user data if paths are wrong, the command is run from an unexpected location, or the referenced directory contains valuable files.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The listing states that the skill auto-monitors X bookmarks hourly, fetches full linked article content, performs AI analysis, and sends alerts, but it does not present a prominent user warning about the scope and sensitivity of this automated data collection and processing. This can lead users to enable the skill without fully understanding that bookmarked posts and external linked content will be continuously retrieved and analyzed, increasing privacy and consent risks.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The installation guide explicitly instructs users to extract browser cookies and store authentication material locally in a `.env` file, but it does not provide meaningful security guidance about the sensitivity of those tokens, risks of local compromise, leakage through backups/logs, or the danger of reusing browser session cookies outside the browser. This can normalize insecure credential handling and increase the likelihood of account/session theft if the machine, repository, or logs are exposed.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The payment instructions ask users to include an email address or Telegram handle in blockchain transaction metadata, which can create a permanent or widely visible link between a wallet address and personal contact information. This exposes users to privacy loss, profiling, and targeted phishing, especially because blockchain metadata may be retained by wallets, explorers, or intermediaries and the file does not clearly warn users about that risk.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The setup flow explicitly collects X cookies, asks about projects and interests, and enables continuous bookmark monitoring, but the README does not prominently explain the sensitivity of that data or the privacy risks of ingesting linked article content. Users may expose account session material, personal interests, and browsing-derived content without understanding retention, sharing, or compromise implications.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill asks users to extract highly sensitive X authentication cookies manually, while surrounding language such as 'Don't worry, this is safe' downplays the risk. In this context, the skill also fetches external articles and may send content to AI providers, so minimizing the danger of supplying account-session credentials can lead users to expose full-account access without fully informed consent.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The documentation states that payment data and email addresses may be stored locally, but it does not clearly warn users or operators about the privacy and data-protection implications. This can lead to accidental collection, insecure retention, or mishandling of personal data, especially if sellers enable payment flows without understanding their obligations.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The checklist instructs users to delete local configuration and bookmark data with `rm -f` and `rm -rf` before testing, but it does not prominently warn about irreversible data loss or require use of an isolated test directory/account. In a testing document for a skill that appears to manage real user credentials and saved bookmark output, this creates a realistic risk of accidental destruction of a user's existing data.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code sends bookmarked tweet text and fetched webpage content to an external LLM tool without any explicit disclosure, consent, or data-classification check. Because bookmarks and linked content may include private, proprietary, or regulated information, this creates a real confidentiality and compliance risk if users assume analysis is local.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The CLI complete command performs an irreversible payment completion and license issuance immediately after receiving a payment ID, with no confirmation prompt, no secondary validation, and no authorization guard visible in this script. In a skill context where scripts may be run by operators or automation, this increases the chance of accidental or unauthorized fulfillment of unpaid orders.

Ssd 1

High
Confidence
97% confidence
Finding
Untrusted tweet text and fetched webpage content are interpolated directly into the prompt as first-class analysis context, allowing attackers to plant prompt-injection instructions in bookmarks or linked pages. Because the model is asked to extract actionable insights for specific projects, injected content can manipulate outputs, fabricate priorities, or steer recommendations in ways that appear authoritative to downstream users or automation.

Ssd 4

Medium
Confidence
88% confidence
Finding
The workflow starts from a tweet, expands into linked pages, and then aggregates that material into a single LLM prompt, which compounds trust across multiple attacker-controlled sources. This multi-step context expansion increases the likelihood that seemingly benign bookmark text can smuggle in malicious narratives or instructions through referenced content and bias the final analysis.

Excessive Permissions

Low
Category
Privilege Escalation
Content
### ⚠️ Important Security Notes

- **These cookies are like your password** - they give full access to your X account
- **Never share them with anyone**
- **Don't post them online or commit them to git**
- They're stored locally in `.env` with strict permissions (600 = only you can read)
Confidence
90% confidence
Finding
give full access

Credential Access

High
Category
Privilege Escalation
Content
writeFileSync(envPath, content);
  chmodSync(envPath, 0o600); // Read/write for owner only
  
  print(`\n✅ Created .env file (permissions: 600)`, green);
  print(`   ${envPath}`, cyan);
}
Confidence
91% confidence
Finding
.env

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# Remove all user-specific files
rm -f .env config.json bookmarks.json
rm -rf ../../life/resources/bookmarks/*

# Verify cleanup
npm run verify
Confidence
96% confidence
Finding
rm -rf ../../life/resources/bookmarks/

VirusTotal

52/52 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
analyzer.js:37

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
monitor.js:76

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/license.js:65

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/setup.js:56

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/uninstall.js:43