Back to skill

Security audit

Fal Text-to-Image

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent fal.ai image generation/editing skill, with privacy and dependency cautions but no artifact-backed malicious behavior.

Install only if you are comfortable sending prompts, source images, and masks to fal.ai and possibly storing prompt/model details in generated image metadata. Use a scoped fal.ai API key, avoid private or regulated images unless you have reviewed fal.ai data handling, and prefer locked dependencies before production use.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
pyproject.toml:6
Finding

Unpinned Dependencies Allow Unreviewed Package Versions to Execute

Content
View full analysis
=0.5.0", "python-dotenv>=1.0.0", "pillow>=10.0.0", "click>=8.1.0", "requests>=2.31.0", ] ``` ### Technical Analysis Every runtime dependency uses an open-ended minimum version constraint. No dependency lockfile or package hashes are present in the audited project structure. Consequently, the documented `uv run` workflow may resolve package releases that were published after this project was reviewed. This weakens dependency reproducibility and creates a supply-chain exposure: a compromised maintainer account, malicious future release, or dependency takeover could cause an unreviewed package version to be installed and imported. Python package installation hooks and imported package initialization code can execute with the privileges of the user running the skill. This finding does not establish that any currently listed package is malicious. The vulnerability is the absence of controls ensuring that users execute only reviewed dependency artifacts. ### Attack Path 1. An attacker compromises a listed dependency or publishes a malicious future version satisfying its open-ended `>=` constraint. 2. A user follows the documented workflow and invokes the project through `uv run`. 3. Because no reviewed lockfile or exact version constraint is supplied, the resolver selects the attacker-controlled release. 4. Malicious installation or import-time code executes under the invoking user's account. 5. The code can access resources available to that process, potentially including the `FAL_KEY` environment variable, local source images, prompts, generated outputs, and writable user files. ### Impact Assessment Successful exploitation would provide code execution with the privileges of the user invoking the ...[truncated 579 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
60% confidence
Finding

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

Content

Scanner excerpt · CHEATSHEET.md (reported line 118)May include surrounding context.

Set API key (do once)

export FAL_KEY="your-api-key-here"

Or create .env file in skill directory

echo "FAL_KEY=your-api-key-here" > .env

text

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 · CHEATSHEET.md (reported line 119)May include surrounding context.

Set API key (do once)

export FAL_KEY="your-api-key-here"

Or create .env file in skill directory

echo "FAL_KEY=your-api-key-here" > .env

text

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 · README.md (reported line 305)May include surrounding context.

Set API key (do once)

export FAL_KEY="your-api-key-here"

Or create .env file in skill directory

echo "FAL_KEY=your-api-key-here" > .env

text

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 · SKILL.md (reported line 221)May include surrounding context.

Set API key (do once)

export FAL_KEY="your-api-key-here"

Or create .env file in skill directory

echo "FAL_KEY=your-api-key-here" > .env

text

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 · SKILL.md (reported line 525)May include surrounding context.

Set API key (do once)

export FAL_KEY="your-api-key-here"

Or create .env file in skill directory

echo "FAL_KEY=your-api-key-here" > .env

text

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README explicitly advertises API-backed image generation/editing with local file inputs and also states that prompts and generation parameters are embedded into output image metadata. Without a clear warning that prompts, images, and masks may be transmitted to fal.ai and that sensitive text may persist in EXIF, users could unknowingly disclose private data to a third party or redistribute images containing hidden sensitive metadata.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly supports uploading source images, prompts, and edits to fal.ai but does not warn users that this data is transmitted to a third-party service. In a tool handling potentially sensitive images and prompts, this omission can cause accidental disclosure of private or regulated data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documentation states that generated images are saved with EXIF metadata containing the prompt, model, and parameters, but it does not present this as a privacy/security warning. Users may unknowingly share generated files that leak sensitive prompt contents, workflow details, or internal project information.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The examples encourage use of a remote image-generation service but do not disclose that user prompts and any supplied data are sent off-device to a third-party provider. Users may unknowingly submit sensitive business information, personal data, or confidential creative material under the assumption that processing is local.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The reference-image and edit examples use local files as inputs without warning that those files may be uploaded to an external service. This can expose private photos, proprietary artwork, internal documents embedded in images, or other sensitive visual data to third-party processing and retention.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The package description says only "Generate high-quality images from text prompts using fal.ai models," which describes text-to-image generation only. The broader skill manifest says the skill also supports image-to-image remixing and targeted inpainting/editing, so this file's declared behavior is materially narrower than the skill's claimed scope.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: python-dotenv has 2 known advisory(ies) (CVE-2026-28684 (python-dotenv: Symlink following in set_key allows arbitrary file overwrite via ); CVE-2026-28684 (python-dotenv reads key-value pairs from a .env file and can set them as environ)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: pillow has 16 known advisory(ies) (CVE-2016-2533 (Pillow buffer overflow in ImagingPcdDecode); CVE-2023-50447 (Arbitrary Code Execution in Pillow); CVE-2021-27922 (Pillow Uncontrolled Resource Consumption) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: click has 1 known advisory(ies) (CVE-2026-7246 (Pallets Click, versions 8.3.2 and below, contain a command injection vulnerabili)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: pytest has 2 known advisory(ies) (CVE-2025-71176 (pytest has vulnerable tmpdir handling); CVE-2025-71176 (pytest has vulnerable tmpdir handling)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: black has 5 known advisory(ies) (CVE-2026-32274 (Black: Arbitrary file writes from unsanitized user input in cache file name); CVE-2024-21503 (Black vulnerable to Regular Expression Denial of Service (ReDoS)); CVE-2024-21503 (Versions of the package black before 24.3.0 are vulnerable to Regular Expression) +2 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.