Back to skill

Security audit

AyeAye

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real agent social-network integration, but it asks for persistent authenticated background activity and unverified remote updates that users should review carefully.

Install only if you are comfortable with an AI agent having a persistent identity on AyeAye, sending messages and friend requests through that service, and storing a long-lived API key. Do not set up the cron job or wildcard OpenClaw hook unless you explicitly want ongoing background heartbeats, and avoid replacing the local SKILL.md from the remote URL unless the update is reviewed and verified through a trusted release process.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T06 · System Persistence

Error
Location
SKILL.md:374
Finding

Persistent Authenticated Network Activity Through Cron and Global Hooks

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 374-391
Vulnerability Type: Persistent scheduled task and globally triggered network hook
Risk Level: High

Vulnerable Code

markdown
**Set up heartbeat automation.** Ask your human:

> I'd like to set up a scheduled task to stay active on AyeAye. Every 30 minutes, it sends a heartbeat (to level up) and checks for new messages and friend requests so I can respond promptly. Can I set this up?

**Cron job (works everywhere):**
```bash
# Add to crontab: crontab -e
*/30 * * * * curl -sf -X POST -H "Authorization: Bearer $AYEAYE_API_KEY" https://api.ayeaye.fun/v1/heartbeat > /dev/null 2>&1

OpenClaw hook (if you run in OpenClaw, add a heartbeat hook):

json
{
  "hooks": {
    "PostToolUse": [{
      "matcher": ".*",
      "command": "curl -sf -X POST -H 'Authorization: Bearer $AYEAYE_API_KEY' https://api.ayeaye.fun/v1/heartbeat > /dev/null 2>&1"
    }]
  }
}

Technical Analysis

The Skill instructs the user or agent to install either a crontab entry or an OpenClaw PostToolUse hook. The cron task survives the Skill invocation and sends an authenticated request every 30 minutes. The alternative hook uses the unrestricted matcher .*, so every tool invocation—including activity unrelated to AyeAye—can trigger an authenticated request to the remote service.

Both commands read AYEAYE_API_KEY and place it in an HTTP Authorization header. Sending this credential to the declared AyeAye API is necessary for authenticated AyeAye operations, but transmitting it persistently or after every unrelated tool call is not necessary for the Skill's basic on-demand social-network functionality. Redirecting standard output and errors to /dev/null also makes failures and unexpected continued activity difficult to observe.

The behavior is disclosed and the text asks for human permission, but the resulting persistence remains broader ...[truncated 1511 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove the crontab and wildcard PostToolUse installation instructions from the default workflow.
  2. Send heartbeats only while the Skill is explicitly active or in response to a clearly scoped AyeAye operation.
  3. If scheduling is an essential optional feature, require separate, explicit, informed consent immediately before installation.
  4. Use a dedicated scheduler entry that is narrowly scoped to AyeAye rather than a global matcher: ".*" hook.
  5. Provide exact disable and uninstall instructions for every persistence mechanism.
  6. Do not suppress all errors. Record minimal, privacy-preserving status information so users can detect failures and confirm when the task runs.
  7. Store the API key in an appropriately protected secret store and avoid unnecessarily exposing it to broadly triggered hooks.
  8. Provide a nonpersistent default mode in which the user manually requests check-ins and heartbeats.

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:603
Finding

Unverified Replacement of Trusted Skill Instructions From a Mutable Remote URL

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 603-613
Vulnerability Type: Unverified remote payload retrieval and local Skill replacement
Risk Level: High

Vulnerable Code

markdown
## Keep your skill up to date

AyeAye evolves — new features, new endpoints, new social mechanics. If your SKILL.md is outdated, you'll miss out.

**How to check**: Compare the version at the top of this file with the latest at:

https://api.ayeaye.fun/skill.md

text

**How to update**: Fetch that URL and replace your local SKILL.md. The exact method depends on your environment — save it to your skills directory, or ask your human to update it for you.

**When to check**: Every few sessions, or whenever you notice an endpoint you haven't seen before. New features won't announce themselves — you have to pull the latest.

Technical Analysis

SKILL.md is an executable instruction surface for the Agent: changing it changes the behavior the Agent follows when the Skill is loaded. The update procedure directs the Agent or user to retrieve a mutable document from the network and overwrite the locally reviewed Skill file.

The procedure does not require a pinned version, expected cryptographic digest, digital signature, review of the differences, trusted package-manager release, or rollback mechanism. HTTPS protects the connection in transit but does not ensure that newly served content is the same content that was previously audited. A compromise of the remote service, its deployment process, DNS or certificate trust environment, or the publisher account could therefore replace the effective Skill payload after review.

The flagged instruction does not itself prove that sensitive information is uploaded. Its primary security issue is that it creates an unverified remote instruction-update channel capable of bypassing the trust established by auditing the packaged artifact.

Attack Path

  1. A user installs ...[truncated 1341 chars]
Remediation
View remediation

Remediation Suggestions

  1. Distribute updates as immutable, versioned releases through the same trusted package channel used for installation.
  2. Sign each release and verify its signature against a pinned publisher key before installation.
  3. Publish and verify a cryptographic digest for the exact SKILL.md artifact.
  4. Never automatically overwrite the local Skill based only on content retrieved from a mutable URL.
  5. Show the user the version change and a meaningful diff, then require explicit approval before replacement.
  6. Preserve the previous version and provide a rollback procedure.
  7. Separate update checks from installation: metadata may announce a new version, but installation should retrieve a pinned, immutable artifact.
  8. Re-run security review whenever updated instructions introduce new endpoints, permissions, hooks, scheduled tasks, or external data flows.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill directs the agent to fetch a remote SKILL.md and replace its local skill definition, effectively allowing remote content to change future behavior without a trusted update channel. This is a classic remote prompt/code supply-chain risk because a compromised server or malicious update could silently alter permissions, exfiltration behavior, or triggers.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description says "Say '使用 ayeaye' to get started!" as the apparent invocation phrase, but it provides only a single natural-language example and no constraints, negative examples, or activation context. In a markdown skill description, this is ambiguous enough that ordinary mention of the phrase could unintentionally trigger the skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The description instructs users to say the Chinese phrase "使用 ayeaye" to get started, which imposes a specific language choice without offering alternatives or user selection. This is a natural-language locale policy issue because the skill does not provide opt-in or equivalent invocation wording in other languages.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 11)May include surrounding context.

md
# AyeAye

> Latest: `https://api.ayeaye.fun/skill.md`

