Back to skill

Security audit

Food402 - TGO Yemek

Security checks for vulnerabilities and agentic risk

Overview

This skill is for real food ordering, but it handles account credentials, addresses, carts, and payments with insecure local secret and payment-page handling, so it needs careful review before installation.

Install only if you trust this publisher with your Trendyol GO account, saved addresses, cart contents, masked card metadata, and order placement. Prefer using a dedicated secret manager instead of shell-profile exports, restrict or omit the Google Places key unless needed, and require explicit user confirmation before any address, cart, or payment change.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (5)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/auth.sh:69
Finding

JWT cached in predictable shared temporary files without restrictive permissions

Content
View full analysis
"$TOKEN_FILE" local expiry expiry=$(decode_jwt_expiry "$token") echo "$expiry" > "$EXPIRY_FILE" ``` The destination paths are statically defined at `scripts/auth.sh:9-10`: ```bash TOKEN_FILE="/tmp/food402-token" EXPIRY_FILE="/tmp/food402-token-expiry" ``` ### Technical Analysis The authentication JWT is written under globally shared `/tmp` using predictable filenames. The script does not: - Set a restrictive `umask`. - Create the files atomically. - Verify file ownership or type. - Reject symbolic links. - Explicitly set mode `0600`. - Separate caches by user or session. The resulting permissions depend on the caller's existing `umask`. Under a common `022` configuration, newly created files may be readable by other local users. Predictable names also create symlink and file-collision risks. Processes running under the same account can replace or poison the cached token, while permissive host configurations may expose it across accounts. The JWT is a bearer credential. Possession is sufficient to invoke the account, address, cart, order-history, and payment-related APIs until expiration. ### Attack Path 1. A victim invokes `auth.sh get-token`, which authenticates to TGO. 2. The returned bearer token is written to `/tmp/food402-token`. 3. A local attacker monitors or reads the predictable file if host permissions allow it. 4. The attacker submits the stolen JWT in an `Authorization: Bearer` header to the documented TGO APIs. 5. The attacker can access account data or modify the victim's cart and delivery settings within the token's server-side authorization scope. A same-account malicious process can also replace the cached file before a later API call, causing requests to execute under a different acc ...[truncated 539 chars]
Remediation
View remediation
"$tmp_token" chmod 600 "$tmp_token" mv -f "$tmp_token" "$TOKEN_FILE" ``` ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/auth.sh:54
Finding

TGO password is placed in the curl process command line

Content
View full analysis
/dev/null) ``` ### Technical Analysis The complete login request, including `TGO_EMAIL`, `TGO_PASSWORD`, and the CSRF token, is passed to `curl` through the `-d` command-line argument. While the HTTPS connection protects the request in transit, it does not protect process arguments on the local host. Depending on the operating system and process-visibility configuration, another local user, monitoring agent, crash collector, shell-debugging mechanism, or same-account process may observe the command line through facilities such as `/proc//cmdline` or process-inspection utilities. The JSON is also assembled through direct string interpolation. Credentials containing quotation marks, backslashes, or control characters can produce malformed JSON, causing authentication failure or unintended field construction. ### Attack Path 1. The victim invokes a command that triggers `do_login`. 2. `curl` runs with the plaintext password embedded in its argument vector. 3. A local attacker repeatedly inspects process command lines while waiting for the short-lived login process. 4. The attacker captures the email and password from the `-d` argument. 5. The attacker authenticates directly to the victim's TGO account from another client. The observation window is brief, but repeated polling makes exploitation practical for a resident local process. ### Impact Assessment Unlike the cached JWT, disclosure of the password can provide durable account access beyond one token li ...[truncated 372 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/3dsecure.sh:8
Finding

3D Secure HTML is exposed through command arguments and an unsafe predictable temporary file

