Jun 4, 2026·5 min read·3 visits
Authenticated users can inject arbitrary virtual funds into their wallets due to a hardcoded payment success flag and missing API validation in a placeholder endpoint.
An authenticated wallet credit bypass vulnerability exists in WWBN AVideo version 29.0 and earlier. The AuthorizeNet plugin includes an unfinished mockup endpoint, processPayment.json.php, which lacks actual transaction verification and hardcodes success. This allows any authenticated user to credit their wallet with arbitrary balances without making any payments.
WWBN AVideo is an open-source video platform. The software includes various plugins, including AuthorizeNet for payment processing and YPTWallet for virtual wallet management. In versions 29.0 and earlier, a vulnerable file named processPayment.json.php in the AuthorizeNet plugin is accessible to authenticated users.
This endpoint was intended to serve as a development placeholder or test script but was left active in production releases. Because the endpoint does not perform any actual integration with the Authorize.Net API, it trusts input parameters blindly and modifies user balances without a real-world financial transaction.
The vulnerability is tracked as CVE-2026-47696 and GHSA-9392-pj54-qqf8. Its exploitation allows standard authenticated users to artificially increase their virtual currency balance, bypass paywalls, and access premium site features. The scope remains restricted to systems utilizing both the AuthorizeNet and YPTWallet plugins.
The root cause of the vulnerability lies in the file plugin/AuthorizeNet/processPayment.json.php. This file accepts a POST request containing an amount parameter and an optional userData parameter.
The script initializes the AuthorizeNet plugin and converts the user-supplied amount into a floating-point number. While the script validates that the amount is greater than zero, it fails to perform any verification with the payment provider. Instead, the actual call to the Authorize.Net API is commented out with a 'TODO' placeholder.
Following the commented-out block, the script sets a local variable $paymentSuccess to true by default. It then retrieves the logged-in user's ID via the global session and uses the addBalance method of the YPTWallet plugin to add the arbitrary amount directly to the user's account. This represents a classic insufficient verification of data authenticity (CWE-345).
Below is the vulnerable source code as it existed in plugin/AuthorizeNet/processPayment.json.php prior to the patch:
<?php
require_once __DIR__ . '/../../videos/configuration.php';
header('Content-Type: application/json');
$plugin = new AuthorizeNet();
$amount = isset($_POST['amount']) ? floatval($_POST['amount']) : 0;
$userData = isset($_POST['userData']) ? $_POST['userData'] : [];
if ($amount <= 0) {
echo json_encode(['error' => 'Invalid amount']);
exit;
}
// TODO: Implement payment logic using Authorize.Net API
// $result = $plugin->chargePayment($amount, $userData);
$paymentSuccess = true;
$users_id = @User::getId();
if ($paymentSuccess && !empty($users_id)) {
$walletPlugin = AVideoPlugin::loadPluginIfEnabled("YPTWallet");
if ($walletPlugin) {
$walletPlugin->addBalance($users_id, $amount, 'Authorize.Net one-time payment');
echo json_encode(['success' => true, 'result' => 'Payment processed and wallet updated']);
exit;
}
}The vulnerability was resolved by completely deleting the processPayment.json.php file in the security fix. Because the file was non-functional and served no business purpose, removing it entirely from the codebase was the most robust remediation strategy, reducing the application's attack surface without introducing complex verification logic.
Exploitation of this vulnerability requires a valid, authenticated user session on the target AVideo platform. The attacker does not need administrative privileges. The target system must have both the AuthorizeNet and YPTWallet plugins enabled.
An attacker begins by logging into their account to establish a session cookie. They then construct an HTTP POST request targeting /plugin/AuthorizeNet/processPayment.json.php with the parameter amount set to the desired virtual credit.
Upon processing, the server executes the script, evaluates $paymentSuccess as true, and directly credits the database ledger for that user session. The response returns a success message confirming the wallet update.
The security impact of CVE-2026-47696 is classified as high integrity violation. An attacker can generate an infinite amount of virtual currency on the platform.
While the CVSS 3.1 base score is 4.3 (due to low integrity impact in the standard matrix where the system itself is not fully compromised), the CVSS 4.0 score of 7.1 reflects the true severity. High integrity impact is achieved because the application's core financial and access control business logic is entirely bypassed.
This virtual balance can be used to purchase premium videos, unlock paid subscription plans, or access other paywalled resources within the target site. This leads to immediate financial loss for content creators and platform operators.
The primary remediation is to upgrade WWBN AVideo to a version released after May 19, 2026, which lacks the vulnerable processPayment.json.php script.
If immediate upgrading is not possible, system administrators can manually delete the file from the server's directory:
rm /var/www/html/AVideo/plugin/AuthorizeNet/processPayment.json.php
To detect potential exploitation, administrators should audit web server logs for any POST requests targeting the affected endpoint. Additionally, database administrators should search the wallet transaction table for rows containing the description 'Authorize.Net one-time payment' and cross-reference them with actual payment gateway records.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
AVideo WWBN | <= 29.0 | Commit 8224024 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-345 |
| Attack Vector | Network |
| CVSS v4.0 | 7.1 |
| CVSS v3.1 | 4.3 |
| Exploit Status | PoC |
| KEV Status | Not Listed |
The software does not sufficiently verify the authenticity of data, allowing an attacker to submit unverified parameters that are trusted implicitly by the system.
A CSV Formula Injection vulnerability (CWE-1236) exists in the Spree headless eCommerce platform within the customer export functionality. An unauthenticated attacker can register a customer profile containing malicious formula sequences in fields like the first name or last name. When an administrator exports the customer data to a CSV file and opens it in a spreadsheet application, the spreadsheet engine can interpret and execute these formulas, potentially leading to remote command execution on the administrator's workstation or out-of-band data exfiltration.
A Stored Cross-Site Scripting (XSS) vulnerability exists in WWBN AVideo versions up to and including 29.0. Unsanitized category descriptions are stored in the database and subsequently rendered as raw HTML in the Gallery view plugin, allowing low-privileged authenticated users to execute arbitrary JavaScript in the browsers of visiting users.
A critical supply chain compromise was identified in the Node.js package @cap-js/openapi at version 1.4.1. An attacker gained unauthorized publishing access to the npm registry and distributed a backdoored release that harvests sensitive developer credentials, environment variables, and SSH keys. The malicious code then exfiltrates the collected data to external actor-controlled servers.
An unauthenticated stored DOM-based Cross-Site Scripting (DOM XSS) vulnerability in the YPTSocket plugin of WWBN AVideo (formerly YouPHPTube) allows remote attackers to execute arbitrary JavaScript within the session context of administrative users. Unsanitized metadata parameters supplied during the WebSocket handshake are persisted in an SQLite database and broadcast to connected users. The frontend application processes these parameters through an unsafe jQuery append sink, leading to silent, high-impact administrative context compromise.
A path parsing and normalization inconsistency vulnerability exists in the Hono web framework prior to version 4.12.21. When hosting sub-applications via the app.mount() routing interface, Hono calculates the routing path prefix length on a percent-decoded representation of the URI but executes the path-slicing offset on the raw, percent-encoded string. This discrepancy results in malformed request paths being dispatched to mounted sub-applications, potentially leading to route bypasses, route confusion, and application-level Denial of Service.
An application-level Denial of Service vulnerability exists in the Strawberry GraphQL library (versions 0.71.0 through 0.315.6) due to uncontrolled recursion within the QueryDepthLimiter and MaxAliasesLimiter extensions when processing circular fragment references.