T08 · Insecure Dependencies
- Location
SKILL.md:35- Finding
Unpinned Third-Party Skill Update Creates a Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent dating-API purpose, but it sends very sensitive profile, photo, contact, and credential data to an external service with weak update and temporary-file safeguards.
Install only if you intentionally want Codex to use this third-party dating backend. Confirm the base URL and privacy terms first, do not use example credentials, avoid optional contact or exact-location fields unless needed, and treat generated tokens, task IDs, photos, and revealed contact details as sensitive. Prefer a reviewed pinned update path and secure temporary-file handling before production or workplace use.
SKILL.md:35Unpinned Third-Party Skill Update Creates a Supply-Chain Risk
SKILL.md:91Predictable Request File Can Retain Plaintext Credentials and Personal Data
SKILL.md:117Weak Example Password May Be Reused as an Operational Credential
The skill contains self-modification instructions that tell the agent to update the skill from a remote source. Allowing a skill to direct its own upgrade path is dangerous because it can bypass normal review expectations and combine with the unpinned npx fetch to introduce changed or malicious behavior later.
When users ask to update this skill, run:
npx skills add 1asdwz/ai-dating
The skill's trigger list is broad and maps to common, ambiguous user intents like 'make friends' or 'find a partner', which increases the chance the agent invokes an external dating workflow without the user realizing their personal data will be sent to a third-party service. In this context, the risk is amplified because the skill performs networked actions involving profile traits, photos, and contact details, so accidental activation can cause privacy-impacting disclosures rather than a harmless local action.
The skill is explicitly designed to send user data to an external dating API, including profile data, match preferences, photos, and later contact details. Even though the document includes some consent guidance, the data category is extremely sensitive, and transmission to a third-party matchmaking backend materially increases privacy, compliance, and misuse risk if invoked in error or used in an unapproved environment.
---
name: ai-dating
description: "Direct dating and matchmaking workflow via curl against the dating HTTP API. Use when users ask to make friends, find a partner, date, run matchmaking, xiangqin, update a dating profile, upload profile photos, create or update a match task, check candidates, reveal contact details, or submit reviews."
license: MIT
metadata:
author: 1asdwz
The top-level description uses broad everyday phrases like making friends, dating, uploading photos, and revealing contact details, which can cause the agent to invoke the skill in situations where the user may only want advice. In this skill, mistaken invocation is especially risky because it can lead to transmission of highly sensitive personal, location, photo, and contact data to an external service.
The trigger conditions are ambiguous about when the skill should actually execute versus when it should only help draft preferences locally. Because the workflow performs account actions and uploads sensitive data to a third-party service, ambiguous triggers increase the chance of unauthorized or premature external requests.
The skill instructs users to run npx skills add 1asdwz/ai-dating without pinning an exact version or commit. That allows the fetched package or skill contents to change over time, creating a supply-chain risk where a later malicious or compromised update could execute different code or alter the skill behavior.
The profile update example sends a very broad set of sensitive personal data in one request, including birthday, exact location, email, phone, multiple social handles, and photo URLs. In a dating-skill context this is especially dangerous because it centralizes enough information for doxxing, stalking, account correlation, impersonation, or broader privacy harm if the backend is compromised, misused, or invoked without carefully scoped consent.
}
JSON
curl -sS -X PUT "$BASE_URL/member-profile" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
JSON
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/update" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
The guidance explicitly tells operators to keep authentication-derived session state (AUTH) and task identifiers, but it does not pair that with limits on storage duration, secure handling, redaction, or cleanup. In a dating workflow, those values are sensitive because they can enable continued access to a user's account context and matchmaking data if logged, persisted in shell history, temp files, transcripts, or shared debugging output.
This step sends user registration data to an external service and the documented response includes highly sensitive secrets such as a generated password and bearer token. Even though external transmission is core to the skill, it is still security-relevant because the workflow normalizes sending personal data to a third-party dating backend and handling returned credentials without strong safeguards around exposure, logging, or secret lifecycle.
{"username":"amy_2026"} JSON
RESP=$(curl -sS -X POST "$BASE_URL/register"
-H "Content-Type: application/json"
--data-binary @"$BODY_PATH")
Creating a match task transmits intimate preference and profiling data to an external backend, including demographic filters, hobbies, personality traits, and relationship intention. In the dating context this data is especially sensitive because it can reveal sexual/romantic preferences, location constraints, and behavioral profiling inputs, creating privacy and misuse risks if shared without clear consent and minimization.
}
JSON
TASK_RESP=$(curl -sS -X POST "$BASE_URL/match-tasks" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH")
Updating a match task again sends sensitive preference data to the external backend and the surrounding guidance encourages retaining the task ID because there is no list endpoint. The transmission itself is expected functionality, but in combination with persistent identifiers and intimate criteria it increases the chance of long-lived tracking, replay, or leakage of a user's dating preferences.
}
JSON
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/update" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
The skill provides direct steps to reveal another user's contact information and enumerates the returned fields, but it does not impose clear disclosure controls such as consent verification, purpose limitation, minimum-necessary display, or prohibitions on re-sharing. In a dating context, contact details are highly sensitive and misuse can lead to stalking, harassment, deanonymization, or off-platform abuse.
No suspicious patterns detected.