Back to skill

Security audit

Proton Pass CLI

Security checks for vulnerabilities and agentic risk

Overview

This Proton Pass skill matches its password-manager purpose, but needs Review because its install and some secret-handling examples can expose credentials or run unverified code.

Review before installing. Prefer a package-manager or verified pinned installer over the curl-to-bash path, avoid copying passphrase-free SSH private keys into /tmp, keep generated secret files at 0600 or stricter, avoid --no-masking and long-lived environment-variable secrets except in tightly controlled automation, and use auto-create SSH identities only with a dedicated vault/socket you intend to sync.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:14
Finding

Remote installation scripts are downloaded and executed without integrity verification

Content
View full analysis
Remediation
View remediation
' 'install.sh' | sha256sum -c - less install.sh bash install.sh ``` The checksum must be replaced with an authentic value for a pinned release and must not be fetched from the same unauthenticated execution path. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:333
Finding

Passphrase-free SSH private key is created at a predictable shared temporary path

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:58
Finding

Sensitive authentication material is demonstrated in process environment variables

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:768
Finding

Generated files containing resolved secrets may be made readable by all local users

Content
View full analysis
Remediation
View remediation
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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (29)

External Script Fetching

High
Category
Supply Chain
Confidence
99% confidence
Finding

The installation instructions recommend piping a remote script fetched over the network directly into bash. This removes the opportunity to inspect or verify the installer and turns any compromise of the hosting endpoint, CDN, TLS trust chain, or download path into immediate code execution on the user's machine.

Content

Scanner excerpt · SKILL.md (reported line 16)May include surrounding context.

macOS/Linux:

bash
curl -fsSL https://proton.me/download/pass-cli/install.sh | bash

Windows:

Chaining Abuse

High
Category
Tool Misuse
Confidence
99% confidence
Finding

The | bash construct is a classic unsafe command chain because it streams unaudited remote content directly into a shell. In a skill that may be followed by automation-oriented agents or users, this pattern is especially dangerous because it normalizes immediate execution of untrusted network input.

Content

Scanner excerpt · SKILL.md (reported line 16)May include surrounding context.

macOS/Linux:

bash
curl -fsSL https://proton.me/download/pass-cli/install.sh | bash

Windows:

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 66)May include surrounding context.

md
export PROTON_PASS_EXTRA_PASSWORD='your-extra-password'

# Or from files (more secure)
export PROTON_PASS_PASSWORD_FILE='/secure/password.txt'
export PROTON_PASS_TOTP_FILE='/secure/totp.txt'
export PROTON_PASS_EXTRA_PASSWORD_FILE='/secure/extra-password.txt'

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 68)May include surrounding context.

md
export PROTON_PASS_EXTRA_PASSWORD='your-extra-password'

# Or from files (more secure)
export PROTON_PASS_PASSWORD_FILE='/secure/password.txt'
export PROTON_PASS_TOTP_FILE='/secure/totp.txt'
export PROTON_PASS_EXTRA_PASSWORD_FILE='/secure/extra-password.txt'

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 303)May include surrounding context.

bash
# Import unencrypted key
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "My SSH Key"

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 315)May include surrounding context.

bash
# Import unencrypted key
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "My SSH Key"

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1219)May include surrounding context.

bash
# Import unencrypted key
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "My SSH Key"

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 309)May include surrounding context.

md
# Import with vault name
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_rsa \
  --vault-name "Personal Keys" \
  --title "Old RSA Key"

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

The documentation suggests supplying an SSH key passphrase directly via an environment variable. Environment variables are commonly exposed to child processes, crash dumps, debugging tools, CI metadata, and other same-session observers, so recommending this pattern without a strong warning increases passphrase disclosure risk.

Content

Scanner excerpt · SKILL.md (reported line 323)May include surrounding context.

md
# Passphrase from environment
PROTON_PASS_SSH_KEY_PASSWORD="my-key-passphrase" \
  pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "Automated Import" \
  --password

Credential Access

High
Category
Privilege Escalation
Confidence
92% confidence
Finding

The skill recommends creating an unencrypted temporary copy of an SSH private key in /tmp to facilitate import. Even though cleanup is shown later, the temporary plaintext key can be read, copied, backed up, or recovered before deletion, especially on multi-user or monitored systems.

Content

Scanner excerpt · SKILL.md (reported line 333)May include surrounding context.

bash
# Create unencrypted copy
cp ~/.ssh/id_ed25519 /tmp/id_ed25519_temp
ssh-keygen -p -f /tmp/id_ed25519_temp -N ""

# Import

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 344)May include surrounding context.

Securely delete temp copy

shred -u /tmp/id_ed25519_temp # Linux rm -P /tmp/id_ed25519_temp # macOS

text

### Create email alias

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 632)May include surrounding context.

pass-cli run -- ./my-app

text

#### Using .env files

Create `.env`:
```bash

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 645)May include surrounding context.

pass-cli run -- ./my-app

text

#### Using .env files

Create `.env`:
```bash

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 650)May include surrounding context.

Multiple env files (later override earlier)

pass-cli run
--env-file base.env
--env-file secrets.env
--env-file local.env
-- ./my-app

text

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 688)May include surrounding context.

bash
#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

Inject secrets into templates (inject)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1253)May include surrounding context.

bash
#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

Inject secrets into templates (inject)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1254)May include surrounding context.

bash
#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

Inject secrets into templates (inject)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1262)May include surrounding context.

bash
#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

Inject secrets into templates (inject)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1289)May include surrounding context.

bash
#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

Inject secrets into templates (inject)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1081)May include surrounding context.

1. Keyring storage (default, most secure)

bash
export PROTON_PASS_KEY_PROVIDER=keyring  # or unset

Uses OS secure storage:

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 1091)May include surrounding context.

1. Keyring storage (default, most secure)

bash
export PROTON_PASS_KEY_PROVIDER=keyring  # or unset

Uses OS secure storage:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The auto-create SSH identity feature causes keys added with ssh-add to be uploaded into Proton Pass automatically, but the documentation lacks a clear warning about that side effect. Users may unintentionally sync sensitive local-only identities, including production or personal keys, into a remote vault and alter their trust boundary without realizing it.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · SKILL.md (reported line 537)May include surrounding context.

Force password authentication:

bash
ssh-copy-id -o PreferredAuthentications=password -o PubkeyAuthentication=no user@server

Pass URI Syntax (Secret References)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill documents pass-cli run --no-masking and even contrasts masked versus unmasked output, but it does not explicitly warn that command output may print plaintext secrets into terminals, CI logs, shell history-adjacent transcripts, or centralized logging systems. In a secret-management skill, normalizing unmasked execution materially increases the chance of credential disclosure during routine automation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The inject examples encourage writing resolved secrets directly into output files without clearly warning that the resulting files contain plaintext credentials. Even with a default 0600 mode, generated configs may later be committed, copied into artifacts, backed up, or read by other tooling, causing broad secret leakage.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.