ProductsHall of FameCVEsProjectsAdvisoriesBlogContact

4 security advisories

Abhishek Nandkumar Bhaskar — Abhi HackZ, abhi_hackz on HackerOne — is credited as Finder and Reporter on four published GitHub Security Advisories in OpenMage (Magento LTS), the community-maintained fork of Magento 1 that still powers thousands of e-commerce stores. The findings span four core application-security areas — session & request forgery, token entropy, abuse throttling and file-path handling — and were all fixed in OpenMage 20.18.2 / 20.19.0 / 21.0.0-beta3, published on Oct 26, 2026.

CSRF in OAuth authorization grants persistent REST API access tokensGHSA-grrq-9gq2-vm55 · CWE-352CRITICAL · 9.0 Predictable confirmation & password-reset tokens enable account takeoverGHSA-7j66-6mw7-rgfx · CWE-330 / CWE-338HIGH · 8.1 Guest order lookup rate limiter never throttles a requestGHSA-rqc2-p2h7-6hw9 · CWE-307MODERATE · 5.3 Custom-option file download path traversal to arbitrary file readGHSA-2p72-3v6m-9p2h · CWE-22MODERATE · 5.3

CSRF in OAuth authorization grants persistent REST API access tokens

CRITICAL · CVSS 9.0CWE-352★ FINDER — Abhi-Hackz
Advisory
GHSA-grrq-9gq2-vm55
CVSS v3.1
9.0 Critical — AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
Weakness
CWE-352 — Cross-Site Request Forgery (CSRF)
Affected
openmage/magento-lts < 20.18.2; 21.0.0-beta1 – 21.0.0-beta2
Fixed in
20.18.2 · 20.19.0 · 21.0.0-beta3
Credited as
Finder — Abhi-Hackz
Published
Oct 26, 2026

The OAuth 1.0a authorization step could be completed with a plain GET request and no CSRF token — for store administrators and storefront customers alike. An attacker holding OAuth consumer credentials only has to get a logged-in victim to load a crafted URL: the victim's session silently authorizes the attacker's request token, which the attacker then exchanges for a persistent REST API access token tied to the victim.

The resulting token stays valid until it — or the consumer — is explicitly revoked. An administrator token grants whatever REST role that admin holds, which can mean reading and changing customer, order, product and stock data long after the one forged click.

Remediation

Upgrade to 20.18.2 / 20.19.0 / 21.0.0-beta3 — the authorization confirm actions now require a POST with a valid form key. Until then: remove or disable OAuth consumers you don't use, review issued tokens, and don't assign REST roles to admins who don't need API access.

CSRF in OAuth authorization — the GitHub Security Advisory crediting Abhi-Hackz as Finder
GHSA-grrq-9gq2-vm55 as published on github.com/OpenMage/magento-lts — Abhi-Hackz in the credits.

Predictable confirmation & password-reset tokens enable account takeover

HIGH · CVSS 8.1CWE-330 / CWE-338★ REPORTER — Abhi-Hackz
Advisory
GHSA-7j66-6mw7-rgfx
CVSS v3.1
8.1 High — AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-330 — Insufficiently Random Values · CWE-338 — Cryptographically Weak PRNG
Affected
openmage/magento-lts < 20.18.2; 21.0.0-beta1 – 21.0.0-beta2
Fixed in
20.18.2 · 20.19.0 · 21.0.0-beta3
Credited as
Reporter — Abhi-Hackz
Published
Oct 26, 2026

Several account-security tokens were generated with time-based, non-cryptographic constructions instead of a CSPRNG. The most serious: the customer email-confirmation key was built from md5(uniqid()). An unauthenticated attacker who can reconstruct the generator state can compute the key and log in to a newly registered, unconfirmed customer account without the password — and email confirmation is enabled by default, so this sits on the default registration path. Customer and administrator password-reset tokens relied on the same weak generator; for an admin, a predicted reset token can mean full store compromise.

Remediation

Upgrade to 20.18.2 / 20.19.0 / 21.0.0-beta3 — tokens now come from random_bytes(16) and are compared with hash_equals(). Existing unconfirmed accounts keep their old predictable keys, so purge stale unconfirmed accounts after upgrading. Until then, rate-limit /customer/account/confirm/ at the WAF.

