Skip to content

Security: ProfDrJu/OpenPass

Security

SECURITY.md

Security Policy

Supported Versions

Version Supported Notes
1.x.x Current stable release
< 1.0 Pre-release versions not supported

Reporting a Vulnerability

We take security vulnerabilities seriously. If you discover a security issue, please report it responsibly.

Reporting Process

  1. Do NOT open a public GitHub issue for security vulnerabilities
  2. Email the maintainers directly at: security@openpass.dev
  3. Include the following in your report:
    • Description of the vulnerability
    • Steps to reproduce the issue
    • Potential impact of the vulnerability
    • Any suggested fixes (optional)

What to Expect

  • Initial Response: Within 48 hours, we will acknowledge receipt of your report
  • Status Update: We aim to provide a timeline for when a fix will be available
  • Credit: With your permission, we will credit you in the security advisory (if public)
  • Disclosure: We follow a coordinated disclosure process

Scope

The following are within scope for vulnerability reports:

  • Encryption implementation (age X25519 + ChaCha20-Poly1305)
  • Passphrase handling and storage
  • Session management and keyring integration
  • MCP server security (stdio and HTTP modes)
  • Vault file format and entry encryption

The following are out of scope:

  • Social engineering attacks
  • Physical security of the user's machine
  • Third-party dependencies (report to their respective maintainers)

Known Vulnerabilities

No known vulnerabilities at this time.

For historical security advisories, see the Security Advisories page.

Security-Related Configuration

Vault Permissions

Ensure your vault directory has appropriate access controls:

# Restrict vault directory access (Unix-like systems)
chmod 700 ~/.openpass
chmod 600 ~/.openpass/identity.age

MCP Server Security

Stdio Mode (Recommended for Local Agents)

  • Uses process isolation; no network exposure
  • Agent permissions controlled via approvalMode setting

HTTP Mode

  • Binds to 127.0.0.1 only (localhost) — not exposed to network
  • Bearer token authentication required
  • Token auto-generated and stored at <vault>/mcp-token
  • Agent identified per-request via X-OpenPass-Agent header

Security recommendations for HTTP mode:

  • Never expose the MCP server port to the network
  • Rotate the bearer token periodically by deleting <vault>/mcp-token (auto-regenerates)
  • Use approvalMode: deny or approvalMode: prompt for untrusted agents

Agent Configuration Security

# ~/.openpass/config.yaml
agents:
  # Trusted local agents
  claude-code:
    allowedPaths: ["*"]
    canWrite: true
    approvalMode: none

  # Untrusted or external agents
  external-agent:
    allowedPaths: ["public/*", "work/*"]
    canWrite: false
    approvalMode: deny

Environment Variables

Variable Purpose Security Note
OPENPASS_VAULT Override vault location Ensure path has proper permissions

Security Best Practices

  1. Keep backups: Regularly backup your vault directory
  2. Use strong passphrases: Use openpass generate --length 32 --symbols
  3. Lock sessions: Use openpass lock when leaving your terminal
  4. Review agent permissions: Only grant canWrite: true to trusted agents
  5. Rotate tokens: Periodically rotate MCP bearer tokens in HTTP mode
  6. Secure your Git repository: If using Git sync, ensure your remote is secure

Encryption Details

OpenPass uses age for encryption:

  • Key Exchange: X25519 (Curve25519 elliptic curve Diffie-Hellman)
  • Encryption: ChaCha20-Poly1305 (authenticated encryption)
  • Identity File: Encrypted with the identity's own public key, protected by scrypt (passphrase)

Each vault entry is encrypted individually as a standalone .age file, ensuring:

  • No compound encryption failures
  • Efficient partial access patterns
  • Git history contains only ciphertext

Contact

For non-security issues, please use the public issue tracker.

There aren’t any published security advisories