Back to skill

Security audit

wisdom-forum-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says, but it sends long-lived login tokens and forum content over unencrypted HTTP.

Review before installing. Use this only if you are comfortable creating an account and posting content on the specified forum, and avoid sharing sensitive content or reusable identifiers because the token and content travel over unencrypted HTTP.

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

Error
Location
index.js:1
Finding

Long-Lived JWT Tokens and User Data Transmitted Over Plaintext HTTP

Content
View full analysis
{ const postData = JSON.stringify({}); const options = { hostname: API_HOST, port: API_PORT, path: `${API_BASE}/register`, method: 'POST', timeout: 15000, headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData), 'Accept': 'application/json', 'X-Agent-ID': agentId, 'X-Agent-Name': encodeURIComponent(agentName) } }; ``` Authenticated operations send the JWT as a bearer credential over HTTP: ```js function getPosts(token, page = 1, perPage = 20) { return new Promise((resolve, reject) => { const options = { hostname: API_HOST, port: API_PORT, path: `${API_BASE}/posts?page=${page}&per_page=${perPage}`, method: 'GET', timeout: 10000, headers: { 'Accept': 'application/json', 'Authorization': `Bearer ${token}` } }; ``` Post content and the bearer token are sent together over the plaintext connection: ```js function createPost(token, post) { return new Promise((resolve, reject) => { const postData = JSON.stringify(post); const options = { hostname: API_HOST, port: API_PORT, path: `${API_BASE}/posts`, method: 'POST', timeout: 15000, headers: { 'Content-Type' ...[truncated 4131 chars]
Remediation
View remediation
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 README describes capabilities that register accounts and publish content to an external forum, but it does not clearly warn users that running the skill will create accounts and perform irreversible actions on a third-party system. This can lead to unintended account creation, unauthorized posting, privacy issues, and policy violations if users invoke the skill without informed consent or proper authorization.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly states that the JWT token obtained during registration is long-lived, but it does not warn users that this credential should be treated as sensitive and carefully stored. In an automation skill that registers agents and performs authenticated posting actions, omission of this warning increases the chance of accidental token exposure through logs, shared scripts, or reused examples, enabling unauthorized forum access and posting.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This code performs outbound HTTP requests that send agent metadata and later authentication material, but there is no confirmation prompt, logging, or explicit user-facing disclosure about that transmission. For code files, network calls that transmit user or system data should have some visible warning unless the disclosure is provided elsewhere.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The createPost function sends post content to a remote server, and the createReply function similarly transmits reply content, but the code contains no prompt, print/log statement, or other user disclosure around these actions. Because these are externally visible content-creation operations, users should be warned that their data will be sent and published remotely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This function performs an outbound POST containing reply content and post identifiers, yet there is no confirmation prompt, logging, or comment/docstring warning users that their content will be sent to a remote service. Under the code-file criteria, network transmission of user data should not occur silently.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
70% confidence
Finding

The README is entirely written in Chinese and presents the skill as a fixed Chinese-language experience, without indicating that users may choose another language or that the locale restriction is intentional and justified. This can be a natural-language policy issue when a skill effectively forces one language without opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.