Back to skill

Security audit

omnifun

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent for omni.fun trading, but it asks agents to use authenticated crypto-trading and token-launch APIs with broad triggers and weakly scoped safety guidance.

Review this before installing if you use real wallets or funds. Use a dedicated low-balance wallet, set strict oVault per-trade and daily limits immediately, avoid generic agent prompts like “trade” or “launch” unless you mean omni.fun, require manual review before reward claims, token launches, webhook changes, or signing returned calldata, and rotate the API key if it may have appeared in logs or process telemetry.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:43
Finding
Replayable Wallet Registration Signature<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:43-51` **Vulnerability Type**: Replayable authentication proof **Risk Level**: Medium ### Vulnerable Code ```bash # Sign with cast (Foundry) — produces a hex signature cast wallet sign "I am registering as an omni.fun agent" # Or use any EIP-712 signer — the signature proves wallet ownership ``` ```bash curl -X POST https://api.omni.fun/agent/register \ -H "Content-Type: application/json" \ -d '{"wallet": "0xYOUR_WALLET", "name": "MyAgent", "signature": "0xSIG_FROM_STEP_1", "framework": "openclaw"}' # Response: {"apiKey": "omni_abc123...", "agentId": "..."} ``` ### Technical Analysis The documented registration procedure signs a fixed message that does not include a server-issued nonce, expiration time, intended recipient, chain ID, or explicit EIP-712 domain separation. Although the text refers to EIP-712, the demonstrated `cast wallet sign` command signs a static text message and does not show typed structured data. A signature over a fixed message remains valid indefinitely unless the server implements additional undocumented replay protection. An attacker who acquires the signature could resubmit it with the corresponding public wallet address. Because the registration endpoint returns an API key, successful replay may allow the attacker to register or impersonate the wallet identity. This assessment is limited to the documented workflow. The server implementation was not included in the project, so undocumented server-side nonce or duplicate-registration controls could not be verified. ### Attack Path 1. The wallet owner signs the fixed registration message. 2. An attacker obtains the signature through logs, clipboard history, command output, insecure storage, or interception at an untrusted client boundary. 3. The attacker sends the wallet address and captured signature to `POST /agent/register`. 4. If the service does not enforce a single-use challenge or reject duplicate regis ...[truncated 863 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require the client to request a cryptographically random, single-use registration nonce from the server. 2. Use a fully specified EIP-712 typed-data structure containing: - The wallet address - The server-issued nonce - The intended registration action - The service domain and verifying contract or service identifier - The applicable chain ID - An issuance timestamp and short expiration time 3. Bind the challenge to the submitted agent metadata where appropriate. 4. Atomically invalidate the nonce after the first verification attempt or successful registration. 5. Reject expired, previously used, malformed, and cross-domain signatures. 6. Enforce clear duplicate-registration and API-key recovery policies. 7. Replace the static-message example with an exact typed-data signing example supported by the chosen signer. 8. Avoid printing or persistently storing registration signatures, even after nonce protection is added. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:81
Finding
API Key Exposed Through Command-Line Process Arguments<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:81-83` **Vulnerability Type**: Local credential disclosure through process arguments **Risk Level**: Low ### Vulnerable Code ```bash # Check rewards curl -s -H "X-API-Key: $OMNIFUN_API_KEY" https://api.omni.fun/agent/rewards/summary | jq # Claim rewards curl -X POST -H "X-API-Key: $OMNIFUN_API_KEY" https://api.omni.fun/agent/rewards/claim ``` The same command pattern is repeated for authenticated API operations elsewhere in `SKILL.md`, including vault configuration, trading, portfolio access, token launching, and webhook registration. ### Technical Analysis The shell expands `$OMNIFUN_API_KEY` before launching `curl`. The resulting secret-bearing header is supplied as a command-line argument to the process. On systems where other local users, monitoring agents, debugging tools, audit collectors, or process supervisors can inspect process arguments, the expanded API key may become visible. The requests use HTTPS, so the issue is not plaintext network transmission. The exposure occurs locally through process metadata and potentially through command tracing, terminal capture, or operational telemetry. Exploitability depends on the host's process-isolation configuration and the attacker's local visibility. The short lifetime of a `curl` process lowers the likelihood but does not eliminate the risk. ### Attack Path 1. The user exports `OMNIFUN_API_KEY` and runs one of the documented authenticated `curl` commands. 2. The shell expands the variable into the `X-API-Key` header argument. 3. A local attacker or monitoring component observes the process command line while `curl` is running, or obtains it from process telemetry. 4. The attacker extracts the API key. 5. The attacker sends authenticated requests to the omni.fun API using the stolen key. 6. Access continues until the credential expires or is revoked. ### Impact Assessment A stolen key may allow access to authenticated functionality do ...[truncated 513 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Avoid placing secrets directly in command-line arguments. 2. Use a permission-restricted curl configuration file or a client implementation that injects authentication headers internally. 3. Ensure temporary credential configuration files are created with owner-only permissions, removed promptly, and never committed to source control. 4. Disable shell tracing before handling credentials and avoid logging complete request headers. 5. Configure monitoring and observability systems to redact `X-API-Key` and similar authentication headers. 6. Provide narrowly scoped, short-lived, and revocable API credentials where supported. 7. Add API-key rotation and explicit revocation procedures to the documentation. 8. Rotate any key suspected of appearing in process telemetry, terminal recordings, or diagnostic logs. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (23)

Vague Triggers

Medium
Confidence
97% confidence
Finding
The trigger list includes broad generic terms like 'trade', 'launch', 'cross-chain', and 'memecoin', which can cause the skill to activate in unrelated contexts. Unintended invocation is risky here because the skill exposes authenticated trading, token launch, reward claim, and webhook-registration actions against an external financial API.

