<?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>Wed, 30 Sep 2026 06:38:11 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-56829</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-56829</link>
      <description>&lt;p&gt;Shopper is a Headless e-commerce Admin Panel. Prior to 2.9.2, packages/admin/src/Livewire/Components/Products/VariantStock.php exposes stockAction() without edit_product_variants authorization and leaves public $variant client mutable because it lacks the Livewire Locked attribute. Any authenticated admin-panel user, including staff with only browse_products, can select an arbitrary product variant and inventory location through component state, then submit a positive or negative quantity adjustment. This permits browse-only staff to inflate stock, reduce stock, or force out-of-stock states for variants outside the current page. This issue is fixed in version 2.9.2.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Shopper is a Headless e-commerce Admin Panel. Prior to 2.9.2, packages/admin/src/Livewire/Components/Products/VariantStock.php exposes stockAction() without edit_product_variants authorization and leaves public $variant client mutable because it lacks the Livewire Locked attribute. Any authenticated admin-panel user, including staff with only browse_products, can select an arbitrary product variant and inventory location through component state, then submit a positive or negative quantity adjustment. This permits browse-only staff to inflate stock, reduce stock, or force out-of-stock states for variants outside the current page. This issue is fixed in version 2.9.2.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-56829</guid>
    </item>
    <item>
      <title>GHSA-g3f9-g5vj-p62f — Shopper: Unauthorized inventory stock manipulation via unlocked variant property in VariantStock component</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-g3f9-g5vj-p62f</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: shopper/framework&lt;/p&gt;
&lt;p&gt;## Title&lt;/p&gt;
&lt;p&gt;Unauthorized inventory stock manipulation via unlocked variant property in VariantStock component&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;A lack of authorization control was discovered in the `stockAction()` method in `packages/admin/src/Livewire/Components/Products/VariantStock.php`. The component exposes a `public $variant` property without the `#[Locked]` attribute, so the variant ID is client-mutable via the Livewire wire payload. The `stockAction()` returns an Action with no `-&amp;gt;authorize(...)` chain, meaning any authenticated admin-panel session, including browse-only staff who hold zero edit permissions, can call this action to adjust inventory levels for any product variant. The combination of missing authorization and an unlocked model binding lets the attacker both bypass the permission gate and redirect the mutation to an arbitrary variant in the database.&lt;/p&gt;
&lt;p&gt;## Severity&lt;/p&gt;
&lt;p&gt;CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H  Score: 8.1  (High)&lt;/p&gt;
&lt;p&gt;## Affected files&lt;/p&gt;
&lt;p&gt;- `packages/admin/src/Livewire/Components/Products/VariantStock.php:34-91`&lt;/p&gt;
&lt;p&gt;```php
// Line 34 - unprotected, client-mutable variant binding
public $variant;&lt;/p&gt;
&lt;p&gt;// Lines 36-91 - no -&amp;gt;authorize(...) on the Action
public function stockAction(): Action
{
    return Action::make(&amp;#39;stock&amp;#39;)
        -&amp;gt;label(__(&amp;#39;shopper::forms.actions.update&amp;#39;))
        -&amp;gt;color(&amp;#39;gray&amp;#39;)
        -&amp;gt;icon(Untitledui::Package)
        -&amp;gt;modalHeading(__(&amp;#39;shopper::pages/products.modals.variants.title&amp;#39;))
        -&amp;gt;modalWidth(Width::Large)
        -&amp;gt;schema([…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: shopper/framework&lt;/p&gt;
&lt;p&gt;## Title&lt;/p&gt;
&lt;p&gt;Unauthorized inventory stock manipulation via unlocked variant property in VariantStock component&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;A lack of authorization control was discovered in the `stockAction()` method in `packages/admin/src/Livewire/Components/Products/VariantStock.php`. The component exposes a `public $variant` property without the `#[Locked]` attribute, so the variant ID is client-mutable via the Livewire wire payload. The `stockAction()` returns an Action with no `-&amp;gt;authorize(...)` chain, meaning any authenticated admin-panel session, including browse-only staff who hold zero edit permissions, can call this action to adjust inventory levels for any product variant. The combination of missing authorization and an unlocked model binding lets the attacker both bypass the permission gate and redirect the mutation to an arbitrary variant in the database.&lt;/p&gt;
&lt;p&gt;## Severity&lt;/p&gt;
&lt;p&gt;CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H  Score: 8.1  (High)&lt;/p&gt;
&lt;p&gt;## Affected files&lt;/p&gt;
&lt;p&gt;- `packages/admin/src/Livewire/Components/Products/VariantStock.php:34-91`&lt;/p&gt;
&lt;p&gt;```php
// Line 34 - unprotected, client-mutable variant binding
public $variant;&lt;/p&gt;
&lt;p&gt;// Lines 36-91 - no -&amp;gt;authorize(...) on the Action
public function stockAction(): Action
{
    return Action::make(&amp;#39;stock&amp;#39;)
        -&amp;gt;label(__(&amp;#39;shopper::forms.actions.update&amp;#39;))
        -&amp;gt;color(&amp;#39;gray&amp;#39;)
        -&amp;gt;icon(Untitledui::Package)
        -&amp;gt;modalHeading(__(&amp;#39;shopper::pages/products.modals.variants.title&amp;#39;))
        -&amp;gt;modalWidth(Width::Large)
        -&amp;gt;schema([…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-g3f9-g5vj-p62f</guid>
    </item>
  </channel>
</rss>
