<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>AVideo - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/avideo/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 15 May 2026 18:34:29 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/avideo/feed.xml" rel="self" type="application/rss+xml"/><item><title>AVideo OS Command Injection via Unescaped m3u8 URL (CVE-2026-45578)</title><link>https://feed.craftedsignal.io/briefs/2026-05-avideo-cmd-injection/</link><pubDate>Fri, 15 May 2026 18:34:29 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-avideo-cmd-injection/</guid><description>AVideo is vulnerable to OS command injection (CVE-2026-45578) in the `on_publish.php` file due to improper sanitization of the m3u8 URL, allowing attackers to execute arbitrary commands by injecting shell metacharacters.</description><content:encoded><![CDATA[<p>AVideo, a video-sharing platform, is susceptible to a critical OS command injection vulnerability (CVE-2026-45578) within the <code>on_publish.php</code> file. The issue stems from constructing a command line for <code>execAsync()</code> by directly concatenating strings, single-quoting arguments without proper escaping using <code>escapeshellarg()</code>. This flaw, located in the YPTSocket notification branch of the Live plugin, enables a malicious actor to inject arbitrary commands by embedding a single quote (<code>'</code>) within the <code>$m3u8</code> URL or other command parameters. Successful exploitation allows the attacker to execute arbitrary OS commands with the privileges of the web server runtime user. This vulnerability affects AVideo versions up to and including 29.0. The lack of input sanitization and direct web accessibility to <code>on_publish.php</code> are key factors enabling this attack.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker gains a <code>canStream</code> account on the AVideo platform.</li>
<li>Attacker crafts a malicious stream key containing a single quote and shell metacharacters (e.g., <code>evilkey';id&gt;/tmp/pwn;#</code>) and persists it via <code>saveLive.php</code>.</li>
<li>Attacker sends a POST request directly to <code>https://target/plugin/Live/on_publish.php</code> with the crafted stream key in the <code>name</code> parameter and a valid password in the <code>p</code> parameter.</li>
<li><code>on_publish.php</code> processes the POST request, strips <code>&amp;</code> and <code>=</code>, but permits the single quote and other shell metacharacters in the stream key.</li>
<li><code>Live::getM3U8File</code> constructs the m3u8 URL with the injected payload (e.g., <code>https://server/live/evilkey';id&gt;/tmp/pwn;#.m3u8</code>).</li>
<li>The command string is built using string concatenation without proper escaping, resulting in a vulnerable command.</li>
<li><code>execAsync()</code> executes the command, leading to OS command injection.</li>
<li>Attacker achieves arbitrary OS command execution with the privileges of the web server user.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability (CVE-2026-45578) grants the attacker the ability to execute arbitrary OS commands on the AVideo server. This could lead to several consequences, including unauthorized access to sensitive data such as database credentials, exfiltration of user information, deployment of a webshell for persistent access, lateral movement to other plugin credentials (PayPal/Stripe API keys, AWS keys), or privilege escalation via local sudoers entries. The impact is significant, potentially leading to complete compromise of the AVideo platform.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the provided patch that utilizes <code>escapeshellarg()</code> on all variables interpolated into the command string in <code>plugin/Live/on_publish.php</code> to prevent shell injection (see code diff in Overview).</li>
<li>Implement an <code>.htaccess</code> or nginx <code>location</code> rule to restrict access to <code>/plugin/Live/on_publish.php</code> to <code>127.0.0.1</code> and authorized RTMP server IPs as a defense-in-depth measure (see Overview).</li>
<li>Deploy the Sigma rule &quot;Detect AVideo on_publish.php Command Injection Attempt&quot; to identify potential exploitation attempts by monitoring for POST requests to <code>on_publish.php</code> with shell metacharacters in the <code>name</code> parameter (see Rules).</li>
<li>Enable webserver logging to capture HTTP requests, which are essential for detecting and investigating exploitation attempts (see Rules - logsource).</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>command injection</category><category>avideo</category><category>webserver</category></item><item><title>AVideo Meet Plugin Authorization Bypass via Filename Parameter</title><link>https://feed.craftedsignal.io/briefs/2026-05-avideo-meet-auth-bypass/</link><pubDate>Fri, 15 May 2026 18:18:36 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-avideo-meet-auth-bypass/</guid><description>AVideo's Meet plugin contains an authorization bypass vulnerability in the `uploadRecordedVideo.json.php` endpoint that derives `users_id` from the uploaded filename and calls passwordless `User-&gt;login()`, allowing any caller with the Meet shared secret to obtain a session as arbitrary users including admin.</description><content:encoded><![CDATA[<p>AVideo is a video-sharing platform with a Meet plugin for video conferencing integration. The <code>uploadRecordedVideo.json.php</code> endpoint in the Meet plugin is vulnerable to an authorization bypass. This vulnerability allows an attacker with knowledge of the Meet shared secret to authenticate as any user, including an administrator. The vulnerability stems from the endpoint using the filename of the uploaded video to determine the <code>users_id</code> for authentication. An attacker can manipulate this filename to impersonate any user. The shared secret is calculable from the AVideo salt, often leaked via separate path-traversal vulnerabilities (e.g. <code>GHSA-83xq-8jxj-4rxm</code> or <code>GHSA-4wmm-6qxj-fpj4</code>) or recoverable via timing attack on <code>checkToken.json.php</code>. The affected version is AVideo version 29.0 and earlier.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker obtains the Meet shared secret through path traversal to read <code>videos/configuration.php</code> or by timing attacks against the <code>checkToken.json.php</code> endpoint. The secret is derived from <code>md5($global['systemRootPath'] . $global['salt'] . &quot;meet&quot;)</code>.</li>
<li>Attacker crafts a malicious HTTP POST request to <code>/plugin/Meet/uploadRecordedVideo.json.php</code> with the <code>Authorization: Bearer &lt;Meet secret&gt;</code> header set.</li>
<li>The POST request includes a multipart body with a file field named <code>upl</code>. The attacker sets the filename of the uploaded file to <code>1-anything.mp4</code>, where <code>1</code> is the target <code>users_id</code> (e.g., the admin user).</li>
<li>The server validates the Meet shared secret, but trusts the attacker-controlled filename to determine the <code>users_id</code> on line 56 of <code>plugin/Meet/uploadRecordedVideo.json.php</code>.</li>
<li>The server instantiates a <code>User</code> object using the attacker-provided <code>users_id</code> and calls <code>$userObject-&gt;login(true, true)</code>, triggering the passwordless login path in <code>objects/user.php</code>.</li>
<li>The server sets <code>$_SESSION['user']</code> to the impersonated user's data, calls <code>setUserCookie(...)</code>, and issues a new session ID via <code>_session_regenerate_id()</code>.</li>
<li>The HTTP response includes a <code>Set-Cookie</code> header with the new <code>PHPSESSID</code>.</li>
<li>The attacker uses the captured <code>PHPSESSID</code> cookie in subsequent requests to access the AVideo platform as the impersonated user, gaining full control of their account.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to gain unauthorized access to any user account on the AVideo platform, including administrator accounts. This can lead to complete system compromise, data breaches, and denial of service. There is no limit to which <code>users_id</code> can be targeted. If the Meet plugin is enabled, all accounts are at risk. An attacker achieving admin privileges can modify video content, access sensitive user data, and manipulate system settings.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the vendor-provided patch to AVideo that includes the suggested fixes to <code>plugin/Meet/uploadRecordedVideo.json.php</code> and <code>objects/user.php</code> as detailed in the advisory.</li>
<li>Deploy the &quot;AVideo Meet Plugin Unauthorized Session Creation&quot; Sigma rule to detect exploitation attempts.</li>
<li>Remove the <code>checkToken.json.php</code> endpoint or restrict access to administrators only to mitigate the timing attack vector.</li>
<li>Monitor web server logs for POST requests to <code>/plugin/Meet/uploadRecordedVideo.json.php</code> with unusual filenames in the <code>upl</code> file field.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>authentication-bypass</category><category>account-takeover</category><category>web-application</category></item></channel></rss>