Summary
CVE-2026-96599 affects Isotope eCommerce (isotope/isotope-core), a popular e-commerce extension for the Contao CMS, in versions up to and including 2.9.10. The order module generates order identifiers using PHP’s uniqid() function instead of a cryptographically secure random source, and the guest order lookup endpoint does not verify ownership of the order before returning its data. As a result, an unauthenticated remote attacker who can predict or brute-force a guest order’s identifier can retrieve that customer’s billing/shipping details, cart contents, and purchased downloadable files.
Technical details
- Root cause:
Order::generateUniqueId()(inModel/ProductCollection/Order.php) builds the order’suniqidvalue using PHP’suniqid(prefix, true), which derives from the system clock (microtime) plus an LCG "more entropy" value — providing roughly 30 bits of effective entropy rather than a cryptographically secure random value. - Missing access control:
OrderDetails::getCollection()(inModule/OrderDetails.php) looks up an order viaOrder::findOneBy('uniqid', Input::get('uid'))and only performs an ownership/membership check when the order belongs to a registered member (member > 0 && isGranted('ROLE_MEMBER')). Orders placed as a guest (member = 0) are returned to anyone who supplies a validuid, with no session or ownership verification. - Related exposure:
Model/ProductCollectionDownload.phpuses the same weak identifier scheme to gate access to purchased downloadable files. - Trigger conditions: The attacker needs no authentication or prior access — only a guessed or brute-forced
uidvalue submitted to the order-details front-end module. Becauseuniqid()output is time-correlated, an attacker who can narrow the time window an order was placed in can brute-force the identifier within a short window. - Attack vector: Network — exploitable remotely over HTTP(S) against the public-facing order confirmation/download pages of any Contao site running Isotope eCommerce.
- Impact: Disclosure of guest customers’ personally identifiable information (name, billing/shipping address), order/cart contents, and unauthorized access to purchased digital downloads. No integrity or availability impact has been reported.
Affected software
isotope/isotope-core(Isotope eCommerce for Contao) versions up to and including 2.9.10- Deployments running on Contao ^4.13 with PHP ^7.4/^8.0, using the guest checkout / order-details and downloadable-product features
Severity
- CVSS v3.1 Base Score: 5.9 (Medium) —
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - CVSS v4.0 Base Score: 8.2 (High) —
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: At the time of publication, no patched release of
isotope/isotope-coreaddressing this issue has been identified. Monitor the Isotope eCommerce project and the linked GitHub issue for an official fix, and upgrade to a patched version (one that replacesuniqid()with a cryptographically secure random generator such asrandom_bytes(), matching the pattern already used elsewhere in the codebase for cart cookie IDs) as soon as it is released. - If no patch is available:
- Restrict or disable guest checkout / guest order lookups where feasible, requiring authenticated member accounts for order retrieval and downloads.
- Add server-side rate limiting and abuse detection on the order-details and download endpoints to blunt brute-force guessing of order identifiers.
- Consider adding an application-layer WAF rule to detect high-frequency requests with varying
uidparameters against the order-details module. - Audit logs for guest order lookups to identify potential enumeration attempts.

