Skip to content

GHSA-h3m5-p59h-x88p CVE-2026-74873 PYSEC-2026-3753

openssl-encrypt has visible password in process list via --password CLI argument

Medium PyPI
Severity
0.0 / 10
Medium · CVSS 4.0
Exploit chance (EPSS)
0.32%
Chance of exploitation in the next 30 days. Higher than 24.48% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-256 Plaintext Storage of a Password
Fix
1.4.0
Upgrade openssl-encrypt to this version or later

Description

Summary

Passwords passed via the --password / -p CLI argument in openssl_encrypt/modules/crypt_cli_subparser.py at lines 150-154 are visible to any user on the system via ps aux or /proc/[pid]/cmdline.

Affected Code

subparser.add_argument(
    "--password", "-p",
    help="Password (will prompt if not provided, or use CRYPT_PASSWORD environment variable)",
)

Similarly, --keystore-password exposes the keystore password.

Impact

On multi-user systems, any user can observe the encryption password by listing processes. The CRYPT_PASSWORD environment variable alternative is also visible via /proc/[pid]/environ (though with slightly restricted access).

Recommended Fix

  • Document the security implications prominently
  • Recommend interactive prompting (already supported) as the secure default
  • Consider supporting password file descriptors (--password-fd) or reading from stdin
  • Consider marking the argument as deprecated in favor of interactive prompting

Fix

Fixed in commit e78a366 on branch releases/1.4.x — added --password-file and --password-fd arguments; added OPENSSL_ENCRYPT_PASSWORD env var support; --password now emits deprecation warning.

Affected versions

PyPI

PackageVulnerableFixed in
openssl-encrypt
< 1.4.0
1.4.0

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

openssl-encrypt PyPI → 1.4.0

pip
pip install --upgrade "openssl-encrypt>=1.4.0"
poetry
poetry add "openssl-encrypt>=1.4.0"
uv
uv add "openssl-encrypt>=1.4.0"

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:U

Attack vector
Network
Attack complexity
Low
Attack requirements
None
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
High
Integrity (vulnerable system)
None
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None
Exploit maturity
Unreported

CVSS 3.1 5.5

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Attack vector
Local
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Weakness

CWE-256: Plaintext Storage of a Password

The product stores a password in plaintext within resources such as memory or files.

How to prevent it
  • Architecture and Design: Avoid storing passwords in easily accessible locations.
  • Architecture and Design: Consider storing cryptographic hashes of passwords as an alternative to storing in plaintext.
  • A programmer might attempt to remedy the password management problem by obscuring the password with an encoding function, such as base 64 encoding, but this effort does not adequately protect the password because the encoding can be detected and decoded easily.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
PYSEC-2026-3803
openssl_encrypt before 1.4.9 fails to validate KDF cost parameters in encrypted file metadata and keystore headers, allowing attackers to trigger unbounded…
High Also affects openssl-encrypt
PYSEC-2026-3965
openssl_encrypt before 1.4.9 fails to validate the memory_cost parameter from identity file protection blocks, allowing attackers to trigger out-of-memory…
Medium Also affects openssl-encrypt
PYSEC-2026-3802
openssl_encrypt before 1.4.9 executes untrusted third-party plugins with insufficient controls: the plugin signature policy defaulted to WARN, so an…
High Also affects openssl-encrypt
PYSEC-2026-3801
openssl_encrypt (pip package openssl-encrypt) before 1.4.9 contains two weaknesses in the portable USB drive feature, whose threat model treats the removable…
Low Also affects openssl-encrypt
PYSEC-2026-3800
openssl_encrypt (pip: openssl-encrypt) versions before 1.4.9 contain a path traversal flaw in PluginSandbox._is_safe_path, which authorized file access using a…
Medium Also affects openssl-encrypt
PYSEC-2026-3964
openssl_encrypt (pip package openssl-encrypt) versions <= 1.4.8 do not redact the keyserver bearer token passed as the positional argument to 'keyserver…
Low Also affects openssl-encrypt
PYSEC-2026-3799
openssl_encrypt (pip: openssl-encrypt) versions <= 1.4.8 use suffix-tolerant fingerprint matching in enroll_trust_key when binding a plugin-signing trust…
High Also affects openssl-encrypt
PYSEC-2026-3781
openssl_encrypt before 1.4.9 fails to prevent namespace collisions between own identities and contacts in IdentityStore, allowing attackers to create shadowed…
Critical Also affects openssl-encrypt
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor