GHSA-h3m5-p59h-x88p CVE-2026-74873 PYSEC-2026-3753
openssl-encrypt has visible password in process list via --password CLI argument
- 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
| Package | Vulnerable | Fixed 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
Advisories
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why 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 |
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