Back to skill

Security audit

Weibo Scraper API - Users, Posts, Search, Hot Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Scavio Weibo API guide; it sends Weibo IDs and search queries to Scavio as expected, with no hidden execution, persistence, or local data access.

Before installing, be aware that Weibo identifiers, post IDs, search terms, and request metadata will be sent to Scavio and may cost credits. Avoid submitting confidential research topics, secrets, regulated personal data, or sensitive investigative targets unless you are comfortable sharing them with that service.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill sends user-supplied identifiers and search queries to a third-party service but does not clearly warn users that their inputs will leave the local environment. This creates a real privacy and consent issue because requests may include potentially sensitive handles, post IDs, or research topics, and users may not realize that data is being transmitted to Scavio.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This example performs an authenticated outbound request to a third-party API and transmits a user identifier externally. While expected for the skill's purpose, it is still a genuine data egress point and can expose user-provided identifiers or investigative targets to an external provider if used without notice or consent.

Content

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

md
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1. A user's profile, then their posts
info = requests.post(f"{BASE}/api/v1/weibo/user/info", headers=HEADERS,
    json={"uid": "7277477906"}).json()
posts = requests.post(f"{BASE}/api/v1/weibo/user/posts", headers=HEADERS,
    json={"uid": "7277477906", "page": 1}).json()

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This request transmits a Weibo user ID and pagination data to the external Scavio API. The behavior matches the advertised functionality, but it still constitutes third-party disclosure of user-supplied targets and may reveal monitoring or profiling activity if used on sensitive accounts.

Content

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

md
# 1. A user's profile, then their posts
info = requests.post(f"{BASE}/api/v1/weibo/user/info", headers=HEADERS,
    json={"uid": "7277477906"}).json()
posts = requests.post(f"{BASE}/api/v1/weibo/user/posts", headers=HEADERS,
    json={"uid": "7277477906", "page": 1}).json()

# 2. A post and its comments

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This example sends a post ID and options to an external API, creating a data egress path. Even if the post is public, the queried target and timing of the request may still be sensitive in investigative, compliance, or user-research contexts.

Content

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

md
json={"uid": "7277477906", "page": 1}).json()

# 2. A post and its comments
post = requests.post(f"{BASE}/api/v1/weibo/post", headers=HEADERS,
    json={"id": "5092682368025584", "is_get_long_text": "true"}).json()
comments = requests.post(f"{BASE}/api/v1/weibo/post/comments", headers=HEADERS,
    json={"id": "5092682368025584", "count": 50}).json()

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This outbound request sends a post ID and comment retrieval parameters to a third-party service. The skill context makes such transmission expected, but it remains a privacy-relevant external call because it may disclose what content a user is analyzing and can expose personal data in returned comments.

Content

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

md
# 2. A post and its comments
post = requests.post(f"{BASE}/api/v1/weibo/post", headers=HEADERS,
    json={"id": "5092682368025584", "is_get_long_text": "true"}).json()
comments = requests.post(f"{BASE}/api/v1/weibo/post/comments", headers=HEADERS,
    json={"id": "5092682368025584", "count": 50}).json()

# 3. Realtime keyword search and the hot-search board

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This request sends a free-form search query to the external API, which is more sensitive than fixed IDs because queries can contain proprietary research interests, personal data, or investigative intent. Without an explicit warning, users may unknowingly disclose sensitive topics to the service provider.

Content

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

md
json={"id": "5092682368025584", "count": 50}).json()

# 3. Realtime keyword search and the hot-search board
realtime = requests.post(f"{BASE}/api/v1/weibo/search/realtime", headers=HEADERS,
    json={"query": "yu7"}).json()
hot = requests.post(f"{BASE}/api/v1/weibo/hot-search", headers=HEADERS,
    json={}).json()

External Transmission

Medium
Category
Data Exfiltration
Confidence
74% confidence
Finding

This example calls a third-party endpoint with an empty JSON body, so the privacy impact is lower than identifier-bearing requests. However, it still establishes outbound network access using the API key and should be disclosed as an external dependency and data transfer to Scavio.

Content

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

3. Realtime keyword search and the hot-search board

realtime = requests.post(f"{BASE}/api/v1/weibo/search/realtime", headers=HEADERS, json={"query": "yu7"}).json() hot = requests.post(f"{BASE}/api/v1/weibo/hot-search", headers=HEADERS, json={}).json()

text

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

The hardcoded external base URL itself is not malicious, but it confirms that the skill depends on a remote third-party service for operation. In context, the risk is not the URL alone but the undisclosed external routing of user requests and associated metadata to that domain.

Content

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

curl:

bash
curl -s https://api.scavio.dev/api/v1/weibo/hot-search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

The hardcoded external base URL itself is not malicious, but it confirms that the skill depends on a remote third-party service for operation. In context, the risk is not the URL alone but the undisclosed external routing of user requests and associated metadata to that domain.

Content

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

curl:

bash
curl -s https://api.scavio.dev/api/v1/weibo/hot-search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'