Back to skill

Security audit

FoodLoop Analyzer

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches an API analyzer, but it includes unsafeguarded live API actions that can upload user photos, create demo users, mutate service state, and leave local files behind.

Install only if you are comfortable with an agent making live requests to FoodLoop deployments. Before use, confirm you are authorized to test the target, avoid uploading sensitive photos or personal data, approve the exact backend destination, and treat all write endpoints such as auth, preferences, sessions, webhooks, and PDF generation as manual-only actions.

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

Warning
Location
SKILL.md:103
Finding

User-provided images are transmitted to an external backend without explicit consent or destination validation

Content
View full analysis
/api/analysis/upload" \ -F "file=@/tmp/foodloop_upload.jpg" \ -F "condition=segar" ``` `references/api_workflow.md:35-40`: ```bash curl -s -X POST "https:///api/analysis/upload" \ -F "file=@/tmp/foodloop_photo.jpg" \ -F "condition=segar" ``` ### Technical Analysis The Skill instructs the Agent to upload a chat-supplied image to an external FoodLoop backend. The reference identifies `https://foodrecycler.onrender.com` as a live backend, while the main workflow also supports a dynamically discovered `` host. Remote image processing is relevant to the declared analysis functionality, so network access itself is justified. However, the implementation lacks safeguards necessary to limit that access: - It does not require explicit user confirmation before transmitting the image. - It does not clearly disclose the final destination host at upload time. - It does not validate a discovered backend against an approved host allowlist. - It does not warn that the image and any embedded metadata may be processed or retained by a third party. - It does not minimize the uploaded data by stripping metadata or creating a sanitized derivative. Consequently, the behavior can exceed the user's reasonable expectations even though it supports the declared function. ### Attack Path 1. A user supplies an image in chat, potentially containing private objects, people, documents, location metadata, or other sensitive content. 2. The Agent follows the Skill and stores the image in a temporary file. 3. The Skill obtains or accepts a backend URL without enforcing a trusted-host allowlist. 4. The Agent issues a multipart HTTP request containing the complete imag ...[truncated 757 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:88
Finding

Predictable temporary image paths allow symlink-based file overwrite and leave sensitive data behind

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

text
This is the canonical source of truth — pull it first and extract all paths + schemas:
```bash
curl -s "https://<backend>/openapi.json" | python3 -c "
import sys, json
spec = json.load(sys.stdin)
for path, methods in spec['paths'].items():

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Webhook management endpoints, especially Telegram set-webhook and inbound bot webhook routes, are externally impactful and can redirect integrations, interfere with messaging flows, or enable abuse of connected bot infrastructure. Including these capabilities in an analyzer skill is particularly dangerous because they are unrelated to passive reverse-engineering and could be misused to change production communications or exfiltrate inbound bot traffic.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The skill instructs probing a list of routes on an arbitrary frontend URL supplied for analysis, which causes external network transmissions to a third-party target. In a security-agent context this can trigger unconsented reconnaissance/scanning against external systems and may expose the operator's environment or create legal/policy issues if the target is not authorized.

Content

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

Probe common Next.js routes:

bash
for route in "" "home" "scan" "analyze" "result" "dashboard" "about" "how-it-works" "login" "signup"; do
  curl -s -o /dev/null -w "$route → HTTP %{http_code}\n" "https://<frontend>/$route"
done

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The workflow description states that the recommendation step produces an Indonesian recipe list, which imposes a specific language/locale on outputs. The file does not offer user opt-in, language selection, or a clear policy justification for restricting recommendations to Indonesian.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly instructs saving a complete analysis to a local file in the operator's home workspace without warning, consent, retention limits, or data minimization. That can persist sensitive target details, test outputs, tokens, and user-supplied content on disk where other local users, backups, or later processes may access it.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill directs the operator to decode chat-provided image data and save it to /tmp before upload, again with no disclosure that user content will be persisted locally. Images may contain personal, proprietary, or biometric data, and writing them to disk increases exposure through temp-file reuse, local access, logging, or backup/forensics.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The output format section says recommendations are Indonesian recipe suggestions, again hard-coding a locale-specific output expectation. Because no alternative language path or consent mechanism is documented, this is a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The workflow instructs saving and uploading user photos, along with optional tracking fields like user_id and clarification text, to a live remote backend without any warning about consent, retention, or sensitive-data handling. This creates privacy and compliance risk because an agent could transmit user-provided images and metadata off-platform without the user understanding where the data goes or how it will be processed.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file documents account creation and user-specific endpoints such as demo login and per-user history/preferences that go beyond passive analysis of a FoodLoop deployment. In the context of an 'analyzer' skill, this expands capability from inspection into interaction with user-scoped resources, increasing the risk of unauthorized account creation, enumeration, or access to personal data if an agent follows the guide automatically.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The reference broadly exposes endpoints involving user history, preferences, contact messages, notifications, and webhooks, all of which can carry personal data or trigger external transmission. Without privacy guidance or scope restrictions, an agent using this skill could collect, access, or send personal information in ways that exceed the user's intent and the analyzer's stated purpose.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

These sections enumerate state-changing operational endpoints such as saving preferences, disabling reminders, submitting feedback/contact data, generating PDFs, and session mutation actions. For a narrowly scoped analyzer skill, exposing mutation endpoints creates a pathway for the agent to perform real-world changes on a live system rather than just analyze it, which could disrupt service, alter data, or spam backend operations.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The live test example sends personally identifying information (name, email, reminder channel) to an external production backend as part of a demo-auth flow. In a skill intended for analysis, embedding executable examples that transmit data to a third party increases the chance an agent or operator will perform unnecessary external actions against a live system, creating privacy, consent, and unintended-account-creation risks.

Content

Scanner excerpt · references/api_workflow.md (reported line 264)May include surrounding context.

Demo Auth

bash
curl -s -X POST "https://foodrecycler.onrender.com/api/auth/demo" \
  -H "Content-Type: application/json" \
  -d '{"name":"Test User","email":"test@example.com","reminder_channel":"whatsapp"}'

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The notification preview hard-codes Indonesian subject and message text, which can amount to forcing a specific language if presented as default behavior without user opt-in or locale selection. The policy allows locale constraints only when documented and justified or when users are given a language choice.

Content

No source excerpt is available for this finding.