<?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 (&lt;= 29.0) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/avideo--29.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 09 Jan 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/avideo--29.0/feed.xml" rel="self" type="application/rss+xml"/><item><title>AVideo API Secret Disclosure Leads to Unauthorized Access</title><link>https://feed.craftedsignal.io/briefs/2024-01-avideo-api-disclosure/</link><pubDate>Tue, 09 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-avideo-api-disclosure/</guid><description>AVideo version 29.0 and earlier is vulnerable to unauthenticated API secret disclosure via a publicly accessible endpoint, allowing unauthorized access to protected API endpoints.</description><content:encoded><![CDATA[<p>AVideo, a video-sharing platform, is vulnerable to a critical security flaw that allows unauthenticated users to access sensitive API secrets. Specifically, the <code>objects/plugins.json.php</code> endpoint, intended to provide plugin configuration details, inadvertently exposes the <code>APISecret</code> within the <code>object_data</code>. This vulnerability, present in versions 29.0 and earlier, allows an attacker to bypass authentication and directly interact with protected API endpoints. By extracting the <code>APISecret</code>, an attacker can then craft API requests to access restricted data, such as user lists, without proper authorization. This poses a significant risk to data confidentiality and integrity within AVideo installations.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated attacker discovers the publicly accessible <code>objects/plugins.json.php</code> endpoint.</li>
<li>The attacker sends an HTTP GET request to <code>objects/plugins.json.php</code> to retrieve plugin configurations.</li>
<li>The server responds with a JSON payload containing plugin <code>object_data</code>, including the <code>APISecret</code>.</li>
<li>The attacker extracts the <code>APISecret</code> from the JSON response.</li>
<li>The attacker crafts a malicious API request to the <code>plugin/API/get.json.php</code> endpoint, including the <code>APISecret</code> as an authentication token.</li>
<li>The attacker specifies the desired <code>APIName</code> (e.g., <code>users_list</code>) and other parameters (e.g., <code>rowCount</code>, <code>current</code>) in the API request.</li>
<li>The server incorrectly validates the request based on the provided <code>APISecret</code>.</li>
<li>The server responds with the requested data, granting the attacker unauthorized access to protected information.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability grants unauthorized access to sensitive data managed by the AVideo platform. An attacker could potentially access user lists and other restricted information. The number of affected installations is currently unknown, but any instance running AVideo version 29.0 or earlier is susceptible. This can lead to data breaches, privacy violations, and potential misuse of user information.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the recommended fix of requiring admin authentication for the full plugin inventory/config endpoint (as suggested in the advisory).</li>
<li>Deploy the Sigma rule &ldquo;AVideo API Secret Disclosure Attempt&rdquo; to detect attempts to access the vulnerable <code>objects/plugins.json.php</code> endpoint.</li>
<li>Deploy the Sigma rule &ldquo;AVideo Unauthorized API Access via APISecret&rdquo; to detect unauthorized API calls using a disclosed API secret.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>avideo</category><category>api-disclosure</category><category>unauthorized-access</category></item><item><title>AVideo SSRF Vulnerability via HTTP Redirect and DNS Rebinding</title><link>https://feed.craftedsignal.io/briefs/2024-01-avideo-ssrf/</link><pubDate>Wed, 03 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-avideo-ssrf/</guid><description>AVideo is vulnerable to Server-Side Request Forgery (SSRF) due to improper validation of user-supplied URLs that does not prevent HTTP redirects, and DNS rebinding due to discarded resolved IP addresses.</description><content:encoded><![CDATA[<p>AVideo, version 29.0 and earlier, contains a Server-Side Request Forgery (SSRF) vulnerability due to insufficient validation of user-supplied URLs. Specifically, the <code>isSSRFSafeURL()</code> function, intended to prevent SSRF attacks, fails to account for HTTP redirects. This allows an attacker to bypass the intended security checks by providing a URL that initially appears safe but redirects to an internal resource, such as cloud metadata endpoints (169.254.169.254). Additionally, multiple callers of <code>isSSRFSafeURL()</code> discard the <code>$resolvedIP</code> parameter, creating a Time-of-Check Time-of-Use (TOCTOU) race condition exploitable via DNS rebinding. Attackers can manipulate DNS resolution to access internal services (127.0.0.1) that would otherwise be protected. Successful exploitation can lead to the disclosure of sensitive information, such as IAM credentials and internal service details.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious URL pointing to a server they control.</li>
<li>The attacker&rsquo;s server responds with a 302 redirect to an internal resource (e.g., <code>http://169.254.169.254/latest/meta-data/</code>).</li>
<li>The attacker submits the initial malicious URL to a vulnerable AVideo endpoint (e.g., <code>/plugin/AI/receiveAsync.json.php</code>).</li>
<li>The <code>isSSRFSafeURL()</code> function validates the initial URL, which resolves to a public IP address, and incorrectly passes the check.</li>
<li>The <code>file_get_contents()</code> function, without proper redirect restrictions, follows the 302 redirect to the internal resource.</li>
<li>The request is made to the internal resource, bypassing the intended SSRF protections.</li>
<li>The internal resource (e.g., cloud metadata) responds with sensitive information.</li>
<li>The sensitive information (e.g., IAM credentials) is stored as a video thumbnail or image within the application, accessible to the attacker.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this SSRF vulnerability allows an authenticated attacker to force the AVideo server to make HTTP requests to arbitrary internal hosts. This includes cloud metadata endpoints (e.g., 169.254.169.254), potentially leading to the exfiltration of IAM credentials and instance identity information. Attackers can also access internal services on localhost (127.0.0.1) or the private network, such as databases, admin panels, and monitoring systems. The exfiltrated data can be retrieved through the application&rsquo;s public interface, increasing the severity of the impact.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the suggested fix by routing affected files through <code>url_get_contents()</code> to safely handle redirects, as detailed in the advisory.</li>
<li>As an alternative to using <code>url_get_contents()</code>, implement an explicit no-redirect context when calling <code>file_get_contents()</code> to prevent automatic redirect following.</li>
<li>Update all callers of <code>isSSRFSafeURL()</code> to capture the <code>$resolvedIP</code> parameter and pass it to a DNS-pinning-aware fetch function using <code>CURLOPT_RESOLVE</code> to mitigate DNS rebinding attacks.</li>
<li>Monitor web server logs for requests containing internal IP addresses (169.254.169.254, 127.0.0.1) in the URL, as these may indicate SSRF attempts.</li>
<li>Deploy the Sigma rules in this brief to your SIEM and tune for your environment.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>ssrf</category><category>avideo</category><category>dns-rebinding</category></item><item><title>AVideo CloneSite Unauthenticated Information Disclosure Leading to Remote Database Dump</title><link>https://feed.craftedsignal.io/briefs/2024-01-avideo-clonesite-leak/</link><pubDate>Wed, 03 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-avideo-clonesite-leak/</guid><description>AVideo is vulnerable to unauthenticated information disclosure via the `plugin/CloneSite/cloneClient.json.php` endpoint, which echoes the local CloneSite shared secret (`$objClone-&gt;myKey`) in HTTP responses without authentication, enabling cross-site database dumps of the configured clone server.</description><content:encoded><![CDATA[<p>AVideo, a video sharing platform, is vulnerable to an unauthenticated information disclosure flaw in its CloneSite plugin. The vulnerability resides in the <code>plugin/CloneSite/cloneClient.json.php</code> endpoint. This endpoint inadvertently echoes the local CloneSite shared secret (<code>$objClone-&gt;myKey</code>) in HTTP responses without requiring any form of authentication. This secret is intended to authenticate requests between federated AVideo instances using the CloneSite plugin. An attacker can exploit this vulnerability by simply sending a GET request to the vulnerable endpoint, obtaining the <code>myKey</code>. When the AVideo installation is federated with a remote CloneSite server, the attacker can use the leaked <code>myKey</code> to impersonate the victim client and trigger a full database dump of the remote server. This database dump includes sensitive information such as user credentials, payment records, and API keys. The vulnerability affects AVideo version 29.0 and earlier.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker sends an unauthenticated GET request to <code>https://victim.example.com/plugin/CloneSite/cloneClient.json.php</code>.</li>
<li>The AVideo server echoes the local <code>$objClone-&gt;myKey</code> within the HTTP response body due to a flawed error message construction.</li>
<li>The attacker extracts the leaked <code>$objClone-&gt;myKey</code> from the response.</li>
<li>The attacker crafts a malicious request to the remote CloneSite server (<code>https://remote-server.example.com/plugin/CloneSite/cloneServer.json.php</code>) using the leaked <code>$objClone-&gt;myKey</code> and the victim&rsquo;s URL.</li>
<li>The remote CloneSite server validates the attacker&rsquo;s request using the provided key, successfully authenticating the attacker as the victim client.</li>
<li>The remote server executes a <code>mysqldump</code> command, dumping the entire database (excluding <code>CachesInDB</code>) to a publicly accessible directory (<code>videos/clones/</code>).</li>
<li>The attacker retrieves the database dump from the remote server via an unauthenticated HTTP GET request to <code>https://remote-server.example.com/videos/clones/Clone_mysqlDump_*.sql</code>.</li>
<li>The attacker analyzes the database dump, gaining access to sensitive information such as user credentials, payment records, and API keys.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows any unauthenticated attacker to retrieve the CloneSite shared secret (<code>myKey</code>) of any AVideo installation with the CloneSite plugin enabled. When the affected installation is federated with a remote CloneSite server, the attacker can impersonate the victim client and trigger a full database dump of the remote server containing sensitive data. This can lead to the compromise of user accounts, financial information, and sensitive plugin configurations on the remote server. This vulnerability permits unauthorized access to critical data, potentially resulting in severe data breaches and financial losses.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the recommended fix by not echoing the expected key in the rejection message within <code>plugin/CloneSite/cloneClient.json.php</code>, and reject non-CLI / non-admin callers cleanly, as detailed in the overview (see code snippet in advisory).</li>
<li>Implement the additional hardening recommendations, including replacing the static <code>myKey</code> with a randomly generated, per-installation key stored in the plugin configuration that can be rotated.</li>
<li>On the remote side (<code>cloneServer.json.php</code>), consider requiring the <code>sqlFile</code> path to be unguessable (already is, via <code>uniqid()</code>) AND gating the dump behind an IP allowlist or an additional pre-shared rotating token.</li>
<li>Serve <code>videos/clones/</code> with an <code>.htaccess</code>/nginx rule that denies direct HTTP access, so that even if a rogue client is authenticated, the dump is not downloadable over the web.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>avideo</category><category>information_disclosure</category><category>database_dump</category></item><item><title>AVideo Unauthenticated Cross-User JavaScript Execution via YPTSocket Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-01-avideo-xss/</link><pubDate>Tue, 02 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-avideo-xss/</guid><description>AVideo is vulnerable to unauthenticated cross-site scripting (XSS) due to an incomplete server-side fix for a YPTSocket `autoEvalCodeOnHTML` eval sink, allowing an attacker to bypass the fix by nesting the payload under a top-level `json` field, leading to arbitrary JavaScript execution in any logged-in user's browser session.</description><content:encoded><![CDATA[<p>AVideo is vulnerable to an unauthenticated cross-site scripting (XSS) vulnerability stemming from an incomplete fix for the YPTSocket <code>autoEvalCodeOnHTML</code> eval sink (GHSA-gph2-j4c9-vhhr). The initial patch only stripped the payload when present under <code>$json['msg']</code>, but the relay function <code>msgToResourceId()</code> prioritizes <code>$msg['json']</code> before <code>$msg['msg']</code>. An unauthenticated attacker can exploit this flaw by obtaining a WebSocket token from <code>plugin/YPTSocket/getWebSocket.json.php</code>, connecting to the WebSocket server, and sending a message with <code>autoEvalCodeOnHTML</code> nested under a top-level <code>json</code> field. This bypasses the strip branch, delivering the payload verbatim to any logged-in user identified by <code>to_users_id</code>, and the client script executes it via <code>eval()</code>. Versions of AVideo up to and including 29.0 are affected if they have not implemented the recommended fixes.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated attacker requests a WebSocket token from <code>plugin/YPTSocket/getWebSocket.json.php</code>.</li>
<li>The server issues a valid WebSocket token without authentication or CSRF checks.</li>
<li>The attacker establishes a WebSocket connection to the server using the obtained token.</li>
<li>The attacker crafts a malicious message containing JavaScript code within the <code>autoEvalCodeOnHTML</code> field, nested under a top-level <code>json</code> field: <code>{&quot;msg&quot;: &quot;x&quot;, &quot;json&quot;: {&quot;autoEvalCodeOnHTML&quot;: &quot;&lt;js&gt;&quot;}, &quot;to_users_id&quot;: &lt;victim&gt;}</code>.</li>
<li>The attacker sends the crafted message to the WebSocket server.</li>
<li>The server-side validation logic in <code>plugin/YPTSocket/Message.php</code> fails to properly sanitize the <code>autoEvalCodeOnHTML</code> field due to the bypass.</li>
<li>The server relays the message to the targeted user (<code>to_users_id</code>) via the WebSocket connection.</li>
<li>The client-side script (<code>plugin/YPTSocket/script.js</code>) receives the message and executes the JavaScript code within <code>autoEvalCodeOnHTML</code> via <code>eval()</code>, leading to XSS.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability allows for unauthenticated XSS and arbitrary JavaScript execution within any logged-in user&rsquo;s browser session. A successful exploit enables attackers to compromise the same-origin policy, potentially leading to session data exfiltration, authenticated XHR calls on the victim&rsquo;s behalf, privilege escalation (if targeting an administrator), and mass exploitation by enumerating active users via the <code>getClientsList</code> request. Deployments that only patched to commit <code>c08694bf6</code> remain vulnerable.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the recommended patch by scrubbing <code>autoEvalCodeOnHTML</code> from <strong>every</strong> outbound carrier the relay may choose in <code>plugin/YPTSocket/Message.php</code> and <code>plugin/YPTSocket/MessageSQLiteV2.php</code> as described in the advisory.</li>
<li>Harden the relay in <code>msgToResourceId()</code> (both files) by recursively walking the chosen <code>$obj['msg']</code> and unsetting <code>autoEvalCodeOnHTML</code> when the message originated from a non-PHP, non-CLI client.</li>
<li>As defense in depth, remove or gate the client-side <code>eval(json.msg.autoEvalCodeOnHTML)</code> at <code>plugin/YPTSocket/script.js:573-575</code> behind a server-signed field rather than a plain JSON key.</li>
<li>Deploy the Sigma rule <code>Detect AVideo YPTSocket autoEvalCodeOnHTML Bypass</code> to detect attempts to exploit this vulnerability by monitoring for WebSocket messages containing the <code>autoEvalCodeOnHTML</code> field within a <code>json</code> field.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>avideo</category><category>xss</category><category>websocket</category><category>vulnerability</category></item></channel></rss>