GHSA-mwjc-5j4x-r686HighCVSS 7.5
AVideo has an unauthenticated decrypt oracle leaking any ciphertext
🔗 CVE IDs covered (1)
📋 Description
Summary
The API plugin exposes a decryptString action without any authentication. Anyone can submit ciphertext and receive plaintext. Ciphertext is issued publicly (e.g., view/url2Embed.json.php), so any user can recover protected tokens/metadata. Severity: High.
Details
- Entry:
plugin/API/get.json.phpis unauthenticated. - Handler:
plugin/API/API.phpget_api_decryptString()(lines ~5945–5966):
No APISecret or user check occurs before decrypting.$string = decryptString($_REQUEST['string']); return new ApiObject($string, empty($string)); - Public ciphertext source:
view/url2Embed.json.phpreturnsplayLink/playEmbedLink(encryptString(json_encode(...))) to any caller.
PoC
- Obtain ciphertext:
CopyGET /view/url2Embed.json.php?url=https://example.com/video.mp4playLink. - Decrypt without auth:
Response contains the plaintext JSON (videoLink, title, users_id, etc.).POST /plugin/API/get.json.php?APIName=decryptString Content-Type: application/x-www-form-urlencoded string=<playLink ciphertext>
Impact
- Any encrypted payload produced by the platform can be decrypted by anyone.
- Leaks tokens/links intended to be confidential; enables replay and tampering where secrecy was assumed.
Mitigation
- Require API secret or authenticated/authorized user for
decryptString, or remove the endpoint. - Prefer one-way signatures (HMAC) instead of exposing generic decryption.
- Rotate encryption keys/salts after patch to invalidate exposed ciphertexts.
🎯 Affected products1
- composer/wwbn/avideo:<= 26.0