Back to skill

Security audit

scraping-tiktok-profile-data

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it says, but it sends TikTok account lists to Apify and documents commands that can expose the user's Apify token in URLs.

Review before installing. Use a dedicated low-privilege Apify token, prefer Authorization-header authentication over token-in-URL examples, avoid sensitive or regulated account lists unless Apify processing is acceptable, and be cautious with customMapFunction because it runs code-like logic over scraped data.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:85
Finding

Apify API Token Exposed Through URL Query Parameters

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill sends TikTok usernames/URLs and query parameters to Apify, a third-party service, but the description does not clearly warn users about this data transfer. This creates a transparency and privacy risk because users may provide creator lists or account targets without understanding that the data leaves the local environment and is processed externally.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest describes a skill for scraping TikTok profile statistics and metadata such as follower counts, likes, video count, and bio. However, the documented inputs since, until, and maxItems are framed around returning posts within a date range and limiting posts, which implies content-level scraping beyond profile metadata.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Allowing a user-supplied customMapFunction introduces a code-like transformation surface that exceeds the stated scope of simple profile scraping. Even if execution occurs within Apify rather than locally, this can enable unreviewed arbitrary logic over scraped data, increasing the risk of misuse, unexpected outbound behavior within the third-party platform, or expansion beyond the declared purpose.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This step explicitly transmits user-supplied TikTok usernames to Apify over the network, which is an external data transfer. In the context of a scraping skill this is expected behavior, but it is still security-relevant because potentially sensitive target lists and the APIFY_TOKEN are involved, and users may not realize the request depends on a third-party processor.

Content

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

REST API fallback:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tiktok-profile-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["creator1", "creator2"]}'

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 85)May include surrounding context.

REST API fallback:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tiktok-profile-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["creator1", "creator2"]}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

Polling the actor run status via Apify is another external network interaction and continues exposing operational metadata tied to the scraping job and tokenized account context. While expected for this workflow, it reinforces that the skill depends on a third-party execution environment and that token handling and user awareness matter.

Content

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

Save id as RUN_ID. Poll until status = SUCCEEDED:

bash
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'

Fetch results:

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

Fetching dataset items from Apify retrieves externally processed results and confirms that scraped account data is stored and served by a third-party platform. The danger is not the fetch itself but the privacy/compliance risk of transmitting, storing, and later retrieving data outside the local trust boundary without prominent notice.

Content

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

Fetch results:

bash
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"

Step 3: Handle Edge Cases

Static analysis

No suspicious patterns detected.