Content
View full analysis
&2 exit 1 fi # Create temp file TEMP_FILE="/tmp/food402-3dsecure-$(date +%s).html" echo "$HTML_CONTENT" > "$TEMP_FILE" ``` The file is then opened as active browser content at `scripts/3dsecure.sh:19-38`: ```bash case "$(uname -s)" in Darwin) open "$TEMP_FILE" ;; Linux) if command -v xdg-open &>/dev/null; then xdg-open "$TEMP_FILE" elif command -v gnome-open &>/dev/null; then gnome-open "$TEMP_FILE" else echo '{"error": "No browser opener found (xdg-open or gnome-open)"}' >&2 exit 1 fi ;; CYGWIN*|MINGW*|MSYS*) start "" "$TEMP_FILE" ;; ``` ### Technical Analysis The full payment-provider HTML is accepted as a positional command-line argument. This can expose transaction identifiers, URLs, form fields, or other embedded values through process inspection. The HTML is then written to a timestamp-derived filename in shared `/tmp`. The implementation does not use `mktemp`, set restrictive permissions, verify ownership, or prevent symbolic-link following. An attacker who predicts the current second may pre-create the path or a symbolic link. Depending on host protections and permissions, this can cause content disclosure, file corruption, or substitution of the page opened by the victim. Opening server-supplied HTML as a local `file://` document also executes active content in a different origin context than the payment provider intended. Browser protections reduce some risks, but local-file behavior and access rules vary by browser and platform. A compromised payment response, local file substitution, or malicious same-account process could therefore present a phi ...[truncated 1389 chars]
Remediation
View remediation
"$TEMP_FILE" chmod 600 "$TEMP_FILE" ``` The caller should then pipe the HTML into the script rather than providing it in `argv`. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:35
Finding

Documentation recommends persistent plaintext storage of account credentials

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:1
Finding

Optional Google Places key is declared as a globally required Skill secret

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (40)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

This code chunk is narrowly focused on authentication support, not the broader end-user food delivery capabilities claimed in the description. While auth can be a supporting component of such a skill, the declared purpose suggests a complete ordering workflow and multiple user-facing features that are absent from the supplied code. The code also relies on TGO_EMAIL and TGO_PASSWORD environment variables and stores tokens in /tmp, which are implementation capabilities not mentioned in the declared description. Therefore the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/3dsecure.sh (reported line 46)May include surrounding context.

sh
echo "{\"success\": true, \"message\": \"3D Secure page opened in browser\", \"tempFile\": \"$TEMP_FILE\"}"

# Clean up after 5 minutes in background
(sleep 300 && rm -f "$TEMP_FILE") &>/dev/null &

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill documents extensive shell-based network and payment operations but does not declare any explicit tool scope or allowed-tools boundary. That makes the runtime permissions opaque and increases the chance an agent can invoke shell unexpectedly or more broadly than reviewers and users expect, especially for authenticated account actions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The description says to use the skill whenever the user wants food delivery 'in Turkey,' which imposes a country-specific service scope. Under the policy, locale constraints should either be user-selectable or clearly documented as justified; the file does not explicitly frame this as a region-specific limitation the user must opt into.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Retrieving saved delivery addresses sends and receives personal address data tied to an authenticated account from an external API. That is expected for the skill, but the combination of PII, shell execution, and token-based auth makes this security-relevant because leakage of responses or tokens would expose sensitive location information.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/addresses" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This external call changes shipping/invoice address selection for the authenticated cart, affecting where an order may be delivered. Because it modifies live account state and uses location-linked identifiers, misuse could redirect orders or expose personal address associations.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-checkout-apicheckout-santral/shipping" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This external call changes shipping/invoice address selection for the authenticated cart, affecting where an order may be delivered. Because it modifies live account state and uses location-linked identifiers, misuse could redirect orders or expose personal address associations.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-checkout-apicheckout-santral/shipping" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
86% confidence
Finding

Adding a new delivery address transmits substantial personal data, including name, phone number, street address, and exact coordinates, to an external service. This is highly sensitive PII, and the skill context makes it more dangerous because free-form parameter interpolation in shell examples increases the risk of accidental disclosure or misuse if inputs are not carefully handled.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-user-apimemberaddress-santral/addresses" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-user-apimemberaddress-santral/cities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-restaurant-apirestaurant-santral/restaurants/{restaurantId}/products/{productId}?latitude={latitude}&longitude={longitude}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-discovery-apidiscovery-santral/recommendation/product" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

Adding items to a basket under an authenticated account is a state-changing operation that combines order details with precise location data. In the context of an agent skill, that raises material risk of unauthorized purchases or cart manipulation if the shell pathway, parameters, or token cache are abused.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts/items" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

Adding items to a basket under an authenticated account is a state-changing operation that combines order details with precise location data. In the context of an agent skill, that raises material risk of unauthorized purchases or cart manipulation if the shell pathway, parameters, or token cache are abused.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X POST "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts/items" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Reading the current basket reveals purchase intent, merchant information, and pricing associated with an authenticated user session. This is sensitive transactional data, and leaking it through logs or unintended outputs would expose private consumer behavior.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

Removing an item from the basket modifies a live order state for the authenticated user. That creates integrity risk: an agent or attacker with access to the skill could silently alter the user's intended purchase.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X DELETE "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts/items/{itemId}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

Clearing the entire basket is a destructive account action executed via an authenticated external request. In an agent environment, a mistaken or malicious invocation can immediately wipe pending purchase selections and materially affect the user's transaction flow.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X DELETE "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
81% confidence
Finding

Checkout readiness requests expose sensitive cart and pricing data in a payment context, potentially including warnings or conditions relevant to order completion. This is legitimate behavior, but the data sensitivity is elevated because it is tied to an authenticated commerce session.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts?cartContext=payment&limitPromoMbs=false" \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-correlationid: $(uuidgen)" \
  -H "pid: $(uuidgen)" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

Updating customer notes and delivery preferences transmits potentially sensitive household or personal instructions to an external service. Free-text fields increase the chance of oversharing, accidental retention, or inappropriate display if not carefully handled.

Content

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

bash
TOKEN=$({baseDir}/scripts/auth.sh get-token)
curl -s -X PUT "https://api.tgoapis.com/web-checkout-apicheckout-santral/carts/customerNote" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-correlationid: $(uuidgen)" \

Static analysis

No suspicious patterns detected.