☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N 🐛 CWE-20
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-56831

CVE-2026-56831 Vulnerability in Shopper
📅 PUBLISHED: 2026-09-15 00:00 UTC 🔄 UPDATED: 2026-09-22 10:15 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.41%
👁️
0.41% probability
10.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1565.001
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: H Integrity High
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Threat Intelligence Report — CVE-2026-56831

Prepared for: Enterprise Security Teams, SOC Analysts, Penetration Testers Classification: Public / TLP:CLEAR Vendor/Product: Shopper (Headless e-commerce Admin Panel) CVE ID: CVE-2026-56831 Published by: valtersit.com


Executive Summary

CVE-2026-56831 is a data-integrity vulnerability in Shopper, a headless e-commerce admin panel, affecting all versions prior to 2.9.0. The /cpanel/discounts administrative interface fails to enforce a positive-value invariant on fixed_amount discount fields, allowing an authenticated administrator to persist negative discount values that are subsequently processed by the discount calculation pipeline. Because the order total calculation subtracts discountTotal from the subtotal, a negative discount increases the payable amount, producing incorrect pricing and financial data corruption; the advisory explicitly does not establish a customer-facing exploitation path.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Shopper is a Headless e-commerce Admin Panel. The vulnerability resides in the discount management subsystem, specifically the administrative endpoint /cpanel/discounts and the downstream calculation components located at:

  • vendor/shopper/cart/src/Discounts/DiscountCalculator.php
  • vendor/shopper/cart/src/Pipelines/Calculate.php

Per the NVD description, the /cpanel/discounts administrative interface accepts negative fixed_amount discount values and persists them in the sh_discounts datastore. Critically, the calculation pipeline (DiscountCalculator and Calculate) passes these records through without enforcing a positive-value invariant.

The root cause is an improper input validation flaw (CWE-20). The vulnerability mechanism is an arithmetic sign inversion in the pricing model:

  1. A discount record is created or edited with a negative fixed_amount.
  2. The record is stored in sh_discounts without rejecting the negative sign.
  3. During order calculation, the pipeline computes the order total by subtracting discountTotal from the subtotal.
  4. A negative discountTotal means the subtraction operation adds to the total (i.e., subtotal - (-N) = subtotal + N), inflating the order price rather than reducing it.

This is a financial data integrity failure, not a memory-safety or injection flaw. The impact is confined to pricing correctness: malformed discount records yield incorrect order totals. The advisory does not demonstrate a customer-facing exploitation path, meaning no unauthenticated trigger or direct attacker-to-customer impact has been established in the source data. The authenticated nature of the admin interface and the PR:L (Low Privileges Required) CVSS subscore are consistent with a threat model in which an actor already possessing administrative access to the discount panel is the trigger.

No public PoC, exploit code, or Nuclei template exists for this CVE at time of writing.

Exploitation Scenarios

Note: No public PoC is available. The attack chain below is inferred strictly from the vulnerability class and the details present in the NVD description. No function names, endpoints, or parameters beyond those explicitly cited (/cpanel/discounts, fixed_amount, sh_discounts, DiscountCalculator.php, Calculate.php) are invented.

  1. Reconnaissance / Target Identification. An attacker with authenticated access to a Shopper deployment locates the administrative panel and identifies the /cpanel/discounts interface. Targeting is feasible via Shodan queries against the panel's HTTP title/body fingerprints (see METADATA dorks) and by confirming a version below 2.9.0.

  2. Triggering the Flaw Class. Using the authenticated administrative interface, the attacker creates or edits a discount record and supplies a negative fixed_amount value. The application fails to validate the sign (CWE-20) and accepts the malformed input. This is the core, minimal trigger — the flaw lives in missing server-side validation of a numeric field.

  3. Persistence / Execution Method. The negative value is written to the sh_discounts store. When the discount is applied to a cart/order, the calculation pipeline (DiscountCalculator.php and Calculate.php) processes it. The total is computed as subtotal - discountTotal; a negative discountTotal therefore raises the order total. No code injection, privilege escalation primitive, or memory corruption is involved — the "payload" is simply a malformed numeric value that survives validation.

  4. Post-Exploitation Impact. The observable outcome is incorrect pricing and corrupted financial records attached to affected orders. Depending on business workflow, this could manifest as inflated customer charges, distorted revenue reporting, or inconsistent invoicing data tied to the tampered discount records. The advisory does not establish customer-facing exploitation, so confidentiality and availability impacts are rated None; integrity impact is rated High (I:H).