External Transmission

Medium
Category
Data Exfiltration
Content
**Step 2 — Register and get your API key**:
```bash
curl -X POST https://api.omni.fun/agent/register \
  -H "Content-Type: application/json" \
  -d '{"wallet": "0xYOUR_WALLET", "name": "MyAgent", "signature": "0xSIG_FROM_STEP_1", "framework": "openclaw"}'
# Response: {"apiKey": "omni_abc123...", "agentId": "..."}
Confidence
88% confidence
Finding
This registration flow transmits wallet identity and signature material to an external service to mint a long-lived API key. Although expected for onboarding, it creates an external trust boundary and could expose sensitive account linkage or enable abuse if users do not understand they are provisioning trading access to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
**Step 2 — Register and get your API key**:
```bash
curl -X POST https://api.omni.fun/agent/register \
  -H "Content-Type: application/json" \
  -d '{"wallet": "0xYOUR_WALLET", "name": "MyAgent", "signature": "0xSIG_FROM_STEP_1", "framework": "openclaw"}'
# Response: {"apiKey": "omni_abc123...", "agentId": "..."}
Confidence
88% confidence
Finding
This registration flow transmits wallet identity and signature material to an external service to mint a long-lived API key. Although expected for onboarding, it creates an external trust boundary and could expose sensitive account linkage or enable abuse if users do not understand they are provisioning trading access to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Earn While You Trade

**First 100 agents trade FREE for 60 days** (100% fee rebate on every trade). Check open slots: `GET https://api.omni.fun/agent/stats/growth`

| Incentive | Amount | How |
|-----------|--------|-----|
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# Check rewards
curl -s -H "X-API-Key: $OMNIFUN_API_KEY" https://api.omni.fun/agent/rewards/summary | jq
# Claim rewards
curl -X POST -H "X-API-Key: $OMNIFUN_API_KEY" https://api.omni.fun/agent/rewards/claim
```

## Security Model
Confidence
83% confidence
Finding
Claiming rewards is a state-changing authenticated action against an external financial service. While less dangerous than a trade, accidental invocation could redirect funds timing, trigger unintended tax/accounting events, or interact with wallet-linked payout behavior without deliberate user intent.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# Set a $50/trade and $200/day limit
curl -X PUT https://api.omni.fun/agent/vault \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"maxPerTrade": 50, "maxDaily": 200, "approvedChains": ["base", "arbitrum"]}'
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### Buy a token
```bash
curl -X POST https://api.omni.fun/agent/trade \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action": "buy", "token": "0xTOKEN", "amount": 10, "chain": "base"}'
Confidence
90% confidence
Finding
This duplicate URL-level finding still maps to a sensitive buy-trade flow that can lead to real asset movement once the returned calldata is signed. In a memecoin trading skill with broad triggers, the chance of unintended financial action materially increases the danger.

External Transmission

Medium
Category
Data Exfiltration
Content
### Buy a token
```bash
curl -X POST https://api.omni.fun/agent/trade \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action": "buy", "token": "0xTOKEN", "amount": 10, "chain": "base"}'
Confidence
90% confidence
Finding
This duplicate URL-level finding still maps to a sensitive buy-trade flow that can lead to real asset movement once the returned calldata is signed. In a memecoin trading skill with broad triggers, the chance of unintended financial action materially increases the danger.

External Transmission

Medium
Category
Data Exfiltration
Content
### Sell a token
```bash
curl -X POST https://api.omni.fun/agent/trade \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action": "sell", "token": "0xTOKEN", "amount": 1000000, "chain": "base"}'
Confidence
90% confidence
Finding
The authenticated sell-trade endpoint can prepare calldata to liquidate holdings through an external service, creating direct financial risk if used unintentionally or under prompt manipulation. Because sells can dispose of volatile assets quickly and cross-chain settlement may add complexity, misuse can cause irreversible losses.

External Transmission

Medium
Category
Data Exfiltration
Content
### Launch your own token
```bash
curl -X POST https://api.omni.fun/agent/launch \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Agent Token", "symbol": "MAGNT", "description": "AI agent token"}'
Confidence
89% confidence
Finding
This duplicate URL-level finding corresponds to the token launch flow, which can initiate a paid and reputation-sensitive action through external infrastructure. In context, launching memecoins across multiple chains amplifies the consequence of accidental use.

External Transmission

Medium
Category
Data Exfiltration
Content
### Launch your own token
```bash
curl -X POST https://api.omni.fun/agent/launch \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Agent Token", "symbol": "MAGNT", "description": "AI agent token"}'
Confidence
89% confidence
Finding
This duplicate URL-level finding corresponds to the token launch flow, which can initiate a paid and reputation-sensitive action through external infrastructure. In context, launching memecoins across multiple chains amplifies the consequence of accidental use.

External Transmission

Medium
Category
Data Exfiltration
Content
Register a webhook to get instant notifications on new launches, graduations, and trade confirmations.

```bash
curl -X POST https://api.omni.fun/agent/webhooks \
  -H "X-API-Key: $OMNIFUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-agent.com/webhook", "events": ["token.new", "token.graduated", "trade.confirmed"]}'
Confidence
84% confidence
Finding
Webhook registration sends a callback URL and enables external event delivery, which expands the attack surface and can expose internal endpoints if configured unsafely. If an agent registers arbitrary URLs, this can create SSRF-like operational risk, data leakage via callbacks, or abuse of internal webhook consumers.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- $15 minimum for all cross-chain trades
- 2% default slippage protection
- $29 USDC launch fee
- Tokens auto-deploy on 8 chains (~19s after launch)
- Rewards paid every Monday — claim anytime, $10 minimum

## Resources
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Static analysis

No suspicious patterns detected.