Back to skill

Security audit

Founder Legal Copilot

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for a founder legal assistant, but it persists sensitive legal deal data and uses external plugins and services with weak installation and storage safeguards.

Review before installing. Use this only if you are comfortable sending legal documents, diligence queries, and possibly voice narration content to the listed third-party services. Pin and verify plugins, restrict Apify tools, avoid the documented Redis docker command as written, bind Redis to localhost or a private authenticated service, and confirm how stored deal data can be deleted. Treat all legal outputs as drafts for attorney review.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:268
Finding
Redis Troubleshooting Command Exposes Persistent Legal Data Without Authentication<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:268-273` **Vulnerability Type**: Unauthenticated network service and insecure sensitive-data storage configuration **Risk Level**: High ### Vulnerable Code ```markdown ### "Redis connection refused" Check `REDIS_URL` in `.env`. For local development, run: ```bash docker run -d -p 6379:6379 redis:alpine ``` ``` The Redis instance is used to retain sensitive information elsewhere in the same file: ```markdown Every SAFE generated and contract reviewed is stored in the Redis memory plugin with the deal name as the key. ``` ### Technical Analysis The recommended Docker command publishes container port 6379 on every host network interface because no loopback address is specified. It also supplies no Redis ACL, password, TLS configuration, or network restriction. This is particularly sensitive because the Skill stores SAFE documents, contract reviews, due-diligence reports, and cross-session deal history in Redis. These records can contain investment terms, company details, contract contents, personal information, and confidential legal analysis. Redis protected-mode behavior can vary depending on image version and runtime configuration and must not be treated as an access-control boundary. Publishing an unauthenticated database port creates an unsafe configuration that may become directly exploitable through image changes, configuration changes, reverse proxies, container networking, or local-network access. ### Attack Path 1. A user encounters the documented Redis connection error. 2. The user copies and executes: ```bash docker run -d -p 6379:6379 redis:alpine ``` 3. Docker publishes Redis through host port 6379 on all interfaces. 4. The Skill stores contracts, SAFE terms, and deal history in the database. 5. An attacker with network access to the host connects to port 6379 if runtime protections permit unauthenticated access. 6. The attacker enumerates keys and reads, modifies, ...[truncated 839 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Bind development Redis only to the loopback interface: ```bash docker run -d \ -p 127.0.0.1:6379:6379 \ --name founder-legal-redis \ redis:alpine ``` 2. Configure Redis ACL authentication using a secret supplied outside command history and source control. 3. Do not expose Redis directly to public or shared networks. For remote deployments, place it in a private network protected by firewall or security-group rules. 4. Require TLS for traffic crossing a host or network boundary. 5. Encrypt especially sensitive legal records at the application layer before persistence. 6. Make persistence opt-in and disclose which records are retained, for how long, and for what purpose. 7. Provide commands for deleting individual deals and all retained Skill data. 8. Apply least-privilege Redis ACLs so the Skill cannot execute unnecessary administrative commands such as `FLUSHALL`, configuration changes, or module loading. 9. Pin the Redis image to a reviewed version or immutable digest and document the expected protected-mode and ACL configuration. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:62
Finding
Mutable and Inconsistently Named Third-Party Plugins Create a Supply-Chain Substitution Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:62-67` **Vulnerability Type**: Unpinned third-party plugin and MCP dependencies **Risk Level**: Medium ### Vulnerable Code ```markdown ### OpenClaw Plugins Install required plugins before running: ```bash openclaw plugin install redis-agent-memory openclaw plugin install civic-nexus openclaw mcp add apify https://mcp.apify.com ``` ``` The identifiers are also inconsistent with the plugin names declared in `config.json`: ```json "plugin": "openclaw-redis-agent-memory" ``` ```json "plugin": "openclaw-civic-skill" ``` ### Technical Analysis The installation instructions reference plugins through mutable, unversioned names. They provide no reviewed version, integrity hash, signature requirement, canonical registry, or publisher verification procedure. The names in the installation commands also differ from those in the configuration: - `redis-agent-memory` versus `openclaw-redis-agent-memory` - `civic-nexus` versus `openclaw-civic-skill` This ambiguity increases the chance of resolving an unintended package, including through dependency confusion, namespace collision, typosquatting, registry compromise, or later replacement of a mutable release. These plugins occupy sensitive trust positions. The Redis plugin handles persistent legal and deal data, while the Civic plugin is described as handling authentication, audit trails, and PII scrubbing. A substituted or compromised implementation could therefore access documents before or after sanitization, persistent memory, service credentials, and model traffic. The Apify MCP endpoint is HTTPS, but the documentation does not pin or verify an MCP server identity or define a restricted tool allowlist. ### Attack Path 1. An attacker publishes or compromises a package matching one of the short plugin identifiers, or compromises a mutable upstream release. 2. A user follows the documented unversioned installation command. 3. The package manager r ...[truncated 1462 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace short aliases with canonical, publisher-qualified package identifiers consistently across `SKILL.md` and `config.json`. 2. Pin every plugin to a reviewed immutable version: ```bash openclaw plugin install canonical-package@reviewed-version ``` 3. Where supported, pin package integrity hashes or signed release digests. 4. Verify package publisher identity and signatures before installation. 5. Document the authoritative registry or repository for each plugin. 6. Add a lock file or equivalent manifest recording exact dependency versions and hashes. 7. Define and enforce least-privilege plugin permissions. The PII scrubber should not receive Redis administration privileges, and the memory plugin should not receive unrelated API credentials. 8. Run third-party plugins in a sandbox without unrestricted filesystem, process-execution, or environment-variable access. 9. Restrict the Apify MCP integration to an explicit allowlist of required actors and operations. 10. Require user confirmation for sensitive MCP operations and prevent remote tool output from being interpreted as higher-priority Agent instructions. 11. Establish an update-review process so dependency upgrades are scanned and approved before deployment. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (17)