Impact Assessment

  • CVSS Base Score: 6.5 (Medium)

  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N

    • AV:N (Network) — the admin interface is reachable over the network.
    • AC:L (Low) — no special conditions or race windows are required.
    • PR:L (Low) — the attacker needs only low-privileged administrator access to the discount interface.
    • UI:N (None) — no user interaction required.
    • S:U (Unchanged) — impact is confined to the vulnerable component's security scope.
    • C:N (None) — no confidentiality exposure established.
    • I:H (High) — the dominant impact: persisted financial data and calculated totals are corrupted.
    • A:N (None) — no availability impact established.
  • EPSS: 0.00406 (~34.4th percentile) — low near-term exploitation likelihood, consistent with an authenticated, non-customer-facing integrity bug.

  • CISA KEV: No — not known to be exploited in the wild.

  • Blast Radius: Limited to Shopper deployments version < 2.9.0 whose operators have configured discount records and expose the /cpanel/discounts administrative interface. Business impact concentrates on financial data integrity and revenue reporting rather than data breach or service outage.

Detection Guidance

Detection caveat: This class of vulnerability (legitimate admin functions accepting malformed numeric values) produces low signal-to-noise. Detection strategies should focus on the semantic anomaly — negative or zero values submitted to discount management endpoints — combined with file-integrity monitoring of sh_discounts records.

Sigma Rule

title: Shopper Negative fixed_amount Discount Creation (CVE-2026-56831)
id: 7f3c1c2a-9b41-4e2f-9a1d-3c5e8f7b6a10
status: experimental
description: Detects POST/PUT requests to the Shopper admin discounts interface carrying a negative fixed_amount value, an indicator of CVE-2026-56831 exploitation.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-56831
author: valtersit.com
date: 2026-01-01
tags:
  - attack.t1565.001
  - cve.2026-56831
logsource:
  category: webserver
detection:
  selection_endpoint:
    cs-uri-stem|contains: '/cpanel/discounts'
  selection_method:
    cs-method:
      - 'POST'
      - 'PUT'
      - 'PATCH'
  selection_negative:
    cs-uri-query|contains: 'fixed_amount=-'
  condition: selection_endpoint and selection_method and selection_negative
falsepositives:
  - Legitimate refund or credit workflows that intentionally use negative amounts
  - Security testing by authorized personnel
level: medium

YARA Rule

