CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-5X2W-37XF-7962

GHSA-5X2W-37XF-7962: Unauthenticated PGP Decryption and Resource Exhaustion in AVideo

Alon Barad
Alon Barad
Software Engineer

Mar 19, 2026·7 min read·14 visits

Executive Summary (TL;DR)

An unauthenticated endpoint in AVideo's LoginControl plugin allows arbitrary PGP decryption operations. Attackers can exploit this to consume server CPU resources or expose private keys via system logs.

AVideo versions up to and including 25.0 expose a publicly accessible, unauthenticated endpoint that performs server-side PGP decryption. This vulnerability allows an anonymous attacker to submit arbitrary cryptographic workloads to the server, potentially causing resource exhaustion and exposing sensitive private key material in application logs.

Vulnerability Overview

The AVideo open-source video streaming platform contains a critical access control flaw within its cryptographic utility endpoints. The specific vulnerability resides in the LoginControl plugin, which exposes a server-side PGP decryption routine to unauthenticated external actors. This flaw is formally classified under CWE-306 (Missing Authentication for Critical Function) and CWE-287 (Improper Authentication).

The application exposes the PHP script at the URI path plugin/LoginControl/pgp/decryptMessage.json.php. This endpoint is designed to accept user-controlled JSON payloads and process them through the underlying cryptographic libraries. Because the script does not validate the existence of a valid user session prior to execution, any network request reaching the web server will trigger the internal PHP logic.

The immediate impacts of this missing authorization check are twofold. First, it permits resource exhaustion, as an attacker can force the server to execute computationally expensive decryption algorithms repeatedly. Second, it creates an information disclosure vector, as the private keys and passphrases transmitted in the request payload may be captured by reverse proxies, web application firewalls, or standard error logging mechanisms.

Root Cause Analysis

The root cause of this vulnerability is the complete omission of session validation and authorization guardrails within the target PHP script. In a properly secured application architecture, API endpoints that perform sensitive or resource-intensive operations must mandate user authentication. The AVideo platform typically utilizes a specific method, such as User::isLogged(), to enforce these access controls.

The vulnerable script accepts an HTTP POST request with a JSON body containing three specific keys: privateKeyToDecryptMsg, textToDecrypt, and keyPassword. The application parses this JSON stream and assigns the values directly to an internal object. The script then calls the decryptMessage() function, passing these untrusted values directly as arguments.

Because the PHP execution model processes scripts linearly, the absence of an early termination condition allows execution to proceed directly to the cryptographic subroutine. There is no middleware intercepting the request, nor is there any authorization check validating whether the requesting client possesses the permissions required to utilize the cryptographic utility.

This structural oversight transforms the server into an unauthenticated decryption oracle. The application logic trusts the inbound payload unconditionally, failing to verify the origin or intent of the request before allocating CPU time and memory to handle the PGP block processing.

Code Analysis

The fundamental flaw exists within the execution flow of decryptMessage.json.php. The script expects a JSON payload and processes it without enforcing authentication constraints. The relevant vulnerable sequence demonstrates the direct ingestion of POST data into the decryption logic.

// Vulnerable Code Path (Conceptual representation based on analysis)
header('Content-Type: application/json');
$obj = new stdClass();
 
// Input is retrieved from php://input
$postData = file_get_contents("php://input");
$requestObj = json_decode($postData);
 
// Direct execution of cryptographic function without authentication
$textDecrypted = decryptMessage(
    $requestObj->textToDecrypt, 
    $requestObj->privateKeyToDecryptMsg, 
    $requestObj->keyPassword
);
 
echo json_encode(array("decrypted" => $textDecrypted));

As of March 2026, the WWBN/AVideo repository remains unpatched for this specific issue. To remediate this flaw, developers must introduce an explicit authentication verification block at the beginning of the script. This block must terminate the script execution if the requester does not hold a valid session.

// Required Patch Pattern
header('Content-Type: application/json');
 
// Enforce authentication check immediately
if (!User::isLogged()) {
    http_response_code(403);
    die(json_encode(array("error" => "Access denied. Authentication required.")));
}
 
$postData = file_get_contents("php://input");
$requestObj = json_decode($postData);
 
$textDecrypted = decryptMessage(
    $requestObj->textToDecrypt, 
    $requestObj->privateKeyToDecryptMsg, 
    $requestObj->keyPassword
);

