CVE-2026-81568: Joomla Extension - j2commerce.com - Arbitrary file read via `task=download` in J2Store 1.0.0-3.3.2, 4.0.0-4.0.22, 4.1.0-4.1.7

Published Sep 15, 2026
·
Updated

Joomla Extension - j2commerce.com - Arbitrary file read via task=download in J2Store 1.0.0-3.3.2, 4.0.0-4.0.22, 4.1.0-4.1.7 - J2StoreModelOrderdownloads::getFilePath() built the on-disk path to a purchased digital download by concatenating the configured attachment folder with the product file's stored productfilesavename, using only JPath::clean() (which normalises separators but does not resolve or reject .. segments) and a plain JFile::exists() check — never confirming the resolved path stayed inside the configured attachment folder. If a product file's productfilesavename ever contained a ../ traversal segment — most plausibly via the CSRF-forgeable admin product-file save actions described in Issue 1, but equally by any future integration or bug that writes that field — any customer holding a valid download token/pid pair for that product file could have the traversal resolve to a path outside the attachment folder and download any file readable by the web server (e.g. configuration.php).

Affected Software

1 affected component
J2Store J2Store>=1.0.0<=3.3.2, >=4.0.0<=4.0.22, >=4.1.0<=4.1.7

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Update getFilePath() to ensure the built on-disk path (attachment folder + stored product_file_save_name) cannot escape the attachment folder—i.e., add logic to reject/neutralize any traversal segments such as '../' and verify the resolved path remains inside the attachment folder before allowing task=download.

    J2StoreModelOrderdownloads::getFilePath() product_file_save_name path handling = Reject or resolve paths that contain '..' so the final resolved path must stay within the configured attachment folder (not just JPath::clean())

Event History

Sep 15, 2026
CVE Published
via MITRE·06:50 PM
Data Sourced
via MITRE·06:50 PM
DescriptionWeakness

Frequently Asked Questions

1

Which installations are affected?

Affected versions are J2Store 1.0.0 through 3.3.2, 4.0.0 through 4.0.22, and 4.1.0 through 4.1.7. The issue applies where a product file's stored product_file_save_name contains a ../ traversal segment.

2

What does an attacker need to read files outside the attachment folder?

The attacker needs a valid download token and pid pair for the affected product file. They also need that product file's stored filename to contain traversal segments, which could be introduced through CSRF-forgeable administrator product-file save actions or another integration or bug that writes the field.

3

What files could be exposed?

Any file readable by the web server may be downloadable if traversal resolves outside the configured attachment folder. The advisory specifically identifies Joomla's configuration.php as an example.

4

How can I determine whether I am exposed?

Review stored product_file_save_name values for ../ or other traversal segments, especially for digital products. Also investigate product-file changes that could have been made through forged administrator save actions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203