CVE-2026-81690
CVE-2026-81690 · verify-usb before 1.4.9 Symlink Directory Traversal Code Execution
This page contains facts from public vulnerability sources. Check the original advisory before updating.
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).
CVSS 8.7 · High · EPSS 0.7% · Fix available
- Published
- Updated
Stack: python
Affected products and versions
openssl_encrypt
- Versions
- ≥ 0, < 1.4.9: Affected (semver)
- 1.4.9: Not affected (semver)
Update to 1.4.9
openssl-encrypt PyPI
- Versions
- 0.2.2
- 0.2.3
- 0.2.4
- 0.2.5
- 0.2.6
- 0.3.0
- 0.3.1
- 0.3.2
- 0.3.3
- 0.4.0
- 0.4.1
- 0.4.2
- 0.4.3
- 0.4.4
- 0.5.0
- 0.5.1
- 0.5.3
- 0.6.0rc1
- 0.7.0rc2
- 0.7.1
- 0.7.2
- 0.8.0
- 0.8.1
- 0.8.2
- 0.9.2
- 1.0.0
- 1.0.1
- 1.0.2
- 1.0.3
- 1.1.0
- 1.2.0
- 1.2.1
- 1.3.0
- 1.3.1
- 1.3.2
- 1.3.3
- 1.3.4
- 1.3.5
- 1.4.0
- 1.4.0b3
- 1.4.0b4
- 1.4.0b5
- 1.4.0b6
- 1.4.0b7
- 1.4.0b8
- 1.4.1
- 1.4.1rc2
- 1.4.2
- 1.4.4
- 1.4.5
- 1.4.6
- 1.4.7
- 1.4.8
- Affected ranges
- ECOSYSTEM: < 1.4.9
Update to 1.4.9