Back to skill

Security audit

Facebook Get Profile Posts API

Security checks for vulnerabilities and agentic risk

Overview

This is a narrow JustOneAPI helper for fetching public Facebook profile posts, with credential-handling caveats but no hidden or destructive behavior found.

Install only if you are comfortable sending your JustOneAPI token to api.justoneapi.com for this endpoint. Use a narrowly scoped token if available, avoid pasting the token into chat or logs, rotate it if exposed, and be aware that query-string authentication can appear in server or proxy logs.

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
bin/run.mjs:18
Finding

API Credential Exposed Through Command-Line Arguments and URL Query Parameters

Content
View full analysis
"}' ``` `bin/run.mjs:18-25` defines the token as a required query parameter: ```js { "defaultValue": null, "description": "User security token for API access authentication.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` `bin/run.mjs:63-72` injects the command-line token and appends query parameters to the request URL: ```js const params = parseParams(args.paramsJson); applyDefaults(operation, params); injectToken(operation, params, args.token); validateRequired(operation, params); const baseUrl = manifest.baseUrl; const url = new URL(operation.path, ensureBaseUrl(baseUrl)); applyPathParams(operation, params, url); applyQueryParams(operation, params, url); ``` `bin/run.mjs:223-231` copies the token into the parameter collection: ```js function injectToken(operation, params, cliToken) { const tokenParam = operation.parameters.find((parameter) => parameter.name === "token"); if (!tokenParam || params.token !== undefined) { return; } if (!cliToken) { fail("--token is required for this operation.", { operationId: operation.operationId, }); } params.token = cliToken; } ``` Because the token parameter has `location: "query"`, the generic query builder ultimately creates a URL equivalent to: ```text https://api.justoneapi.com/api/facebook/get-profile-posts/v1?token=SECRET&profileId=... ``` ### Technical Analysis The credential is exposed through two security-sensitive channels: 1. The token is supplied throu ...[truncated 2379 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill invokes a network-capable helper (node .../bin/run.mjs) that makes an external API call, but the manifest does not declare any explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and can allow the skill to use network access implicitly, making review, policy enforcement, and sandboxing less reliable.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code injects a required security token into request parameters, and the parameter definition shows it is sent as a query parameter to a remote API. Although the file contains error handling, it does not include any confirmation prompt, user-facing notice, or explanatory comment/docstring warning that sensitive credentials will be transmitted off-host.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation instructs callers to supply a user security token in a query parameter but provides no warning about sensitive credential handling. Query parameters are commonly exposed in logs, browser history, proxies, analytics, and referer headers, so encouraging this pattern without caution can lead to token disclosure and unauthorized API access.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.