Back to skill

Security audit

Core Speed Art

Security checks for vulnerabilities and agentic risk

Overview

The skill is a real fal.ai media-generation tool, but it gives broad cloud upload/download and local file-write authority without enough safeguards.

Review before installing. Use a dedicated, revocable fal.ai key, run it in a restricted workspace, provide only media and prompts you are comfortable sending to fal.ai, avoid confidential files or private signed URLs, and keep outputs in a dedicated directory. Pin dependencies and add endpoint, URL, file-type, size, and path allowlists before using it in unattended workflows.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:9
Finding

Unpinned Runtime Dependencies Allow Supply-Chain Compromise

Content
View full analysis
=3.10" # dependencies = [ # "fal-client>=0.5.0", # ] # /// ``` ### Technical Analysis The installation command retrieves the latest available `uv` package without an exact version or integrity hash. The PEP 723 dependency specification similarly permits any `fal-client` version greater than or equal to `0.5.0`. This makes runtime behavior dependent on package versions available from the configured Python package index at execution time. A compromised publisher account, package registry, dependency resolution source, or malicious future release could introduce code that was not present during this audit. Python packages can execute code during installation, import, or normal initialization. In this Skill, `fal_client` is imported after validating that `FAL_KEY` exists, meaning a malicious resolved package would execute in a process that has access to the fal.ai credential and the invoking user's filesystem permissions. ### Attack Path 1. An attacker compromises the `uv` or `fal-client` distribution channel, publisher account, or an applicable package index. 2. The attacker publishes a malicious version satisfying the unconstrained installation request or the `fal-client>=0.5.0` range. 3. The Skill installs or resolves that version through `pip` or `uv run`. 4. Malicious package code executes during installation or import. 5. The package reads `FAL_KEY`, accesses files avail ...[truncated 681 chars]
Remediation
View remediation
", # ] ``` 2. Pin `uv` to an exact reviewed version rather than installing the latest release: ```bash python -m pip install "uv==" ``` 3. Generate and commit a lockfile containing complete transitive dependency versions. 4. Enforce package integrity hashes using a hash-locked requirements workflow or an equivalent verified artifact mechanism. 5. Install only from an explicitly configured trusted package index. 6. Perform dependency upgrades through a controlled process that includes source review, vulnerability scanning, and regression testing. 7. Run the Skill in a restricted environment with access only to required files and credentials. 8. Use a narrowly scoped, revocable fal.ai key and monitor it for unexpected usage. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fal.py:62
Finding

Unvalidated Download URLs and Unrestricted Output Paths Permit Unsafe File Writes

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill invokes code that uses environment variables and reaches an external network service, but the manifest does not declare any explicit tool scope or allowed-tools boundary. This weakens least-privilege controls and makes it harder for a host system or reviewer to understand and constrain what the skill is permitted to do, increasing the risk of unintended data access or outbound transmission.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The invocation description is very broad and overlaps with common creative tasks, so an agent may route many ordinary user requests into this skill by default. In this skill's context, that matters because use of the skill sends prompts and possibly user media to fal.ai, creating unnecessary third-party data exposure when a local or safer alternative might have sufficed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The usage guidance explains how to upload prompts, images, video, and audio to fal.ai, but it does not clearly warn that this content is sent to a third-party service. Because the skill handles potentially sensitive user media and text, missing disclosure and consent language materially increases privacy and compliance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example shows passing a start_image_url directly to fal.ai without warning that the referenced image is transmitted to an external third-party service. In a media-generation skill, users may supply private, copyrighted, or sensitive images, so omission of a disclosure can lead to unintended data sharing and privacy/compliance issues.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The example shows sending both free-form prompts and an image URL to fal.ai without warning that this data leaves the local environment and is processed by a third-party service. In a media-generation skill, users may supply sensitive prompts or private image links, so omission of a disclosure increases the risk of unintended data sharing and privacy violations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation instructs users to provide externally hosted video and audio URLs but does not mention that those media assets may be transmitted to a third-party service, logged, retained, or processed under separate privacy terms. This can lead users to submit sensitive biometric, voice, or copyrighted content without understanding the privacy and data-handling implications, which is especially relevant for lip-sync workflows involving identifiable people and voice data.

Content

No source excerpt is available for this finding.

Cloud Storage Exfiltration

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This code uploads any user-supplied local input file to fal.ai via fal_client.upload_file without any validation, restriction, or explicit consent boundary beyond the CLI argument. In an agent skill context, that creates a real data exfiltration path because a prompt or workflow could cause sensitive local files to be sent to a third-party cloud service when the user intended only media processing.

Content

Scanner excerpt · scripts/fal.py (reported line 99)May include surrounding context.

python
uploaded.append(fpath)
                print(f"Using URL: {fpath}")
            else:
                url = fal_client.upload_file(fpath)
                uploaded.append(url)
                print(f"Uploaded: {fpath} → {url}")

Cloud Storage Exfiltration

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The audio handling path similarly uploads any local file specified by --audio to fal.ai, creating another unrestricted exfiltration channel to an external service. In this skill's media-generation context, users may reasonably provide files, but the absence of path, type, and sensitivity checks means non-audio or sensitive local files could be transmitted off-host.

Content

Scanner excerpt · scripts/fal.py (reported line 114)May include surrounding context.

python
if args.audio.startswith("http"):
            request_args["audio_url"] = args.audio
        else:
            audio_url = fal_client.upload_file(args.audio)
            print(f"Uploaded audio: {args.audio} → {audio_url}")
            request_args["audio_url"] = audio_url

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation and example instruct users to provide an image_url to a third-party fal.ai endpoint without clearly disclosing that the referenced image will be transmitted to an external service for processing. This creates a privacy and data-handling transparency issue, especially if users supply sensitive, private, or proprietary image URLs under the assumption processing is local or implicit.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The example demonstrates passing an external image URL to a third-party generation API without warning that the referenced image may be fetched and processed by fal.ai. In a media-generation skill, users may supply private or signed URLs, so this omission can lead to unintended disclosure of user-controlled data to an external service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation instructs users to submit image URLs to an external AI service but does not warn that referenced images may be transmitted to and processed by a third party. This can lead to unintentional disclosure of sensitive or proprietary media, especially in a media-generation skill where users may edit private assets.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.