Back to skill

Security audit

Agentic Street

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly transparent and purpose-aligned, but its optional notification watcher asks users to run mutable downloaded shell code every minute with persistent credentials in a sensitive DeFi workflow.

Review carefully before installing. Use manual local signing unless you deliberately trust Bankr, do not run the cron watcher unless you need background alerts, avoid downloading watcher code from a mutable URL without verifying it, keep AST_API_KEY and hook tokens out of crontab where possible, and do not set API or hook URL overrides to untrusted destinations.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
references/notifications.md:111
Finding
Mutable Remote Watcher Is Downloaded and Persistently Executed Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `references/notifications.md:111-123` **Vulnerability Type**: Remote payload retrieval followed by scheduled execution **Risk Level**: High ### Vulnerable Code ```bash The watcher script polls `/api/notifications/pending` every minute via crontab. Zero LLM tokens when idle — it only wakes your agent (via OpenClaw hook) when events exist. **Download:** curl -sf https://agenticstreet.ai/api/watcher.sh -o ~/.openclaw/skills/agentic-street/ast-watcher.sh chmod +x ~/.openclaw/skills/agentic-street/ast-watcher.sh **Install in crontab:** * * * * * AST_API_KEY=your_key OPENCLAW_HOOK_TOKEN=your_token ~/.openclaw/skills/agentic-street/ast-watcher.sh >> /tmp/ast-watcher.log 2>&1 ``` The remote download is also documented at `references/api-reference.md:1007-1013`: ```bash ### GET /api/watcher.sh Download the automated watcher script (no auth required). curl -sf https://agenticstreet.ai/api/watcher.sh -o ast-watcher.sh ``` ### Technical Analysis The installation instructions retrieve an executable shell script from a mutable service endpoint, make it executable, and instruct the user to run it every minute through cron. The downloaded artifact is not tied to a release version, repository commit, checksum, signature, or other immutable identity. The bundled `scripts/ast-watcher.sh` was inspected and did not contain an embedded malicious payload. The vulnerability is that the code ultimately installed by a user may differ from the audited bundled script. A later compromise of the service, DNS or hosting infrastructure, deployment pipeline, or maintainer account could replace the remote watcher with arbitrary shell code. Because cron repeatedly invokes the downloaded file, a one-time compromise of the download endpoint can establish recurring execution under the installing user's account. The cron process also supplies sensitive credentials to the script, increasing the consequences of payload substitution. # ...[truncated 1489 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Install the bundled, reviewed `scripts/ast-watcher.sh` rather than downloading an independently mutable copy at installation time. 2. If remote distribution is required, publish immutable versioned release URLs and a SHA-256 checksum or cryptographic signature. 3. Verify the checksum or signature before applying executable permissions or creating a scheduled task. 4. Ensure the downloaded version corresponds exactly to the source revision reviewed in the Skill package. 5. Do not automatically update the watcher from the network. Require an explicit, reviewable upgrade action. 6. Document how to remove the cron entry, revoke watcher credentials, and verify the installed script. 7. Run the watcher as an unprivileged dedicated account with minimal filesystem and network access. 8. Prefer a user-level service with sandboxing controls and a restricted environment over a system-wide crontab. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
references/notifications.md:120
Finding
API and Hook Tokens Are Stored Directly in Plaintext Crontab Configuration<![CDATA[ ## Vulnerability Details **File Location**: `references/notifications.md:120-123` **Vulnerability Type**: Plaintext persistent secret storage **Risk Level**: Medium ### Vulnerable Code ```bash **Install in crontab:** * * * * * AST_API_KEY=your_key OPENCLAW_HOOK_TOKEN=your_token ~/.openclaw/skills/agentic-street/ast-watcher.sh >> /tmp/ast-watcher.log 2>&1 ``` ### Technical Analysis The recommended cron command embeds both bearer credentials directly into the crontab entry. These credentials consequently become persistent configuration data rather than ephemeral process environment values. This approach conflicts with the general guidance in `SKILL.md:411` that credentials should be supplied through environment variables. Although the cron syntax technically creates environment variables for the invoked process, their values remain stored in plaintext inside the crontab. Crontab content may be exposed through configuration backups, administrative diagnostics, support bundles, screenshots, shell-history entries created while installing the job, or local accounts and management tools authorized to inspect scheduled tasks. The recommended `/tmp/ast-watcher.log` destination does not intentionally log secrets, but use of a shared temporary directory also makes operational metadata more broadly visible than necessary. ### Attack Path 1. A user substitutes real credentials into the documented cron command. 2. The cron entry persistently stores those credentials in plaintext. 3. An attacker gains access to the user's cron configuration, a backup, a diagnostic archive, installation shell history, or an administrative interface that displays scheduled commands. 4. The attacker extracts `AST_API_KEY` and `OPENCLAW_HOOK_TOKEN`. 5. The attacker uses the API token to impersonate the agent within its permitted API scope or uses the hook token to submit requests to a reachable OpenClaw hook. 6. The credentials remain usable until they expire or are explicitly r ...[truncated 727 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not place secret values directly in the crontab command. 2. Store credentials in an operating-system secret manager or a dedicated configuration file owned by the watcher account and protected with mode `0600`. 3. Keep only the non-secret script invocation in crontab. 4. Have the script read secrets from file descriptors or a protected environment file without printing them. 5. Use separate, narrowly scoped, revocable credentials for notification polling and hook invocation. 6. Rotate both tokens after suspected exposure and provide documented revocation procedures. 7. Avoid entering real tokens directly into interactive shell commands where they may be captured in shell history. 8. Write logs to a user-owned directory with restrictive permissions instead of a predictable shared `/tmp` path. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ast-watcher.sh:8
Finding
Credential-Bearing Requests Permit Arbitrary Destination Overrides<![CDATA[ ## Vulnerability Details **File Location**: `scripts/ast-watcher.sh:8-41` **Vulnerability Type**: Bearer-token disclosure through unrestricted endpoint configuration **Risk Level**: Medium ### Vulnerable Code ```bash API_KEY="${AST_API_KEY:?Set AST_API_KEY}" HOOK_TOKEN="${OPENCLAW_HOOK_TOKEN:?Set OPENCLAW_HOOK_TOKEN}" API_URL="${AST_API_URL:-https://agenticstreet.ai/api}" HOOK_URL="${OPENCLAW_HOOK_URL:-http://127.0.0.1:18789}" CHANNEL="${AST_CHANNEL:-last}" # Poll for pending events (silent exit on network error — cron retries) RESPONSE=$(curl -sf --max-time 10 \ -H "Authorization: Bearer $API_KEY" \ "${API_URL}/notifications/pending" 2>/dev/null) || exit 0 # Extract count using bash pattern matching (no jq) COUNT=$(echo "$RESPONSE" | grep -o '"count":[0-9]*' | grep -o '[0-9]*$') [ -z "$COUNT" ] || [ "$COUNT" -eq 0 ] && exit 0 LAST_ID=$(echo "$RESPONSE" | grep -o '"lastEventId":[0-9]*' | grep -o '[0-9]*$') [ -z "$LAST_ID" ] && exit 0 curl -sf --max-time 15 -X POST "${HOOK_URL}/hooks/agent" \ -H "Authorization: Bearer $HOOK_TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"message\": \"AGENTIC STREET ALERT: ${COUNT} pending event(s) in your vaults.\", \"name\": \"AgenticStreet\", \"sessionKey\": \"hook:agenticstreet:batch-${LAST_ID}\", \"wakeMode\": \"now\", \"deliver\": true, \"channel\": \"${CHANNEL}\", \"timeoutSeconds\": 90 }" 2>/dev/null || true # Acknowledge receipt (if this fails, next poll re-delivers — agent deduplicates via sessionKey) curl -sf --max-time 5 -X POST "${API_URL}/notifications/ack" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d "{\"lastEventId\": $LAST_ID}" 2>/dev/null || true ``` The same unrestricted API override pattern is used in: - `scripts/ast-deposit.sh:8-13` - `scripts/ast-veto.sh:7-11` - `scripts/ast-browse.sh:7-14` ### Technical Analysis `AST_API_URL` and `OPENCLAW_HOOK_URL` are accepted without scheme, hostname, port, or pat ...[truncated 2359 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Parse and validate `AST_API_URL` before making authenticated requests. 2. Allow the production API key only for the exact HTTPS origin `https://agenticstreet.ai` and expected `/api` path. 3. If development endpoints are required, use a separate development credential and require an explicit development mode. 4. Reject user-info components, unexpected ports, non-HTTPS remote schemes, and malformed URLs. 5. Restrict `OPENCLAW_HOOK_URL` to loopback addresses by default. 6. Require explicit secure opt-in and HTTPS for non-loopback hook destinations. 7. Use separate credentials scoped to notification polling, transaction-data requests, and hook invocation. 8. Avoid forwarding authorization headers across redirects; add curl options and validation that prevent credential-bearing cross-origin redirects. 9. Fail closed with a clear error when an endpoint fails validation. 10. Apply the same origin validation to `ast-deposit.sh`, `ast-veto.sh`, and other scripts using `AST_API_URL`. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:298
Finding
Unpinned NPM Packages Are Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:298-317` **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code ```bash ### MCP (Optional, for Claude Desktop/Cursor/VS Code) Install via npx: npx -y agentic-street-mcp Or via mcporter (Open Claw's package manager for MCP servers): mcporter add agentic-street --npm agentic-street-mcp Or add to your MCP client config: { "mcpServers": { "agentic-street": { "command": "npx", "args": ["-y", "agentic-street-mcp"] } } } ``` The Skill metadata also recommends a mutable installer at `SKILL.md:13`: ```yaml install: npx clawhub@latest install agenticstreet ``` ### Technical Analysis The documented commands execute NPM packages without pinning reviewed versions or verifying package integrity. `npx -y agentic-street-mcp` resolves the package version at execution time and automatically approves installation. The MCP configuration repeats this resolution whenever the client starts the server, depending on local package caching and NPM behavior. Similarly, `npx clawhub@latest` explicitly requests whichever release is currently tagged `latest`. A future release therefore becomes executable without being the same code that was reviewed during this audit. No malicious dependency was identified in the reviewed project. The security issue is the mutable supply-chain trust boundary: compromise of an NPM publisher account, registry package, maintainer workstation, release pipeline, or future version could result in arbitrary local code execution. ### Attack Path 1. An attacker compromises the publisher account or release process for `agentic-street-mcp` or `clawhub`, or publishes a malicious future release through another supply-chain failure. 2. The malicious version becomes the package resolved by the unpinned command or the `latest` tag. 3. A user runs the documented `npx` command, or an MCP client starts the configured server. ...[truncated 814 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin exact reviewed package versions, such as `agentic-street-mcp@<reviewed-version>`, rather than resolving the current latest release. 2. Replace `clawhub@latest` with a specific audited version. 3. Publish and verify package provenance, signatures, and registry integrity metadata. 4. Use a lockfile with integrity hashes where the installation model permits it. 5. Review package contents and lifecycle scripts before execution. 6. Disable unnecessary NPM lifecycle scripts during installation where compatible with the package. 7. Run MCP servers with minimal filesystem, environment, and network privileges. 8. Establish an explicit update process that reviews release differences before changing pinned versions. ]]>
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 (67)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The documented behavior goes beyond simple fund browsing and management by including watcher behavior, notification polling, webhook delivery, and local hook interaction, yet that operational scope is not reflected in a clear permission model. Hidden or underemphasized behavior increases the chance that users enable networked automation they did not fully assess, which is more dangerous in a finance-related skill.

Credential Access

High
Category
Privilege Escalation
Content
**Save your `registrationId`!** You need it to poll for your API key after your human claims you.

**Recommended:** Save your credentials to `~/.config/agentic-street/credentials.json`:

```json
{
Confidence
84% confidence
Finding
The skill recommends storing registration credentials in a plaintext JSON file under the home directory. Even though the example shows `registrationId`, the same section instructs polling for and storing an API key, so users may co-locate live credentials in a world-readable or weakly protected file, enabling impersonation for authenticated write operations.

Lp3

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding
The skill clearly instructs use of shell commands and network-capable tooling, but it does not declare an explicit tool scope such as permissions or allowed-tools. That omission weakens sandboxing and review because a host may grant broader execution than users expect, increasing the chance of unintended command execution or outbound requests during use.

Rp1

Medium
Category
MCP Rug Pull
Confidence
83% confidence
Finding
Using `npx clawhub@latest install agenticstreet` pulls and executes mutable remote code at install time, so a compromised package, dependency, or future malicious release could execute arbitrary code on the user's machine. In a skill that handles API keys and financial workflows, supply-chain exposure is especially sensitive.

Session Persistence

Medium
Category
Rogue Agent
Content
**Install locally:**

```bash
mkdir -p ~/.agentic-street/skills/agentic-street
curl -s https://agenticstreet.ai/skill.md > ~/.agentic-street/skills/agentic-street/SKILL.md
curl -s https://agenticstreet.ai/api/skill/references/api-reference.md > ~/.agentic-street/skills/agentic-street/api-reference.md
curl -s https://agenticstreet.ai/api/skill/references/depositing.md > ~/.agentic-street/skills/agentic-street/depositing.md
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
mkdir -p ~/.agentic-street/skills/agentic-street
curl -s https://agenticstreet.ai/skill.md > ~/.agentic-street/skills/agentic-street/SKILL.md
curl -s https://agenticstreet.ai/api/skill/references/api-reference.md > ~/.agentic-street/skills/agentic-street/api-reference.md
curl -s https://agenticstreet.ai/api/skill/references/depositing.md > ~/.agentic-street/skills/agentic-street/depositing.md
curl -s https://agenticstreet.ai/api/skill/references/fund-creation.md > ~/.agentic-street/skills/agentic-street/fund-creation.md
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
mkdir -p ~/.agentic-street/skills/agentic-street
curl -s https://agenticstreet.ai/skill.md > ~/.agentic-street/skills/agentic-street/SKILL.md
curl -s https://agenticstreet.ai/api/skill/references/api-reference.md > ~/.agentic-street/skills/agentic-street/api-reference.md
curl -s https://agenticstreet.ai/api/skill/references/depositing.md > ~/.agentic-street/skills/agentic-street/depositing.md
curl -s https://agenticstreet.ai/api/skill/references/fund-creation.md > ~/.agentic-street/skills/agentic-street/fund-creation.md
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
**Step 2: Check terms**

```bash
curl https://agenticstreet.ai/api/funds/0xVAULT_ADDRESS/terms
```

Note the `raise` address (you need this for depositing — not the vault address), fees (`managementFeeBps`, `performanceFeeBps`), `fundDuration`, and strategy `metadata`.
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding
The MCP setup recommends `npx -y agentic-street-mcp` without pinning a specific package version, which executes whatever version is current on npm at runtime. That creates a supply-chain execution path that could expose local environment variables, wallet-related data, or alter transaction flows if the package is ever compromised.

External Transmission

Medium
Category
Data Exfiltration
Content
**Via Bankr (if you have the Bankr skill):**

```bash
curl -X POST https://api.bankr.bot/agent/submit \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $BANKR_KEY" \
  -d '{
Confidence
76% confidence
Finding
The skill recommends optional submission of transactions to `api.bankr.bot` using a separate API key, which introduces third-party transmission into a sensitive financial workflow. Even though private keys are not sent, transaction intent, wallet-linked behavior, and potentially exploitable submission control are delegated to an external service, increasing trust and privacy risk.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The document quickly moves from unsigned transaction generation to signing/broadcasting without an upfront warning that these actions can trigger irreversible on-chain financial effects. In an agentic DeFi skill, this omission is dangerous because users or autonomous agents may treat example flows as routine API calls rather than capital-moving blockchain operations.

External Transmission

Medium
Category
Data Exfiltration
Content
### Submitting with Bankr

```bash
curl -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
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
### Submitting with Bankr

```bash
curl -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
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
### Submitting with Bankr

```bash
curl -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The manifest describes fund browsing, investing, proposing/vetoing trades, withdrawals, and fee/fund lifecycle actions. This reference additionally defines a self-service registration and claim flow that creates and retrieves API keys for arbitrary agents, which is an account/bootstrap capability rather than an obvious implementation detail of DeFi fund operations themselves.

External Transmission

Medium
Category
Data Exfiltration
Content
| `walletAddress` | string | No | 0x-prefixed wallet address on Base. Rejected if wallet already has an active key. |

```bash
curl -X POST https://agenticstreet.ai/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "agentName": "Alpha Fund Manager",
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
| `walletAddress` | string | No | 0x-prefixed wallet address on Base |

```bash
curl -X POST https://agenticstreet.ai/api/auth/claim \
  -H "Content-Type: application/json" \
  -d '{
    "claimToken": "abc123def456...",
Confidence
76% confidence
Finding
The claim flow transmits a claim token and tweet URL to obtain an API key, but the documentation does not warn that whoever possesses the claim token can complete the process and retrieve credentials. In an agent setting, accidental exposure of claim URLs/tokens in logs, prompts, or chats could allow unauthorized API-key issuance.

External Transmission

Medium
Category
Data Exfiltration
Content
| `depositWindow` | number | Deposit window in seconds (informational) |

```bash
curl -X POST https://agenticstreet.ai/api/metadata/pin \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
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
**Note:** `fundDuration` and `depositWindow` are **strings**, not numbers. `managementFeeBps` and `performanceFeeBps` are **numbers**.

```bash
curl -X POST https://agenticstreet.ai/api/funds/create \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
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
| `amount` | string | USDC amount in 6-decimal raw units (e.g. `"1000000000"` = 1,000 USDC) |

```bash
curl -X POST https://agenticstreet.ai/api/funds/0xRAISE/deposit \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "amount": "1000000000" }'
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
| `params` | object | Action-specific parameters |

```bash
curl -X POST https://agenticstreet.ai/api/funds/0xVAULT/propose \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
82% confidence
Finding
The adapter proposal example includes financial trade parameters and demonstrates `amountOutMin: "0"`, which implies no slippage protection. In a DeFi trading context, documenting zero minimum output normalizes a pattern that can expose users to severe MEV, sandwiching, or catastrophic price execution.

External Transmission

Medium
Category
Data Exfiltration
Content
| `value` | string | ETH value in wei (usually `"0"`) |

```bash
curl -X POST https://agenticstreet.ai/api/funds/0xVAULT/propose \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
79% confidence
Finding
The raw-call proposal path allows arbitrary calldata for any protocol, which is a powerful capability in a fund-management skill handling real capital. Without strong warnings, validation guidance, or restrictions in the reference, integrators may generate dangerous arbitrary calls that approve unlimited spend, transfer assets, or interact with malicious contracts.

External Transmission

Medium
Category
Data Exfiltration
Content
| `shares` | string | Number of shares to withdraw (raw units) |

```bash
curl -X POST https://agenticstreet.ai/api/funds/0xVAULT/withdraw/request \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "shares": "5000000000" }'
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Content
**Uses RAISE address, not vault.** Calling this on the vault address will revert.

Finalise a fund after deposits meet minRaise. Activates the vault and mints LP shares. Anyone can call — the contract has no access restriction.

**Body:** `{}`
Confidence
75% confidence
Finding
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Content
**Uses RAISE address, not vault.** Calling this on the vault address will revert.

Finalise a fund after deposits meet minRaise. Activates the vault and mints LP shares. Anyone can call — the contract has no access restriction.

**Body:** `{}`
Confidence
75% confidence
Finding
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.