Back to skill

Security audit

X to Kindle

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for sending X/Twitter posts to Kindle, but it under-protects an email app password and sends post data through third-party services without enough safety guidance.

Review before installing. Use a dedicated low-risk email account and a protected secret store instead of TOOLS.md for SMTP credentials. Be aware that fxtwitter and the configured email provider may see the requested post or related metadata. Prefer adding explicit consent, HTML escaping, and URL validation before using this with sensitive content.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:41
Finding

Plaintext Storage of Gmail App Password

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:19
Finding

Unescaped External Data Inserted into HTML Email

Content
View full analysis
``` Extract from URL: `twitter.com/*/status/` or `x.com/*/status/` 2. **Format as HTML email**: ```html

@{author_handle}

{tweet_text}

{timestamp}

View on X

``` ``` ### Technical Analysis The template inserts `author_handle`, `tweet_text`, `timestamp`, and `original_url` into HTML without requiring context-appropriate encoding or sanitization. These values originate from a user-selected external post, its URL, or the third-party FxTwitter API and therefore cross a trust boundary. Text placed inside elements must be HTML-escaped. The `original_url` value is more sensitive because it is inserted into an HTML attribute and requires attribute encoding plus strict scheme and host validation. Without these controls, crafted characters or markup could terminate the intended context and add attacker-controlled HTML. The exact behavior depends on the implementation used to construct the message and the receiving email client's sanitization. Modern clients commonly block scripts, but malicious markup may still create deceptive links, external tracking resources, misleading content, or malformed document output. ### Attack Path 1. An attacker creates or identifies an X/Twitter post containing markup-like content, or supplies a specially crafted post URL. 2. The victim asks the skill to send that post to Kindle. 3. The workflow retrieves attacker-influenced fields through `api.fxtwitter.com`. 4. The implementation interpolates the fields directly into the documented HTML template without encoding or sanitization. 5. The ...[truncated 834 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The workflow sends user-supplied X/Twitter content to a third-party API and then forwards the extracted content via SMTP email, but it does not disclose that user data and link metadata will be transmitted to external services. This creates a privacy and compliance risk because users may not realize their requested content is being processed by fxtwitter and their email provider before reaching Kindle.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

This step causes external transmission of user-requested content to api.fxtwitter.com, a third-party service outside the agent's control. While the integration appears functional rather than overtly malicious, it still introduces privacy, availability, and trust risks because tweet identifiers, request metadata, and potentially user intent are disclosed to an external endpoint.

Content

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

  1. Extract content via fxtwitter API:
    text
    https://api.fxtwitter.com/status/<tweet_id>
    
    Extract from URL: twitter.com/*/status/<id> or x.com/*/status/<id>

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs storing a Gmail App Password and Kindle email address in TOOLS.md, but provides no guidance that these are sensitive secrets requiring protected storage and restricted access. In an agent environment, documenting credentials in a broadly readable tool/config file can lead to credential exposure, unauthorized email sending, and account abuse.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

The example operationalizes the same external transmission pattern by instructing the agent to fetch tweet content from api.fxtwitter.com and then email it onward. Even as an example, it reinforces a workflow that exports user-requested data to third parties without any privacy warning, making the risky behavior more likely to be implemented as-is.

Content

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

md
User sends: `https://x.com/elonmusk/status/1234567890`

1. Fetch `https://api.fxtwitter.com/status/1234567890`
2. Extract author, text, timestamp
3. Send HTML email to Kindle address
4. Confirm: "Sent to Kindle 📚"

Static analysis

No suspicious patterns detected.