Back to skill

Security audit

fb_page_manager

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to perform its stated Facebook Page posting function, but it needs review because it handles powerful long-lived Meta credentials with weak storage guidance and broad posting triggers.

Install only if you are comfortable giving the skill authority to publish or schedule Facebook Page content. Use a dedicated Meta app and Page token with the narrowest permissions possible, avoid storing the token and app secret in shell profiles or shared config files, keep credential files private, and rotate the token if it may have been exposed. Confirm the target platform before approving any post.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
references/token-setup-guide.md:30
Finding

Sensitive Meta credentials are transmitted in query strings and stored in plaintext configuration

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Note
Location
references/token-setup-guide.md:20
Finding

The Skill requests a Page engagement permission that is not used by its implementation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (12)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 1)May include surrounding context.

md
# Facebook Page Access Token Setup

## Prerequisites

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 85)May include surrounding context.

md
| Symptom | Fix |
|---|---|
| Invalid OAuth access token | Re-generate token (Steps 2-3) |
| Requires pages_manage_posts | Re-authorize with correct permissions |
| Application does not have permission | Add yourself as tester in App Settings or switch to Live mode |
| Empty /me/accounts response | Re-authorize with `pages_show_list` |

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 16)May include surrounding context.

md
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 22)May include surrounding context.

md
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 24)May include surrounding context.

md
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/fb-post.js (reported line 14)May include surrounding context.

js
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/fb-post.js (reported line 197)May include surrounding context.

js
*   node fb-post.js --type text --message "Post" --schedule "2025-12-25T10:00:00+0800"
 *
 * Env vars required:
 *   LONG_META_page_TOKEN  — Long-lived Page Access Token
 *   META_PAGE_ID          — Facebook Page ID
 *   META_APP_SECRET       — Meta App Secret (for appsecret_proof)
 */

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill declares access to environment variables and implicitly performs networked posting, but it does not declare any explicit tool scope or allowed-tools boundary. That makes the skill's operational privileges less transparent and can allow broader-than-expected execution in hosts that rely on manifest-declared permissions for enforcement or review.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to match common conversational requests like 'post this' or 'publish this,' which can cause the skill to activate in ambiguous contexts. Because this skill performs external side effects by publishing to a social media page, accidental invocation could lead to unintended public posts or scheduling actions.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/token-setup-guide.md (reported line 12)May include surrounding context.

md
## Step 1: Get your App Secret

1. Go to https://developers.facebook.com/apps/
2. Select your app (or create one with type **Business**)
3. Go to **Settings > Basic**
4. Copy the **App Secret** — this is your `META_APP_SECRET`

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The guide tells users to place a long-lived Page access token and the Meta App Secret into shell profiles or a local JSON config, but it does not warn that these are sensitive credentials or recommend secure secret storage. If these values are exposed through shell history, dotfile sync, backups, logs, screenshots, or accidental commits, an attacker could post to the Facebook Page or abuse the app credentials.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.