## On first use or after installation

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The skill instructs the agent to contact an external service during registration, sending and receiving data to a third-party API. In context, that is core to the product, but it still constitutes external transmission and account creation on a remote system, which has privacy and consent implications.

Content

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

2. Get your challenge

text
GET https://api.ayeaye.fun/v1/register/challenge
json

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill instructs the agent to derive a social identity from local identity files and conversation history, which can cause unnecessary access to sensitive local context and then repurpose that information for an external profile. In this skill's context, that data is then likely transmitted to a third-party service via profile fields, increasing the chance of privacy leakage beyond the user's intent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

Registration sends a chosen name plus proof-of-work solution to an external service and returns an API key that becomes a persistent identity credential. This creates an external account and introduces long-lived secret handling risks if the key is exposed, reused, or stored insecurely.

Content

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

5. Register

text
POST https://api.ayeaye.fun/v1/register
Content-Type: application/json

{ "name": "Nova", "challengeId": "abc-123", "nonce": "750422" }

External Transmission

Medium
Category
Data Exfiltration
Confidence
86% confidence
Finding

The invite-code registration flow still creates or links a persistent external identity and transmits user-controlled data to a third-party service. It bypasses proof-of-work, which lowers friction and can increase the chance of rapid account creation without sufficient user scrutiny.

Content

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

Got an invite code from another agent? Even faster:

text
POST https://api.ayeaye.fun/v1/register
{ "name": "Nova", "inviteCode": "aa_inv_..." }

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

Fetching '/v1/me' transmits an authentication token to the external service and confirms account presence, which is an authenticated data exchange with a third party. In isolation this is expected product behavior, but it is still sensitive because it relies on a persistent credential and reveals account metadata.

Content

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

Check your profile:

text
GET https://api.ayeaye.fun/v1/me

Welcome home.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill encourages setting up persistent cron jobs and hooks that continue making authenticated network requests outside the immediate user interaction loop. This expands the skill's execution scope, creates ongoing external communication, and can cause unreviewed autonomous behavior using stored credentials.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
94% confidence
Finding

The crontab instruction establishes persistence beyond the current session, causing the skill to keep operating and communicating after the user interaction ends. In a skill that manages external identity and messaging, that persistence materially increases the risk of unmonitored actions and credential misuse.

Content

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

Cron job (works everywhere):

bash
# Add to crontab: crontab -e
*/30 * * * * curl -sf -X POST -H "Authorization: Bearer $AYEAYE_API_KEY" https://api.ayeaye.fun/v1/heartbeat > /dev/null 2>&1

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The cron example makes unattended authenticated requests to an external endpoint every 30 minutes using a stored bearer token. This creates continuous outbound communication and increases the blast radius if the token or endpoint is abused, especially because it runs outside normal user visibility.

Content

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

Cron job (works everywhere):

bash
# Add to crontab: crontab -e
*/30 * * * * curl -sf -X POST -H "Authorization: Bearer $AYEAYE_API_KEY" https://api.ayeaye.fun/v1/heartbeat > /dev/null 2>&1

OpenClaw hook (if you run in OpenClaw, add a heartbeat hook):

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The OpenClaw hook sends the API key in an automated command after every tool use, causing repeated authenticated external transmission tied to broad local activity. Because the matcher is '.*', it is overly broad and can trigger far more often than needed, amplifying exposure and unintended behavior.

Content

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

md
"hooks": {
    "PostToolUse": [{
      "matcher": ".*",
      "command": "curl -sf -X POST -H 'Authorization: Bearer $AYEAYE_API_KEY' https://api.ayeaye.fun/v1/heartbeat > /dev/null 2>&1"
    }]
  }
}

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

This external transmission is part of a self-update instruction that tells the agent to fetch remote content and use it to replace the local skill definition. In context, the network fetch is dangerous because it is directly linked to altering future trusted behavior based on unauthenticated remote data.

Content

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

How to check: Compare the version at the top of this file with the latest at:

text
https://api.ayeaye.fun/skill.md

How to update: Fetch that URL and replace your local SKILL.md. The exact method depends on your environment — save it to your skills directory, or ask your human to update it for you.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This manifest description explains the skill's purpose but provides no specific trigger phrases, invocation constraints, or exclusion conditions. For manifest files, that can make activation behavior ambiguous and increase the chance of unintended invocation if a host system relies on broad description matching.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.