AVideo - Unauthenticated PGP Message Decryption via decryptMessage.json.php Endpoint
Description
AVideo through version 25.0 contains an authentication bypass vulnerability in the decryptMessage.json.php endpoint that allows unauthenticated users to decrypt PGP messages. Remote attackers can submit private keys, ciphertext, and passphrases to perform server-side decryption without credentials, exposing key material to logs and enabling resource exhaustion attacks.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
1Patches
Vulnerability mechanics
Root cause
"Missing authentication check on the decryptMessage.json.php endpoint allows unauthenticated PGP decryption."
Attack vector
An unauthenticated remote attacker sends a POST request to `/plugin/LoginControl/pgp/decryptMessage.json.php` with a JSON body containing a PGP private key, ciphertext, and passphrase [ref_id=1]. The server decrypts the message and returns the plaintext, requiring no session, token, or credential [ref_id=1]. This allows anyone who can reach the endpoint to offload decryption work to the server and exposes submitted private key material to server memory and logging infrastructure [ref_id=1].
Affected code
The endpoint at `decryptMessage.json.php` in the `plugin/LoginControl/pgp/` directory accepts a JSON body containing a private key, ciphertext, and passphrase, then passes them directly to the `decryptMessage()` function without any authentication check [ref_id=1].
What the fix does
The advisory recommends adding a `User::isLogged()` check (or equivalent session/authentication validation) at the top of `decryptMessage.json.php` before processing any user-supplied input [ref_id=1]. No patch diff is provided in the bundle, so the exact code change is not shown; however, the mitigation would prevent unauthenticated requests from reaching the decryption routine, closing the bypass [ref_id=1].
Preconditions
- networkNetwork access to the AVideo server's `/plugin/LoginControl/pgp/decryptMessage.json.php` endpoint
- inputAttacker must possess a PGP private key, matching ciphertext, and the key's passphrase
Reproduction
```bash curl -s -X POST \ "https://target.example.com/plugin/LoginControl/pgp/decryptMessage.json.php" \ -H "Content-Type: application/json" \ -d '{ "textToDecrypt": "-----BEGIN PGP MESSAGE-----\n<base64_ciphertext>\n-----END PGP MESSAGE-----", "privateKeyToDecryptMsg": "-----BEGIN PGP PRIVATE KEY BLOCK-----\n<base64_private_key>\n-----END PGP PRIVATE KEY BLOCK-----", "keyPassword": "passphrase" }' ``` [ref_id=1]
Generated on Jun 21, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2- github.com/WWBN/AVideo/security/advisories/GHSA-5x2w-37xf-7962mitrevendor-advisory
- www.vulncheck.com/advisories/avideo-unauthenticated-pgp-message-decryption-via-decryptmessage-json-php-endpointmitrethird-party-advisory
News mentions
0No linked articles in our index yet.