Back to skill

Security audit

Scavio Reddit API

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Scavio Reddit API guide with expected external API use, though users should understand the third-party data sharing and optional package-install risk.

Install only if you are comfortable sending Reddit research queries, post IDs, subreddit names, usernames, cursors, and your Scavio API key to Scavio. Prefer the direct API workflow for minimal dependencies, and if using the optional LangChain package, install it in a virtual environment and pin/audit the package version.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:243
Finding

Unpinned Third-Party Package Installation Creates Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
" ``` 2. Distribute verified hashes through a requirements file and require hash validation: ```text langchain-scavio== \ --hash=sha256: ``` ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Pin and audit all transitive dependencies through a lockfile generated from trusted package sources. 4. Verify publisher identity, release provenance, signatures or attestations, and the package's source repository before recommending it. 5. Clearly label the LangChain package as optional and retain the direct API example as the dependency-minimal default. 6. Recommend installation inside a dedicated virtual environment or disposable container under a non-privileged account. 7. Add automated dependency scanning and periodically review pinned releases before updating the documented version. ]]>
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 (6)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to send Reddit queries, URLs, post IDs, subreddit names, usernames, and an API key to a third-party service, but it does not clearly disclose this data flow or its privacy implications. This can cause unintentional external sharing of potentially sensitive research topics, monitored entities, or user-supplied identifiers.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

This example performs a real outbound POST to Scavio and transmits the user's search query plus the bearer API key to an external service. In the context of an agent skill, that external transmission is expected, but it remains security-relevant because the documentation does not pair it with a clear warning about third-party data sharing.

Content

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

md
HEADERS = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"}

# 1. Search Reddit
results = requests.post(f"{BASE}/api/v1/reddit/search", headers=HEADERS,
    json={"query": "serpapi alternative"}).json()

post_id = results["data"]["results"][0]["post_id"]

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This request sends a Reddit post identifier or URL and the API key to the external Scavio API. While this is core functionality rather than malicious behavior, it still exposes user-supplied lookup targets to a third party without explicit disclosure in the surrounding skill text.

Content

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

md
post_id = results["data"]["results"][0]["post_id"]

# 2. Full post detail
post = requests.post(f"{BASE}/api/v1/reddit/post", headers=HEADERS,
    json={"post_id": post_id}).json()

# 3. Top comments, then expand one thread

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This example transmits a Reddit post ID, sort preference, and API key to an external endpoint to retrieve comments. The network behavior is aligned with the skill's purpose, but it can still leak user investigation targets and should therefore be explicitly disclosed as third-party data transfer.

Content

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

md
json={"post_id": post_id}).json()

# 3. Top comments, then expand one thread
comments = requests.post(f"{BASE}/api/v1/reddit/post/comments", headers=HEADERS,
    json={"post_id": post_id, "sort": "TOP"}).json()

reply_cursor = comments["data"]["comments"][0]["reply_cursor"]

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

This request sends a reply cursor, post ID, and API key to Scavio to expand a comment thread. Although the behavior is expected, cursors and thread targets still reveal what content the user is examining, so omission of a disclosure makes this a genuine information-sharing concern.

Content

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

md
json={"post_id": post_id, "sort": "TOP"}).json()

reply_cursor = comments["data"]["comments"][0]["reply_cursor"]
replies = requests.post(f"{BASE}/api/v1/reddit/post/comments/replies", headers=HEADERS,
    json={"post_id": post_id, "cursor": reply_cursor}).json()

# 4. Subreddit feed

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

This example sends the subreddit name, sort choice, and API key to Scavio's external service. The transmission is inherent to the feature, but the skill lacks sufficient notice that monitored communities and research interests are being disclosed to a third party.

Content

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

json={"post_id": post_id, "cursor": reply_cursor}).json()

4. Subreddit feed

feed = requests.post(f"{BASE}/api/v1/reddit/subreddit/posts", headers=HEADERS, json={"subreddit": "Python", "sort": "TOP"}).json()

text

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:42