Executive brief
openssl-encrypt is a Python package that encrypts and verifies USB drive contents using AES-GCM. The verify-usb command can be deceived by an attacker who crafts malicious filenames on the USB drive; these filenames contain terminal control codes that overlay a fake "PASSED" message on the output, masking the actual detection of drive tampering. This allows attackers to hide evidence of data compromise from security checks.
Technical details
The vulnerability is an output injection flaw (CWE-117) in the verify-usb command. The root cause is the failure to sanitize filenames read from untrusted drive data before printing them in verification reports. An attacker can embed ANSI escape sequences (cursor-movement and erase-line control bytes) into filenames on the drive; when printed unsanitized to the terminal, these sequences repaint the output to display a forged PASSED verdict, overwriting the actual FAILED status. No authentication is required—the attacker only needs to modify files on the target USB drive. The fix, released in version 1.4.9, routes all drive-derived filenames through the sanitize_for_display() function before output.
Affected products
- openssl-encrypt openssl-encrypt <=1.4.8
Timeline
- 2026-08-12: disclosed: GitHub Security Advisory GHSA-c793-rj9w-r3wg published
- 2026-08-27: advisory: CVE-2026-81694 published on NVD
- 2026-08-27: patched: Fix released in version 1.4.9