🚨 CVE-2026-74878
openssl_encrypt versions before 1.4.0 use an in-memory rate limiter for TOTP brute-force protection that is not shared across workers and is lost on server restart. Attackers can distribute authentication attempts across multiple server instances or retry immediately after a restart to bypass rate limiting protections.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 use an in-memory rate limiter for TOTP brute-force protection that is not shared across workers and is lost on server restart. Attackers can distribute authentication attempts across multiple server instances or retry immediately after a restart to bypass rate limiting protections.
🎖@cveNotify
GitHub
TOTP rate limiter is in-memory only — not shared across workers, lost on restart
## Severity: HIGH
### Summary
The TOTP brute-force rate limiter in `openssl_encrypt_server/modules/pepper/totp.py` at **lines 47-98** uses an in-memory `defaultdict(list)` as a class variable...
### Summary
The TOTP brute-force rate limiter in `openssl_encrypt_server/modules/pepper/totp.py` at **lines 47-98** uses an in-memory `defaultdict(list)` as a class variable...
🚨 CVE-2026-74879
openssl_encrypt versions before 1.4.0 contain an information disclosure vulnerability in the /ready endpoint that returns full database exception strings to unauthenticated callers. Attackers can trigger database errors to extract sensitive information including hostnames, IP addresses, connection parameters, and potentially credentials from exception messages.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain an information disclosure vulnerability in the /ready endpoint that returns full database exception strings to unauthenticated callers. Attackers can trigger database errors to extract sensitive information including hostnames, IP addresses, connection parameters, and potentially credentials from exception messages.
🎖@cveNotify
GitHub
Readiness endpoint leaks database error details to unauthenticated callers
## Severity: HIGH
### Summary
The `/ready` endpoint in `openssl_encrypt_server/server.py` at **lines 159-175** catches database errors and returns the full exception string in the response.
...
### Summary
The `/ready` endpoint in `openssl_encrypt_server/server.py` at **lines 159-175** catches database errors and returns the full exception string in the response.
...
🚨 CVE-2026-74880
openssl_encrypt versions before 1.4.0 accept refresh tokens as URL query parameters in keyserver and telemetry server routes. Attackers can extract tokens from server logs, proxy logs, browser history, and HTTP Referer headers to gain unauthorized access.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 accept refresh tokens as URL query parameters in keyserver and telemetry server routes. Attackers can extract tokens from server logs, proxy logs, browser history, and HTTP Referer headers to gain unauthorized access.
🎖@cveNotify
GitHub
Refresh tokens accepted as URL query parameters causing token leakage
## Severity: HIGH
### Summary
Refresh tokens are accepted as URL query parameters in the keyserver and telemetry server routes.
### Affected Code
```python
# openssl_encrypt_server/mod...
### Summary
Refresh tokens are accepted as URL query parameters in the keyserver and telemetry server routes.
### Affected Code
```python
# openssl_encrypt_server/mod...
🚨 CVE-2026-74881
openssl_encrypt versions before 1.4.0 configure CORS with allow_origins set to wildcard and allow_credentials enabled to true. Attackers can create malicious websites that make authenticated cross-origin requests to the API on behalf of any user who visits them.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 configure CORS with allow_origins set to wildcard and allow_credentials enabled to true. Attackers can create malicious websites that make authenticated cross-origin requests to the API on behalf of any user who visits them.
🎖@cveNotify
GitHub
CORS wildcard with allow_credentials=True in standalone servers
## Severity: HIGH
### Summary
Both standalone servers configure CORS with `allow_origins=["*"]`, `allow_credentials=True`, `allow_methods=["*"]`, and `allow_headers=["...
### Summary
Both standalone servers configure CORS with `allow_origins=["*"]`, `allow_credentials=True`, `allow_methods=["*"]`, and `allow_headers=["...
🚨 CVE-2026-74882
openssl_encrypt versions before 1.4.0 contain an insecure default configuration that trusts the entire RFC 1918 private address space in IntegrityProxyConfig trusted_proxies. Attackers on private networks can forge client certificate headers to bypass mTLS authentication when ProxyAuth validation is relaxed or modified.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain an insecure default configuration that trusts the entire RFC 1918 private address space in IntegrityProxyConfig trusted_proxies. Attackers on private networks can forge client certificate headers to bypass mTLS authentication when ProxyAuth validation is relaxed or modified.
🎖@cveNotify
GitHub
Integrity proxy trusts entire RFC 1918 private address space by default
## Severity: HIGH
### Summary
The `IntegrityProxyConfig` in `openssl_encrypt_server/config.py` at **lines 86-97** defaults `trusted_proxies` to include `10.0.0.0/8`, `172.16.0.0/12`, and `192.168...
### Summary
The `IntegrityProxyConfig` in `openssl_encrypt_server/config.py` at **lines 86-97** defaults `trusted_proxies` to include `10.0.0.0/8`, `172.16.0.0/12`, and `192.168...
🚨 CVE-2026-74883
openssl_encrypt versions before 1.4.0 contain a sandbox bypass vulnerability where the plugin sandbox fails to restrict alternative file access methods like pathlib.Path and io.open. Attackers can import pathlib or io modules to read and write arbitrary files, completely bypassing the restricted_open file access controls.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a sandbox bypass vulnerability where the plugin sandbox fails to restrict alternative file access methods like pathlib.Path and io.open. Attackers can import pathlib or io modules to read and write arbitrary files, completely bypassing the restricted_open file access controls.
🎖@cveNotify
GitHub
pathlib.Path and io.open bypass sandbox builtins.open restriction
## Severity: HIGH
### Summary
The sandbox in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 412-440** restricts file access by overriding `builtins.open` with `restricted_op...
### Summary
The sandbox in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 412-440** restricts file access by overriding `builtins.open` with `restricted_op...
🚨 CVE-2026-74884
openssl_encrypt versions before 1.4.0 contain a path traversal vulnerability in the _is_safe_path method where the plugin_id parameter is not sanitized before constructing the plugin config directory path. Attackers can declare a malicious plugin_id containing path traversal sequences like '../' to access arbitrary directories outside the intended plugin directory.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a path traversal vulnerability in the _is_safe_path method where the plugin_id parameter is not sanitized before constructing the plugin config directory path. Attackers can declare a malicious plugin_id containing path traversal sequences like '../' to access arbitrary directories outside the intended plugin directory.
🎖@cveNotify
GitHub
Path traversal via unsanitized plugin_id in sandbox _is_safe_path
## Severity: HIGH
### Summary
The `_is_safe_path` method in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 617-633** constructs a plugin config directory path using the unsa...
### Summary
The `_is_safe_path` method in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 617-633** constructs a plugin config directory path using the unsa...
🚨 CVE-2026-74885
openssl_encrypt versions before 1.4.0 contain a logging bug in restore_hidden_modules() that logs module counts after clearing, always showing zero restored modules and corrupting audit trails. Additionally, a race condition exists between module hiding and import hook installation where another thread could re-import blocked modules in multi-threaded environments.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a logging bug in restore_hidden_modules() that logs module counts after clearing, always showing zero restored modules and corrupting audit trails. Additionally, a race condition exists between module hiding and import hook installation where another thread could re-import blocked modules in multi-threaded environments.
🎖@cveNotify
GitHub
restore_hidden_modules() logging bug and race condition in import guard
## Severity: HIGH
### Summary
Two issues exist in the `PluginImportGuard` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 96-117**.
### Issue 1: Logging Bug (line 117)
`...
### Summary
Two issues exist in the `PluginImportGuard` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 96-117**.
### Issue 1: Logging Bug (line 117)
`...
🚨 CVE-2026-74886
openssl_encrypt versions before 1.4.0 contain a plugin sandbox bypass vulnerability where the PluginImportGuard blocks a different set of modules than the AST analyzer's DANGEROUS_MODULES set. Attackers can bypass AST analysis through string obfuscation or encoding to import unblocked dangerous modules like sys, shutil, multiprocessing, importlib, and pickle for arbitrary code execution.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a plugin sandbox bypass vulnerability where the PluginImportGuard blocks a different set of modules than the AST analyzer's DANGEROUS_MODULES set. Attackers can bypass AST analysis through string obfuscation or encoding to import unblocked dangerous modules like sys, shutil, multiprocessing, importlib, and pickle for arbitrary code execution.
🎖@cveNotify
GitHub
Plugin import guard blocked modules not synchronized with AST analyzer
## Severity: HIGH
### Summary
The `PluginImportGuard` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 69-94** blocks a different set of modules than the AST analyzer's...
### Summary
The `PluginImportGuard` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 69-94** blocks a different set of modules than the AST analyzer's...
🚨 CVE-2026-74887
openssl_encrypt before 1.4.0 imports Python's non-cryptographic 'random' module (Mersenne Twister PRNG) at line 15 of openssl_encrypt/modules/pqc.py. No direct calls to random.* were present in the code, so no cryptographic operation is currently affected; however, the import creates a hazard that future code could inadvertently use random.randint() instead of a cryptographically secure alternative (secrets/os.urandom), producing predictable values since the Mersenne Twister state can be recovered from approximately 624 outputs. Fixed by removing the import in 1.4.0.
🎖@cveNotify
openssl_encrypt before 1.4.0 imports Python's non-cryptographic 'random' module (Mersenne Twister PRNG) at line 15 of openssl_encrypt/modules/pqc.py. No direct calls to random.* were present in the code, so no cryptographic operation is currently affected; however, the import creates a hazard that future code could inadvertently use random.randint() instead of a cryptographically secure alternative (secrets/os.urandom), producing predictable values since the Mersenne Twister state can be recovered from approximately 624 outputs. Fixed by removing the import in 1.4.0.
🎖@cveNotify
GitHub
Non-cryptographic random module imported in PQC crypto module
## Severity: HIGH
### Summary
The `random` module (Mersenne Twister PRNG, **not** cryptographically secure) is imported at **line 15** of `openssl_encrypt/modules/pqc.py`. While no direct `random...
### Summary
The `random` module (Mersenne Twister PRNG, **not** cryptographically secure) is imported at **line 15** of `openssl_encrypt/modules/pqc.py`. While no direct `random...
🚨 CVE-2026-74888
openssl_encrypt versions before 1.4.0 use a non-standard PBKDF2 key derivation construction with iterations=1 per call in an outer loop, creating a KDF whose security properties have not been formally analyzed. Attackers can exploit this weakened key derivation to more efficiently crack passwords protecting legacy encrypted files compared to standard PBKDF2 implementations.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 use a non-standard PBKDF2 key derivation construction with iterations=1 per call in an outer loop, creating a KDF whose security properties have not been formally analyzed. Attackers can exploit this weakened key derivation to more efficiently crack passwords protecting legacy encrypted files compared to standard PBKDF2 implementations.
🎖@cveNotify
GitHub
Custom PBKDF2 loop uses iterations=1 per call — non-standard construction
## Severity: HIGH
### Summary
The PBKDF2 key derivation loop in `openssl_encrypt/modules/crypt_core.py` at **lines 3852-3860** uses `iterations=1` per PBKDF2HMAC call inside an outer loop. This c...
### Summary
The PBKDF2 key derivation loop in `openssl_encrypt/modules/crypt_core.py` at **lines 3852-3860** uses `iterations=1` per PBKDF2HMAC call inside an outer loop. This c...
🚨 CVE-2026-74889
openssl_encrypt versions before 1.4.0 use HKDF with no salt and static info parameter in key normalization functions, reducing entropy extraction and determinism. Attackers can exploit predictable key derivation with identical inputs to weaken cryptographic security against multi-target attacks.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 use HKDF with no salt and static info parameter in key normalization functions, reducing entropy extraction and determinism. Attackers can exploit predictable key derivation with identical inputs to weaken cryptographic security against multi-target attacks.
🎖@cveNotify
GitHub
HKDF key normalization uses no salt with static info parameter
## Severity: HIGH
### Summary
The `normalize_to_key_length_secure` function in `openssl_encrypt/modules/crypt_core.py` at **lines 2082-2088** and the parallel KDF equivalent `_normalize_bytes` in...
### Summary
The `normalize_to_key_length_secure` function in `openssl_encrypt/modules/crypt_core.py` at **lines 2082-2088** and the parallel KDF equivalent `_normalize_bytes` in...
🚨 CVE-2026-74890
openssl_encrypt versions before 1.4.0 contain an authentication bypass vulnerability in CamelliaCipher that disables HMAC tag generation and verification when the PYTEST_CURRENT_TEST environment variable is set. Attackers with code execution can set this environment variable to produce unauthenticated ciphertext and bypass integrity protection on encrypted data.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain an authentication bypass vulnerability in CamelliaCipher that disables HMAC tag generation and verification when the PYTEST_CURRENT_TEST environment variable is set. Attackers with code execution can set this environment variable to produce unauthenticated ciphertext and bypass integrity protection on encrypted data.
🎖@cveNotify
GitHub
Camellia test mode disables HMAC authentication via environment variable
## Severity: HIGH
### Summary
The `CamelliaCipher` in `openssl_encrypt/modules/crypt_core.py` detects test mode via `os.environ.get("PYTEST_CURRENT_TEST")` at **line 845**. When in test...
### Summary
The `CamelliaCipher` in `openssl_encrypt/modules/crypt_core.py` detects test mode via `os.environ.get("PYTEST_CURRENT_TEST")` at **line 845**. When in test...
🚨 CVE-2026-74891
openssl_encrypt versions before 1.4.0 contain hardcoded database credentials in standalone server configuration files. Attackers on the same network can access PostgreSQL databases using well-known default credentials to retrieve sensitive data.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain hardcoded database credentials in standalone server configuration files. Attackers on the same network can access PostgreSQL databases using well-known default credentials to retrieve sensitive data.
🎖@cveNotify
GitHub
Hardcoded database credentials in standalone servers
## Severity: CRITICAL
### Summary
Both standalone servers ship with hardcoded database credentials as default connection strings.
### Affected Code
```python
# server/key-server/app/config.py:3...
### Summary
Both standalone servers ship with hardcoded database credentials as default connection strings.
### Affected Code
```python
# server/key-server/app/config.py:3...
🚨 CVE-2026-74892
openssl_encrypt versions before 1.4.0 contain a hardcoded default secret key in the standalone telemetry server configuration that is used for API key hashing. Attackers who know this default value can predict or forge API key hashes to compromise telemetry API authentication.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a hardcoded default secret key in the standalone telemetry server configuration that is used for API key hashing. Attackers who know this default value can predict or forge API key hashes to compromise telemetry API authentication.
🎖@cveNotify
GitHub
Hardcoded secret key in standalone telemetry server
## Severity: CRITICAL
### Summary
The standalone telemetry server's `config.py` at **line 34** defaults the `secret_key` to the literal string `"CHANGE_THIS_IN_PRODUCTION"`. This ke...
### Summary
The standalone telemetry server's `config.py` at **line 34** defaults the `secret_key` to the literal string `"CHANGE_THIS_IN_PRODUCTION"`. This ke...
🚨 CVE-2026-74894
openssl_encrypt before 1.4.0 contains an authentication bypass vulnerability in the verify_api_token function that accepts any non-empty Bearer token string without validation. Attackers can upload arbitrary public keys, enumerate all keys, and revoke keys belonging to any user by providing any Bearer token in the Authorization header.
🎖@cveNotify
openssl_encrypt before 1.4.0 contains an authentication bypass vulnerability in the verify_api_token function that accepts any non-empty Bearer token string without validation. Attackers can upload arbitrary public keys, enumerate all keys, and revoke keys belonging to any user by providing any Bearer token in the Authorization header.
🎖@cveNotify
GitHub
Standalone key server accepts ANY Bearer token as valid authentication
## Severity: CRITICAL
### Summary
The standalone key server's `verify_api_token()` function in `server/key-server/app/api/v1/keys.py` at **lines 48-87** only checks that a non-empty token str...
### Summary
The standalone key server's `verify_api_token()` function in `server/key-server/app/api/v1/keys.py` at **lines 48-87** only checks that a non-empty token str...
🚨 CVE-2026-74895
openssl_encrypt versions before 1.4.0 fail to apply sandbox restrictions in the default process isolation mode for plugin execution. Attackers can execute malicious plugins with unrestricted access to the filesystem, network, subprocess execution, and all Python modules.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 fail to apply sandbox restrictions in the default process isolation mode for plugin execution. Attackers can execute malicious plugins with unrestricted access to the filesystem, network, subprocess execution, and all Python modules.
🎖@cveNotify
GitHub
Process isolation (default mode) applies zero sandbox restrictions to plugins
## Severity: CRITICAL
### Summary
In `openssl_encrypt/modules/plugin_system/plugin_sandbox.py`, the default plugin execution mode (`use_process_isolation=True`) at **lines 702-801** spawns a chil...
### Summary
In `openssl_encrypt/modules/plugin_system/plugin_sandbox.py`, the default plugin execution mode (`use_process_isolation=True`) at **lines 702-801** spawns a chil...
🚨 CVE-2026-74896
openssl_encrypt versions before 1.4.0 contain a sandbox escape vulnerability in the DangerousPatternVisitor AST analyzer that fails to detect dunder attribute traversal techniques. Attackers can use __class__, __bases__, __subclasses__(), and __globals__ chains to access restricted functions and execute arbitrary system commands from plugin code.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a sandbox escape vulnerability in the DangerousPatternVisitor AST analyzer that fails to detect dunder attribute traversal techniques. Attackers can use __class__, __bases__, __subclasses__(), and __globals__ chains to access restricted functions and execute arbitrary system commands from plugin code.
🎖@cveNotify
GitHub
AST analyzer misses dunder attribute traversal sandbox escapes
## Severity: CRITICAL
### Summary
The `DangerousPatternVisitor` in `openssl_encrypt/modules/plugin_system/plugin_ast_analyzer.py` at **lines 41-316** does not detect the primary Python sandbox es...
### Summary
The `DangerousPatternVisitor` in `openssl_encrypt/modules/plugin_system/plugin_ast_analyzer.py` at **lines 41-316** does not detect the primary Python sandbox es...
🚨 CVE-2026-74899
openssl_encrypt versions before 1.4.0 contain a sandbox escape vulnerability in IsolatedPluginExecutor that exposes Python type objects in restricted exec() builtins. Attackers can traverse the Python class hierarchy via __class__.__mro__.__subclasses__() to access system functions and execute arbitrary OS commands.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a sandbox escape vulnerability in IsolatedPluginExecutor that exposes Python type objects in restricted exec() builtins. Attackers can traverse the Python class hierarchy via __class__.__mro__.__subclasses__() to access system functions and execute arbitrary OS commands.
🎖@cveNotify
GitHub
Plugin sandbox escape via Python type hierarchy traversal
## Severity: CRITICAL
### Summary
The `IsolatedPluginExecutor` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 851-873** uses `exec()` with a restricted `__builtins__` dic...
### Summary
The `IsolatedPluginExecutor` in `openssl_encrypt/modules/plugin_system/plugin_sandbox.py` at **lines 851-873** uses `exec()` with a restricted `__builtins__` dic...
🚨 CVE-2026-74900
openssl_encrypt versions before 1.4.0 contain a critical vulnerability in pqc.py where KEM decapsulation failures silently fall back to simulation mode, generating a deterministic shared secret from only 16 bytes of the private key and publicly available encapsulated key data. Attackers who obtain 16 bytes of the private key can compute the shared secret and decrypt all ciphertext, as the fallback triggers on any KEM failure without raising an error.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain a critical vulnerability in pqc.py where KEM decapsulation failures silently fall back to simulation mode, generating a deterministic shared secret from only 16 bytes of the private key and publicly available encapsulated key data. Attackers who obtain 16 bytes of the private key can compute the shared secret and decrypt all ciphertext, as the fallback triggers on any KEM failure without raising an error.
🎖@cveNotify
GitHub
PQC simulation mode fallback uses weak deterministic shared secret
## Severity: CRITICAL
### Summary
In `openssl_encrypt/modules/pqc.py` at **lines 1046-1138**, if KEM decapsulation fails for any reason, the code silently falls back to a "simulation mode&qu...
### Summary
In `openssl_encrypt/modules/pqc.py` at **lines 1046-1138**, if KEM decapsulation fails for any reason, the code silently falls back to a "simulation mode&qu...
🚨 CVE-2026-74901
openssl_encrypt versions before 1.4.0 contain an authentication bypass vulnerability in pqc.py where AES-GCM decryption failures trigger fallback to unauthenticated AES-CTR mode. Attackers can modify ciphertext in transit to bypass integrity verification and perform bit-flipping attacks without detection.
🎖@cveNotify
openssl_encrypt versions before 1.4.0 contain an authentication bypass vulnerability in pqc.py where AES-GCM decryption failures trigger fallback to unauthenticated AES-CTR mode. Attackers can modify ciphertext in transit to bypass integrity verification and perform bit-flipping attacks without detection.
🎖@cveNotify
GitHub
PQC fallback to unauthenticated AES-CTR when GCM fails
## Severity: CRITICAL
### Summary
In `openssl_encrypt/modules/pqc.py` at **lines 1400-1444**, when AES-GCM decryption fails (authentication error), the code falls back to **unauthenticated AES-CT...
### Summary
In `openssl_encrypt/modules/pqc.py` at **lines 1400-1444**, when AES-GCM decryption fails (authentication error), the code falls back to **unauthenticated AES-CT...