This proposed fix ensures that the runtime environment evaluates the user's authentication state before parsing the JSON body or allocating resources. If the User::isLogged() condition returns false, the script halts immediately, completely mitigating both the resource exhaustion vector and the localized logging exposure.

Exploitation

Exploitation of this vulnerability requires minimal technical sophistication and no specialized network positioning. An attacker must simply identify an AVideo instance exposing the /plugin/LoginControl/pgp/decryptMessage.json.php endpoint. The attack relies solely on standard HTTP requests.

The attacker crafts a custom HTTP POST payload containing valid, base64-encoded PGP material. The payload structure must conform to the JSON schema expected by the script. This includes a valid private key, a ciphertext block encrypted for that specific key, and the corresponding passphrase.

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"
  }'

Upon receiving the request, the AVideo server processes the payload and returns the decrypted plaintext in the HTTP response. A threat actor can script this exploitation phase, submitting highly complex cryptographic tasks in rapid succession to deliberately saturate the CPU capabilities of the hosting environment.

Impact Assessment

The concrete security impact of GHSA-5X2W-37XF-7962 focuses on application availability and secondary information disclosure. The vulnerability holds a CVSS v4.0 score of 4.8 (Medium), represented by the vector CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N. This score reflects the immediate lack of system-level compromise, contrasted with the localized disruption capabilities.

The primary concern is the potential for Application-layer Denial of Service (T1499.003). Asymmetric cryptographic operations, particularly PGP decryption, demand significant CPU overhead. By orchestrating a flood of valid decryption requests, an unauthenticated attacker can effectively monopolize the application's PHP worker pool. This resource starvation renders the AVideo platform unresponsive to legitimate user traffic.

A secondary risk involves CWE-312 (Cleartext Storage of Sensitive Information). The attack requires the submission of raw PGP private keys and their plaintext passphrases in the HTTP request body. Web application environments frequently feature extensive diagnostic logging, error tracing, or WAF inspection mechanisms that serialize and store incoming POST bodies. This behavior inadvertently records sensitive key material in persistent, unencrypted system logs.

Finally, the vulnerability provides attackers with an anonymous cryptographic processing oracle. Threat actors can abuse this exposed infrastructure to perform their own unrelated PGP decryption tasks, obfuscating their operational infrastructure while shifting the computational burden and power costs onto the victim organization.

Remediation and Mitigation

As of the initial disclosure in March 2026, the WWBN/AVideo upstream repository has not released an official patch specifically resolving GHSA-5X2W-37XF-7962. Consequently, system administrators and security engineering teams must rely on localized mitigation strategies to secure vulnerable instances. The most effective immediate mitigation requires web server-level restrictions.

Administrators should implement access control rules within their web server configuration (Nginx or Apache) to deny public access to the plugin/LoginControl/pgp/ directory entirely. If the application configuration permits, restricting this directory to internal IP ranges or requiring HTTP Basic Authentication will prevent anonymous exploitation attempts. In Nginx, this involves creating a specific location block that returns a 403 Forbidden status for the targeted URI.

For teams capable of modifying the application source code directly, inserting the User::isLogged() check at the absolute beginning of decryptMessage.json.php serves as a permanent hotfix. This code-level remediation correctly aligns the script's execution requirements with the platform's overarching authorization architecture.

Furthermore, organizations must review their observability and logging pipelines. It is essential to configure web application firewalls, load balancers, and PHP error handlers to sanitize or drop POST request bodies directed at cryptographic endpoints. This operational safeguard prevents the incidental persistence of sensitive private keys and passphrases in system logs.

Technical Appendix

CVSS Score
4.8/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N

Affected Systems

WWBN/AVideo

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
<= 25.0Unpatched
AttributeDetail
Advisory IDGHSA-5X2W-37XF-7962
CWE IDCWE-306, CWE-287, CWE-312
CVSS v4.0 Score4.8 (Medium)
Attack VectorNetwork
Authentication RequiredNone
Exploit StatusProof of Concept (PoC) Available
Vulnerability ImpactResource Exhaustion (DoS) and Information Exposure
Patch StatusUnpatched (as of March 2026)

MITRE ATT&CK Mapping

T1078.001Valid Accounts: Default Accounts
Initial Access
T1499.003Endpoint Denial of Service: Application Exhaustion Flood
Impact
T1539Steal Web Session Cookie
Credential Access
CWE-306
Missing Authentication for Critical Function

The software does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.

