Paperclip: Arbitrary File Read via Agent-Controlled adapterConfig.instructionsFilePath
Date: 2026-04
Affected: npm/@paperclipai/shared
Attack vector: path-traversal
Category: vulnerability-disclosure
Severity: Medium
CWE: CWE-73
CVSS: 6.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)

### Summary Paperclip contains an arbitrary file read vulnerability that allows an attacker with an Agent API key to read files from the Paperclip server host filesystem. The vulnerability occurs because agents are allowed to modify their own adapterConfig through the /agents/:id API endpoint. The configuration field adapterConfig.instructionsFilePath is later read directly by the server runtime using fs.readFile(). Because no validation or path restriction is applied, an attacker can supply an arbitrary filesystem path. The Paperclip server then attempts to read that path from the host filesystem during agent execution. This breaks the intended trust boundary between agent runtime configuration and server host filesystem access, allowing a compromised or malicious agent to access sensitive files on the host system. ### Details #### Root Cause No path normalization, allowlist, or workspace boundary validation is applied before the filesystem read occurs. Agent configuration can be modified through the API endpoint: ``` PATCH /api/agents/:id ``` The validation schema allows arbitrary configuration fields inside adapterConfig. File: ``` packages/shared/src/validators/agent.ts ``` Schema fragment: ``` adapterConfig: z.record(z.unknown()) ``` Because of this schema, attackers can inject arbitrary configuration values, including: ``` adapterConfig.instructionsFilePath ``` During agent execution, the server runtime reads this path directly from the host filesystem using fs.readFil


Mitigations:

Architectural layers (MAESTRO):