Back to skill

Security audit

Arena Agent

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Arena.social automation tool, but it can automatically post replies and scheduled content from the user's account with defaults that need careful review.

Review this before installing if you do not want unattended Arena.social activity. Use a scoped API key if available, keep the key out of shared folders and version control, avoid enabling daemon or cron mode until you have tested behavior, and disable automatic posting/replies unless you explicitly want the agent to publish from your account.

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
  • 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
  • Rogue AgentSelf-Modification, Session Persistence
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared purpose understates the operational scope: beyond monitoring and replying, the skill can like content, read feeds/trending posts, and drive broader engagement actions. Capability-description mismatch is dangerous because users and orchestration systems may grant trust based on an incomplete description, leading to unexpected account activity and over-privileged deployment.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

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

Content

Scanner excerpt · cli.js (reported line 21)May include surrounding context.

js
const path = require('path');
const fs = require('fs');

// Load .env if exists
const envPath = path.join(__dirname, '.env');
if (fs.existsSync(envPath)) {
  const envContent = fs.readFileSync(envPath, 'utf-8');

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

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

Content

Scanner excerpt · cli.js (reported line 245)May include surrounding context.

js
const path = require('path');
const fs = require('fs');

// Load .env if exists
const envPath = path.join(__dirname, '.env');
if (fs.existsSync(envPath)) {
  const envContent = fs.readFileSync(envPath, 'utf-8');

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

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

Content

Scanner excerpt · cli.js (reported line 22)May include surrounding context.

js
const fs = require('fs');

// Load .env if exists
const envPath = path.join(__dirname, '.env');
if (fs.existsSync(envPath)) {
  const envContent = fs.readFileSync(envPath, 'utf-8');
  for (const line of envContent.split('\n')) {

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill describes capabilities that require environment access and outbound network access, but it does not declare any tool scope or permission boundaries. This is dangerous because an agent can access secrets such as API keys and perform external actions on the user's behalf without explicit, machine-readable limitation or user consent controls.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill advertises autonomous posting and engagement but does not prominently warn that it will perform actions from the user's account. In a social-media automation context, lack of informed-consent messaging increases the risk of accidental impersonation, policy violations, spam, and reputational harm.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

  1. Register your agent at Arena's Agent API:
bash
curl -X POST https://api.starsarena.com/agents/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Your Agent Name",

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The daemon instructions encourage continuous automated operation without a clear warning that it may post, reply, and engage on an ongoing basis. This is especially risky because 24/7 unattended operation magnifies the impact of prompt mistakes, bad context, or abusive mentions triggering unwanted public actions.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
78% confidence
Finding

The skill recommends storing a live API key in a .env file, which creates persistent credential storage on disk. While common in development, this is risky for an autonomous account-acting agent because compromised local files, backups, or misconfigured permissions could expose the key and allow unauthorized posting or account automation.

Content

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

Configuration

Set environment variables or create .env:

bash
# Required

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
// ============================================================================

class ArenaApiClient {
  constructor(apiKey, baseUrl = 'https://api.starsarena.com/agents') {
    this.apiKey = apiKey;
    this.baseUrl = baseUrl;
  }

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
// ============================================================================

class ArenaApiClient {
  constructor(apiKey, baseUrl = 'https://api.starsarena.com/agents') {
    this.apiKey = apiKey;
    this.baseUrl = baseUrl;
  }

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · cli.js (reported line 38)May include surrounding context.

js
// ============================================================================

class ArenaApiClient {
  constructor(apiKey, baseUrl = 'https://api.starsarena.com/agents') {
    this.apiKey = apiKey;
    this.baseUrl = baseUrl;
  }

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · src/arena-agent.ts (reported line 97)May include surrounding context.

ts
// ============================================================================

class ArenaApiClient {
  constructor(apiKey, baseUrl = 'https://api.starsarena.com/agents') {
    this.apiKey = apiKey;
    this.baseUrl = baseUrl;
  }

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest describes 24/7 monitoring, auto-replies, and scheduled contextual posts. In the daemon, autoPost is exposed and reported in status output, but the run loop only processes notifications and generates replies; there is no code that creates standalone scheduled posts based on time or context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The daemon can automatically post replies on the user's behalf based solely on incoming notifications, without an explicit confirmation or prominent runtime warning at the action site. In the context of a social-media automation agent, this increases the chance of unintended account actions, spam, reputational damage, and adversarial triggering through crafted mentions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The one-shot mention processor also creates replies automatically on behalf of the user with no confirmation step beyond invoking the command. In this skill context, that is more dangerous because the tool is specifically designed to act continuously on a real social account, so malicious or baiting mentions can induce unwanted outbound posts.

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 · cli.js (reported line 490)May include surrounding context.

js
Usage:
  arena-agent daemon              Start 24/7 monitoring daemon
  arena-agent notifications       Show recent notifications  
  arena-agent post "content"      Create a new post
  arena-agent reply <id> "text"   Reply to a thread
  arena-agent like <threadId>     Like a thread
  arena-agent trending            Show trending posts

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes an agent for monitoring notifications, auto-replying to mentions, and making scheduled posts. However, the API client also implements liking, unliking, reposting, quoting, following, unfollowing, follower/following enumeration, user search, and arbitrary user/thread lookup, which are materially broader engagement capabilities than the stated scope.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Auto-reply and auto-post are enabled by default, causing the agent to take external account actions without explicit affirmative user consent at initialization. In an agent context, this can lead to unintended public posts, reputational harm, spammy behavior, or policy violations if a user instantiates the skill expecting passive monitoring only.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
72% confidence
Finding

The configurable baseUrl allows the API key and all account-action traffic to be redirected to an arbitrary endpoint if configuration is influenced by an attacker or unsafe environment. In that case, the skill could disclose credentials and send account data or commands to an untrusted server under the guise of normal API communication.

Content

Scanner excerpt · src/arena-agent.ts (reported line 427)May include surrounding context.

ts
postsPerDay: config.postsPerDay || 4,
      personality: config.personality || 'friendly, helpful crypto enthusiast',
      statePath: config.statePath || path.join(process.env.HOME || '', '.arena-agent-state.json'),
      baseUrl: config.baseUrl || 'https://api.starsarena.com/agents',
    };

    this.client = new ArenaApiClient(this.config.apiKey, this.config.baseUrl);

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The inline CLI/help documentation presents --no-auto-post as a meaningful control over automatic posting. However, autoPost is only parsed and printed, and no branch in runCycle or elsewhere uses it to create or disable autonomous posts, contradicting the documented behavior.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

The dependency uses a caret range (^16.4.0), which permits automatic installation of newer compatible versions instead of an exact, reviewed release. In an autonomous agent that may run continuously and handle credentials via environment variables, unexpected upstream package changes or a compromised published version could introduce supply-chain risk.

Content

Scanner excerpt · package.json (reported line 27)May include surrounding context.

json
"author": "OpenClaw",
  "license": "MIT",
  "dependencies": {
    "dotenv": "^16.4.0"
  },
  "devDependencies": {
    "@types/node": "^20.11.0",

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The devDependency is specified with a caret range, allowing resolver-selected updates rather than a strictly fixed version. While @types/node is not typically shipped to production, unpinned build-time dependencies can still affect developer environments and CI, and in some cases can contribute to supply-chain compromise or build instability.

Content

Scanner excerpt · package.json (reported line 30)May include surrounding context.

json
"dotenv": "^16.4.0"
  },
  "devDependencies": {
    "@types/node": "^20.11.0",
    "typescript": "^5.3.0"
  },
  "engines": {

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
91% confidence
Finding

TypeScript is a build-time dependency pinned only to a version range, so builds may consume newer releases that have not been validated by the maintainer. Although this is lower risk than a runtime package, a malicious or breaking upstream release could impact CI/developer systems or alter generated artifacts for an always-on social automation agent.

Content

Scanner excerpt · package.json (reported line 31)May include surrounding context.

json
},
  "devDependencies": {
    "@types/node": "^20.11.0",
    "typescript": "^5.3.0"
  },
  "engines": {
    "node": ">=18.0.0"

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The agent automatically marks notifications as seen after processing, which changes user account state without clear disclosure or explicit permission. While lower impact than posting, it can hide unread items from the account owner, interfere with workflows, and reduce visibility into important interactions.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
cli.js:28

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
src/arena-agent.ts:426