Known Exploits & Detection

Valentin Lobstein (Chocapikk) Security AuditProof of concept HTTP POST request executing unauthenticated PGP decryption.

Vulnerability Timeline

Security audit by Valentin Lobstein identifies vulnerabilities in AVideo.
2025-12-18
Official GitHub Advisory GHSA-5X2W-37XF-7962 is published.
2026-03-19

References & Sources

  • [1]GitHub Advisory: GHSA-5X2W-37XF-7962
  • [2]OSV Record
  • [3]Valentin Lobstein Security Audit
  • [4]Project Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 10 hours ago•GHSA-H5X8-XP6M-X6Q4
7.1

GHSA-H5X8-XP6M-X6Q4: Unvalidated Signature Generation in @jhb.software/payload-cloudinary-plugin

The @jhb.software/payload-cloudinary-plugin exposes an endpoint that performs unvalidated cryptographic signing of Cloudinary API parameters, allowing authenticated users with minimal privileges to forge valid signatures for arbitrary actions. This flaw allows attackers to overwrite remote storage assets, execute unauthorized file uploads, alter asset visibility parameters, trigger SSRF webhooks, and perform directory traversal within Cloudinary repositories.

Alon Barad
Alon Barad
3 views•6 min read
•about 11 hours ago•GHSA-G2GW-Q38M-VJFC
8.7

GHSA-G2GW-Q38M-VJFC: Server-Side Request Forgery and Bearer Token Exfiltration in @merill/lokka

A Server-Side Request Forgery (SSRF) and Bearer Token Exfiltration vulnerability exists in the @merill/lokka (Lokka) Model Context Protocol (MCP) server prior to version 2.1.2. The server constructed Azure Resource Manager request URLs by concatenating user-controlled path parameters directly into destination request strings. By injecting authority-redefinition characters, an attacker can manipulate URL parsing to execute a host-escape attack, forcing the server to send high-privilege Azure Resource Manager (ARM) Bearer tokens to an external attacker-controlled host. This allows complete administrative access to the associated Azure subscriptions.

Alon Barad
Alon Barad
6 views•7 min read
•about 12 hours ago•GHSA-4XGF-CPJX-PC3J
5.3

GHSA-4xgf-cpjx-pc3j: Directory Traversal and Symlink Following in Pydantic Settings

A directory traversal and symlink following vulnerability exists in Pydantic Settings when using the NestedSecretsSettingsSource with nested subdirectory lookups enabled. An attacker capable of writing to the secrets directory can bypass size limitations, read arbitrary host files, or cause a denial-of-service condition via cyclic symlinks.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 14 hours ago•GHSA-H5RG-8P7F-47G2
4.1

GHSA-h5rg-8p7f-47g2: Server-Side Request Forgery (SSRF) in SurrealDB Identity & Access Management (IAM) JWKS Fetcher

A Server-Side Request Forgery (SSRF) vulnerability exists in SurrealDB's Identity & Access Management (IAM) module prior to version 3.1.5. When configuring JSON Web Key Set (JWKS) URLs for token verification, the remote fetcher follows HTTP redirects by default without validating redirect targets against configured network capabilities. This allows high-privileged users to bypass network access limits and perform blind port scanning of internal network resources.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 15 hours ago•GHSA-CC8F-FCX3-GPJR
7.7

GHSA-cc8f-fcx3-gpjr: Arbitrary File Disclosure via DEFINE ANALYZER mapper filter in SurrealDB

A local file disclosure vulnerability exists in SurrealDB's full-text search capabilities, allowing authenticated users with database EDITOR or OWNER roles to read arbitrary files from the host system filesystem. This occurs by abusing the mapper() filter inside a DEFINE ANALYZER statement to point to system files.

Alon Barad
Alon Barad
6 views•6 min read
•about 15 hours ago•GHSA-H4H3-3RFJ-X6FQ
4.3

GHSA-H4H3-3RFJ-X6FQ: Value-Ordering Oracle Side-Channel via Indexed ORDER BY in SurrealDB

SurrealDB versions 3.0.0 through 3.1.4 contain an information exposure vulnerability (CWE-203) where the query planner optimizes sorted queries using indexes on fields with field-level SELECT restrictions. Because the query planner performs index-based sorting before enforcing permission-based redaction, unauthorized users can observe the physical order of returned rows to deduce the relative values of protected fields.

Alon Barad
Alon Barad
4 views•8 min read