Credential Access

High
Category
Privilege Escalation
Content
Copy `.env.example` to `.env` and populate:

```bash
cp .env.example .env
```

Required keys:
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Ssd 3

High
Confidence
97% confidence
Finding
The 'Deal Memory' feature explicitly advertises cross-session recall of generated and reviewed legal artifacts by deal name, creating a direct exposure path for highly sensitive legal and fundraising information. In a legal copilot context, recalled data could include contract terms, investor identities, diligence results, and strategic transaction details, making unauthorized access particularly damaging.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill states that generated SAFEs and related deal history are stored in Redis for future reference, but gives no explicit warning that sensitive fundraising and legal data will be retained. Legal documents often contain confidential terms, counterparties, and corporate details, so silent persistence creates confidentiality and privacy risk.

Ssd 3

Medium
Confidence
94% confidence
Finding
Persistent storage of deal and contract information across sessions creates a clear natural-language pathway for retaining sensitive legal artifacts without documented safeguards. If memory access is overly broad, compromised, or retained indefinitely, confidential financing and contract data could be exposed or reused inappropriately.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The due-diligence workflow explicitly collects and aggregates sensitive identifying and legal-record data, including EINs, officers, bankruptcy, tax lien, and UCC information, but provides no explicit notice about privacy, lawful basis, retention, or third-party disclosure. In a legal-assistance context, users may submit highly sensitive corporate data, so omission of handling warnings increases the risk of over-collection, improper sharing, and compliance issues.

Ssd 3

Medium
Confidence
91% confidence
Finding
Storing due-diligence reports for later follow-up implies retention of compiled sensitive corporate and identifying data, potentially including adverse legal records. Because diligence outputs aggregate multiple sources into one accessible record, retention amplifies confidentiality, misuse, and compliance risks.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
Voice narration sends report contents to ElevenLabs, a third-party audio provider, yet the skill does not warn users that confidential legal analysis may leave the primary environment. This is especially risky because reports may contain sensitive business, contract, or diligence findings not intended for external processors.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding
Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

External Transmission

Medium
Category
Data Exfiltration
Content
"sponsors": {
    "contextual_ai": {
      "role": "RAG grounded analysis on legal templates",
      "api": "https://api.contextual.ai/v1/",
      "docs": "https://docs.contextual.ai",
      "features": ["safe_generator", "contract_reviewer"],
      "model": "contextual-rag-v2"
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The manifest explicitly enables persistent cross-session memory and live legal-data scraping, but does not declare any user-facing warning, consent flow, or retention/transmission notice in the configuration. In a legal copilot, users may provide sensitive business, contract, cap-table, or PII-heavy material, so silent retention and external retrieval materially increase privacy and compliance risk.

External Transmission

Medium
Category
Data Exfiltration
Content
},
    "friendliai": {
      "role": "Fast inference provider (GLM-5, 9x cheaper than GPT-4)",
      "baseUrl": "https://api.friendli.ai/serverless/v1",
      "docs": "https://friendli.ai/docs",
      "features": ["all"]
    },
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
},
    "elevenlabs": {
      "role": "Multilingual voice narration of legal reports",
      "api": "https://api.elevenlabs.io/v1/",
      "docs": "https://elevenlabs.io/docs",
      "default_voice_id": "21m00Tcm4TlvDq8ikWAM",
      "model": "eleven_turbo_v2_5",
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The glossary presents legal and tax concepts such as 83(b) elections and IRS treatment in a US-specific way without clearly scoping them to the United States or warning that rules differ by jurisdiction. In a legal copilot for founders, users may rely on this as generally applicable guidance, creating a meaningful risk of incorrect compliance, tax, or structuring decisions outside the US.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The corporate-structure content states that Delaware C-Corps are the standard structure and frames that advice as broadly applicable, but it is specific to US venture-backed startups. In a founder legal assistant, this can mislead non-US founders or even some US founders with different business models into adopting an unsuitable structure, with downstream legal, tax, and governance consequences.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The content makes a broad legal claim that non-solicitation clauses are enforceable in most states, including California, without sufficient qualification. In a legal copilot, users may rely on this as actionable advice, and California employment restrictive-covenant law is nuanced and frequently litigated, so overbroad statements can mislead users into adopting unenforceable or unlawful terms.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The prompt explicitly directs collection of public data about entities and individuals, including executive backgrounds, bankruptcy history, sanctions screening, and officer identity checks, but it does not warn users that the workflow processes potentially sensitive personal data. In a due-diligence context, omission of privacy and handling guidance can lead to overcollection, inappropriate use of personal data, and legal/compliance exposure, especially for key-hire investigations involving individuals.

Scope Creep

Low
Category
Excessive Agency
Content
## 2. Definition of Confidential Information

"Confidential Information" means any and all non-public information disclosed by either Party to the other Party, whether orally, in writing, electronically, or by any other means, including but not limited to:

(a) Business plans, strategies, and financial information
(b) Product designs, specifications, and source code
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Static analysis

No suspicious patterns detected.