rule CVE_2026_56831_Shopper_Negative_Discount
{
    meta:
        author = "valtersit.com"
        description = "Detects negative fixed_amount discount definitions in Shopper source or dump artifacts related to CVE-2026-56831"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-56831"
        date = "2026-01-01"
        cve = "CVE-2026-56831"

    strings:
        $endpoint = "/cpanel/discounts" ascii wide
        $field    = "fixed_amount" ascii wide
        $table    = "sh_discounts" ascii wide
        $neg1     = "fixed_amount=-" ascii wide
        $neg2     = "fixed_amount\": -" ascii wide
        $neg3     = "'fixed_amount' => -" ascii wide

    condition:
        uint16(0) == 0x3C3F or uint32(0) == 0x504B0304 or true
        and 1 of ($endpoint, $table)
        and $field
        and 1 of ($neg1, $neg2, $neg3)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-56831 Shopper Negative fixed_amount Discount Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/cpanel/discounts"; http_client_body; content:"fixed_amount"; nocase; http_client_body; pcre:"/fixed_amount(?:[^&]{0,20})=-\s*\d/"; reference:cve,2026-56831; classtype:attempted-admin; sid:2026568310; rev:1;)

Elastic Detection

sequence by source.ip with maxspan=5m
  [network where http.request.method in ("POST","PUT","PATCH") and url.path : "/cpanel/discounts"]
  [network where http.request.method in ("POST","PUT","PATCH") and url.path : "/cpanel/discounts" and
     http.request.body.content : "fixed_amount" and http.request.body.content : "=-"]

Plain EQL filter variant:

network where http.request.method == "POST" and
  url.path : "/cpanel/discounts" and
  http.request.body.content : "*fixed_amount=-*"

Splunk SPL Query

index=web OR index=proxy
| eval uri=coalesce(uri, url, cs_uri_stem)
| eval body=coalesce(body, request_body, cs_uri_query)
| where match(uri, "/cpanel/discounts")
| where match(method, "(?i)^(POST|PUT|PATCH)$")
| where match(body, "fixed_amount(?:%3D|=|%22:)\s*-\d")
| stats count min(_time) as first_seen max(_time) as last_seen values(method) as methods by src_ip, uri
| sort - count

Wazuh OSSEC Rule

<group name="web,shopper,cve-2026-56831,">
  <rule id="202656831" level="10">
    <if_sid>31100</if_sid>
    <id>^/cpanel/discounts</id>
    <match>fixed_amount=-</match>
    <description>CVE-2026-56831: Negative fixed_amount discount submitted to Shopper admin interface</description>
    <mitre>
      <id>T1565.001</id>
    </mitre>
    <group>cve_2026_56831,data_manipulation,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 2/4 — CLAIMED (single source — OSV — claims a fix; not independently confirmed). Verify the patched artifact directly before relying on it in production.

  1. Immediate mitigations (pre-patch):

    • Restrict access to /cpanel/discounts to the minimum necessary administrative accounts and enforce least-privilege RBAC; audit who currently holds discount-management permissions.
    • Place the administrative panel behind network controls (VPN, IP allowlisting, mTLS) so the interface is not broadly reachable (AV:N).
    • Audit existing sh_discounts records for any negative fixed_amount values and remediate/correct invalid entries; quarantine affected orders for financial review.
    • Where the application layer permits, add a reverse-proxy or WAF rule that rejects requests to /cpanel/discounts whose body contains a negative fixed_amount value.
  2. Patch / upgrade steps:

    • Upgrade Shopper to 2.9.0 or later, which the advisory states fixes the issue.
    • Because the patch is single-sourced (OSV), validate the patched release notes and confirm the positive-value invariant is actually enforced in DiscountCalculator.php / Calculate.php and at the /cpanel/discounts input layer before closing the finding.
  3. Long-term hardening:

    • Enforce positive-value invariants server-side for all monetary discount fields — never rely on UI validation alone (directly addresses CWE-20).
    • Add automated reconciliation/reporting that flags order totals deviating from expected price bands, as a compensating financial-integrity control.
    • Integrate schema-level constraints (e.g., database-level CHECK/sign constraints on monetary columns) to prevent invalid values from persisting even if application validation regresses.
    • Adopt signed-amount review workflows and alerting for any discount record whose amount is zero or negative.

References

Exploit-in-the-wild / threat actor intelligence: No public PoC, exploit code, or Nuclei template is associated with CVE-2026-56831. There is no current evidence of active exploitation or named threat actor campaigns. EPSS (0.00406) and CISA KEV status both indicate low observed exploitation pressure. Reporting is based solely on the NVD description; where the source data was sparse, this report describes the vulnerability class rather than assuming unspecified implementation details.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Shopper"
title:"Shopper"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-56831/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.