Predictable tokens account takeover — the GitHub Security Advisory crediting Abhi-Hackz as Reporter
GHSA-7j66-6mw7-rgfx as published on github.com/OpenMage/magento-lts — Abhi-Hackz in the credits.

Guest order lookup rate limiter never throttles a request

MODERATE · CVSS 5.3CWE-307★ REPORTER — Abhi-Hackz
Advisory
GHSA-rqc2-p2h7-6hw9
CVSS v3.1
5.3 Moderate — AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-307 — Improper Restriction of Excessive Authentication Attempts
Affected
openmage/magento-lts 20.1.1 – 20.18.1; 21.0.0-beta1 – 21.0.0-beta2
Fixed in
20.18.2 · 20.19.0 · 21.0.0-beta3
Credited as
Reporter (sole) — Abhi-Hackz
Published
Oct 26, 2026

The per-IP rate limiter guarding the guest Orders & Returns lookup — itself added as a security fix for CVE-2023-41879 — never actually throttled a request, for two compounding reasons: the limit check ran only after the order had already been loaded, and failed form lookups never recorded a hit against the counter. An unauthenticated attacker could therefore brute-force order number + billing last name + email or postcode without limit; a correct guess exposes the order's contents and the customer's billing and shipping addresses.

A good reminder that a rate limiter is a control worth testing like any other feature — presence is not enforcement.

Remediation

Upgrade to 20.18.2 / 20.19.0 / 21.0.0-beta3 — the limiter now runs on entry and counts failed lookups. Behind a proxy or CDN, configure global/remote_addr_headers so real client IPs are used, or one failed lookup can block all guests. Until upgraded, rate-limit POSTs to /sales/guest/view/ at the edge.

Guest order lookup rate limiting — the GitHub Security Advisory crediting Abhi-Hackz as sole Reporter
GHSA-rqc2-p2h7-6hw9 as published on github.com/OpenMage/magento-lts — Abhi-Hackz in the credits.

Custom-option file download path traversal to arbitrary file read

MODERATE · CVSS 5.3CWE-22★ REPORTER — Abhi-Hackz
Advisory
GHSA-2p72-3v6m-9p2h
CVSS v3.1
5.3 Moderate — AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N (6.5 where recurring products are sold)
Weakness
CWE-22 — Improper Limitation of a Pathname to a Restricted Directory (Path Traversal)
Affected
openmage/magento-lts < 20.18.2; 21.0.0-beta1 – 21.0.0-beta2
Fixed in
20.18.2 · 20.19.0 · 21.0.0-beta3
Credited as
Reporter — Abhi-Hackz
Published
Oct 26, 2026

Custom-option file downloads built file paths from values stored with an order or quote item without confining them to the custom-option media directory. On a store selling recurring (nominal) products, a logged-in customer could store crafted paths and download any file the web server user can read — most damagingly app/etc/local.xml, which holds the database credentials and the store's encryption key. Restricting file permissions doesn't help, because the web server user is the one doing the read.

Remediation

Upgrade to 20.18.2 / 20.19.0 / 21.0.0-beta3 — stored paths are now normalised, confined to the custom-option directories, symlink-resolved, and the file's content hash must match its download key. Until then, disable recurring-profile payment methods or stop selling nominal products.

Custom-option path traversal — the GitHub Security Advisory crediting Abhi-Hackz as Reporter
GHSA-2p72-3v6m-9p2h as published on github.com/OpenMage/magento-lts — Abhi-Hackz in the credits.
Credit & disclosure.

All four issues were reported responsibly through OpenMage's vulnerability disclosure process on HackerOne and published as coordinated GitHub Security Advisories, crediting Abhishek Nandkumar Bhaskar (Abhi HackZ, abhi_hackz on HackerOne, @Abhi-Hackz on GitHub). He is credited as Finder on the OAuth authorization CSRF advisory and as Reporter on the other three — the sole reporter on the guest order lookup finding, and alongside researchers who reported independently on the rest; each advisory’s credits section lists everyone. Proof-of-concept details are withheld; the facts on this page are taken from the public advisories. CVE IDs have been requested and this page will be updated when they are assigned. For how coordinated disclosure works end to end, read From a Bugcrowd VDP Report to a Published CVE; published CVE records are on the CVEs page.

Want this depth of testing on your product? Book a free scoping call →