openssl_encrypt: Improper Link Resolution Before File Access
CVE-2026-81690 is a high-severity improper link resolution before file access vulnerability in openssl_encrypt from Jahlives, with a CVSS 3.1 base score of 7.3 out of 10. It can be exploited with physical access to the device by an unauthenticated attacker, without any action from a user. The record lists version 1.4.9 as the first without the flaw, so updating openssl_encrypt to that release or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.71% chance of exploitation within 30 days, higher than 54% of scored CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update openssl_encrypt to 1.4.9 or a later version.
- Read the advisory on github.com for workarounds and exact fixed builds.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Jahlives | openssl_encrypt | before 1.4.9 | 1.4.9 |
Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- PhysicalThe attacker must physically touch the device.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- NoneNo account or login is needed.
- User interaction
- NoneNo action by a victim is required.
- Scope
- ChangedThe attack can reach beyond the vulnerable component into other systems.
- Confidentiality
- NoneNo data is disclosed.
- Integrity
- HighData or code can be modified at will.
- Availability
- HighThe component can be taken down completely.
Vector: CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H. Scored by CNA (vulncheck.com).
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 4.0 | 8.7 | High | CNA (vulncheck.com) |
| CVSS 3.1 | 7.3 | High | CNA (vulncheck.com) |
Official description
openssl-encrypt (pip package) before 1.4.9 contains a symlink-following flaw in its verify-usb v2 added-file allowlist scan. The scan enumerated the drive with rglob(), which in CPython does not descend into symlinked directories and treats the symlink as an ordinary directory, while O_NOFOLLOW on the hash side binds only the final path component. An evil-maid attacker with physical access to the removable drive could replace a tool-tree directory with a symlink to a copy containing byte-identical files plus a planted __pycache__/*.pyc file (which CPython loads in preference to recompiling the clean .py). The planted file is never enumerated, added_files stays 0, and verify-usb reports PASSED, resulting in code execution when the victim runs the portable install. Fixed in 1.4.9 (affects both 1.4.x and 1.5.x lines).
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Improper Link Resolution Before File Access
The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.
How developers prevent this class of flaw
- Follow the principle of least privilege when assigning access rights to entities in a software system. Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted.
More Improper Link Resolution Before File Access vulnerabilities (CWE-59)
Timeline
- CVE record published.
- CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: partial).
- Record last changed materially (score, affected products, status or references).
References
Third-party and government advisories
Other vulnerabilities in openssl_encrypt
- 7.5 High severity
- 7.8 High severity
- 7.5 High severity
- 7.0 High severity
- 9.8 Critical severity
- 7.5 High severity
Recent Improper Link Resolution Before File Access vulnerabilities
- 7.1 High severity
- 7.8 High severity
- 7.0 High severity
- 7.8 High severity
- 8.4 High severity
- 7.5 High severity
Spotted an error? Tell us.