wwbn/avideo · Security
AVideo has an unauthenticated decrypt oracle leaking any ciphertext
- GHSA ID
- GHSA-mwjc-5j4x-r686
- CVE ID
- CVE-2026-33512
- Severity
- high
- Published
- Updated
- CVSS
- 7.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- CVSS v3
- 7.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
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.
CWEs
- CWE-287 · Improper Authentication
- CWE-312 · Cleartext Storage of Sensitive Information
- CWE-326 · Inadequate Encryption Strength
- CWE-327 · Use of a Broken or Risky Cryptographic Algorithm