T08 · Insecure Dependencies
- Location
SKILL.md:32- Finding
Unpinned Third-Party Installation Command Creates Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This image-generation skill mostly matches its stated purpose, but it needs review because it transmits prompts and API tokens to an external service while using weak credential and install guidance.
Install only from a source or version you trust, and confirm that api.talesofai.cn is the intended Neta service endpoint before sending data. Use a low-scope, revocable API token, avoid sensitive or confidential prompts, and be aware this version requires passing the token on the command line despite documenting NETA_TOKEN support.
SKILL.md:32Unpinned Third-Party Installation Command Creates Supply-Chain Risk
mockupgen.js:3API Token Exposed Through Command-Line Arguments
A description-behavior mismatch involving a different external service than the one advertised is a serious trust violation. If the skill claims to use Neta AI but actually sends prompts, tokens, or reference images to another domain, users may unknowingly disclose secrets or copyrighted/private content to an unvetted third party; the undeclared --ref capability further increases risk by enabling hidden upload of local or sensitive images.
The README instructs users to install and run the skill via npx skills without pinning an exact package/version. This can expose users to unexpected upstream changes or a compromised latest release, which is a real supply-chain risk for installation flows.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The README explicitly recommends passing the API token on the command line (--token YOUR_NETA_TOKEN) without warning that command-line arguments may be exposed through shell history, process listings, logs, or telemetry. Because this skill interacts with a remote API and returns URLs, leaking the token could allow unauthorized API use or quota abuse.
The skill declares Bash usage and documents invocation of a script that requires external API access, but it does not declare any explicit tool scope or permissions. This creates an authorization and transparency gap: an agent or user may approve or execute the skill without clear notice that it will make network calls and transmit prompts and tokens to a third party.
Using npx skills add wkl-nieta/mockup-gen-skill without a pinned version introduces supply-chain risk because the fetched package or skill can change over time. An attacker who compromises the publisher account, package source, or a later release could cause users to install modified content without changing the install command.
The hardcoded external endpoint indicates intentional transmission to a remote service. While this is consistent with an image-generation skill, it is still a true security concern because it sends potentially sensitive user prompts and credentials to a third party, increasing privacy and supply-chain risk if the endpoint is compromised or unexpected.
// --- Submit job ---
async function submitJob() {
const res = await fetch("https://api.talesofai.cn/v3/make_image", {
method: "POST",
headers: HEADERS,
body: JSON.stringify(body),
The hardcoded external endpoint indicates intentional transmission to a remote service. While this is consistent with an image-generation skill, it is still a true security concern because it sends potentially sensitive user prompts and credentials to a third party, increasing privacy and supply-chain risk if the endpoint is compromised or unexpected.
// --- Submit job ---
async function submitJob() {
const res = await fetch("https://api.talesofai.cn/v3/make_image", {
method: "POST",
headers: HEADERS,
body: JSON.stringify(body),
The script sends the user-provided prompt and authentication token to a third-party API endpoint without any in-script disclosure, consent prompt, or privacy warning. Because prompts may contain sensitive business data and the token is an access credential, silent transmission to an external service creates a real confidentiality and credential-exposure risk, even though network use is expected for this skill’s function.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
// --- Poll for result ---
async function pollTask(taskUuid) {
const url = `https://api.talesofai.cn/v1/artifact/task/${taskUuid}`;
const PENDING_STATUSES = new Set(["PENDING", "MODERATION"]);
const MAX_ATTEMPTS = 90;
const INTERVAL_MS = 2000;
No suspicious patterns detected.