<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 09 Oct 2026 04:37:07 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-34395</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-34395</link>
      <description>&lt;p&gt;WWBN AVideo is an open source video platform. In versions 26.0 and prior, the plugin/YPTWallet/view/users.json.php endpoint returns all platform users with their personal information and wallet balances to any authenticated user. The endpoint checks User::isLogged() but does not check User::isAdmin(), so any registered user can dump the full user database. At time of publication, there are no publicly available patches.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;WWBN AVideo is an open source video platform. In versions 26.0 and prior, the plugin/YPTWallet/view/users.json.php endpoint returns all platform users with their personal information and wallet balances to any authenticated user. The endpoint checks User::isLogged() but does not check User::isAdmin(), so any registered user can dump the full user database. At time of publication, there are no publicly available patches.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-34395</guid>
    </item>
    <item>
      <title>GHSA-77jp-mgcw-rfmr — AVideo vulnerable to Mass User PII Disclosure via Missing Authorization in YPTWallet users.json.php</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-77jp-mgcw-rfmr</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: wwbn/avideo&lt;/p&gt;
&lt;p&gt;**Severity:** High
**CWE:** CWE-862 (Missing Authorization)&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `plugin/YPTWallet/view/users.json.php` endpoint returns all platform users with their personal information and wallet balances to any authenticated user. The endpoint checks `User::isLogged()` but does not check `User::isAdmin()`, so any registered user can dump the full user database.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The authorization check at `plugin/YPTWallet/view/users.json.php:8`:&lt;/p&gt;
&lt;p&gt;```php
if (!User::isLogged()) {
    die(&amp;#34;Is not logged&amp;#34;);
}
```&lt;/p&gt;
&lt;p&gt;The query in `YPTWallet::getAllUsers()` selects all columns from both tables:&lt;/p&gt;
&lt;p&gt;```php
$sql = &amp;#34;SELECT w.*, u.*, u.id as user_id, IFNULL(balance, 0) as balance FROM users u &amp;#34;
    . &amp;#34; LEFT JOIN wallet w ON u.id = w.users_id WHERE 1=1 &amp;#34;;
```&lt;/p&gt;
&lt;p&gt;The `cleanUpRowFromDatabase()` function strips fields matching `/pass/i` (removes `password` and `recoverPass`), but all other PII fields remain: `email`, `phone`, `address`, `zip_code`, `country`, `region`, `city`, `first_name`, `last_name`, `birth_date`, `isAdmin`, `analyticsCode`, `donationLink`, and `balance`.&lt;/p&gt;
&lt;p&gt;Other endpoints in the same directory (`saveBalance.php`, `adminManageWallets.php`, `pendingRequests.json.php`) all check `User::isAdmin()`.&lt;/p&gt;
&lt;p&gt;### Proof of Concept&lt;/p&gt;
&lt;p&gt;```python
import requests&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;https://your-avideo-instance.com&amp;#34;&lt;/p&gt;
&lt;p&gt;# Step 1: Login as any regular (non-admin) user
session = requests.Session()
session.post(f&amp;#34;{TARGET}/objects/login.json.php&amp;#34;, data={
    &amp;#34;user&amp;#34;: &amp;#34;regular_user&amp;#34;,
    &amp;#34;pass&amp;#34;: &amp;#34;regular_password&amp;#34;
}…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: wwbn/avideo&lt;/p&gt;
&lt;p&gt;**Severity:** High
**CWE:** CWE-862 (Missing Authorization)&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `plugin/YPTWallet/view/users.json.php` endpoint returns all platform users with their personal information and wallet balances to any authenticated user. The endpoint checks `User::isLogged()` but does not check `User::isAdmin()`, so any registered user can dump the full user database.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The authorization check at `plugin/YPTWallet/view/users.json.php:8`:&lt;/p&gt;
&lt;p&gt;```php
if (!User::isLogged()) {
    die(&amp;#34;Is not logged&amp;#34;);
}
```&lt;/p&gt;
&lt;p&gt;The query in `YPTWallet::getAllUsers()` selects all columns from both tables:&lt;/p&gt;
&lt;p&gt;```php
$sql = &amp;#34;SELECT w.*, u.*, u.id as user_id, IFNULL(balance, 0) as balance FROM users u &amp;#34;
    . &amp;#34; LEFT JOIN wallet w ON u.id = w.users_id WHERE 1=1 &amp;#34;;
```&lt;/p&gt;
&lt;p&gt;The `cleanUpRowFromDatabase()` function strips fields matching `/pass/i` (removes `password` and `recoverPass`), but all other PII fields remain: `email`, `phone`, `address`, `zip_code`, `country`, `region`, `city`, `first_name`, `last_name`, `birth_date`, `isAdmin`, `analyticsCode`, `donationLink`, and `balance`.&lt;/p&gt;
&lt;p&gt;Other endpoints in the same directory (`saveBalance.php`, `adminManageWallets.php`, `pendingRequests.json.php`) all check `User::isAdmin()`.&lt;/p&gt;
&lt;p&gt;### Proof of Concept&lt;/p&gt;
&lt;p&gt;```python
import requests&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;https://your-avideo-instance.com&amp;#34;&lt;/p&gt;
&lt;p&gt;# Step 1: Login as any regular (non-admin) user
session = requests.Session()
session.post(f&amp;#34;{TARGET}/objects/login.json.php&amp;#34;, data={
    &amp;#34;user&amp;#34;: &amp;#34;regular_user&amp;#34;,
    &amp;#34;pass&amp;#34;: &amp;#34;regular_password&amp;#34;
}…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-77jp-mgcw-rfmr</guid>
    </item>
  </channel>
</rss>
