Task 1: Introduction
On the morning of 28 October, Marisol Vega read a security advisory she wished she hadn't. Marisol runs operations at Copperleaf Provisions, a small online retailer of specialty kitchenware and pantry goods. Drupal publishes these alerts as a Security Advisory (SA), and this one, SA-CONTRIB-2026-254, concerned the exact software her storefront uses to check out orders. It said the flaw "is being actively exploited in the wild."
The Advisory at a Glance
- What's affected: Commerce Core (machine name
commerce), a contributed module that gives Drupal a shopping cart and an order system. The advisory covers this module, not Drupal core itself. - What's wrong: in Drupal's own words, the module "doesn't sufficiently protect certain routes and entity fields, leading to an access bypass that may financially impact the vendor."
- How it's classified: the Common Vulnerabilities and Exposures (CVE) record, published on 30 October, lists the bug as CVE-2026-118539. It's a missing authorization flaw (CWE-862) that allows forceful browsing, which the Common Attack Pattern Enumeration and Classification (CAPEC) catalog lists as CAPEC-87. In plain terms, an attacker reaches a page by asking for it directly, without the access that page was supposed to require.
- How severe it is: highly critical, 21 out of 25 on Drupal's own risk scale. That scale comes from a scoring standard published by the National Institute of Standards and Technology (NIST), not the Common Vulnerability Scoring System (CVSS) you'll see on most advisories. On 31 October, the Cybersecurity and Infrastructure Security Agency (CISA) added a CVSS 3.1 score to the CVE record: 6.5, Medium. The two scales measure different things, so read both before you decide how urgent a bug is.
- What the rating says: no login is needed and every configuration is exposed. It also records exploit code as documented or deployed in the wild, which means exploitation has been seen, not that a public exploit is available.
- What's still unknown: Drupal hasn't said how the attack works, who is behind it, or how many stores were hit.
- How far it reaches: about 30,047 self-reported installs ran an affected release the week before the fix. That's a count of installs, not victims.
- Public exploit: no public proof-of-concept existed as of 30 October, so we'll work the attack out ourselves, from Drupal's own published fix.
- What Drupal asks of stores: upgrade, and "audit their orders for inconsistencies."
Marisol has already upgraded Copperleaf's staging store; production is still on the vulnerable release. You've been asked to answer a few questions: is production exposed, and what could an attacker do with that? Are there any signs that it has already happened? Does the staging upgrade actually close the hole? You'll be working from the AttackBox as an anonymous shopper with no account, using a browser, Burp, and curl.
That anonymous bit is the odd one out. The rating says an attacker needs no login, yet the damage targets pages under the /admin/ path. So how does someone without a login get to a page designed specifically for staff?
References
- SA-CONTRIB-2026-254: Drupal's security advisory for Commerce Core
- CVE-2026-118539: the CVE record, with its weakness class and attack pattern
- Security risk levels defined: how Drupal scores an advisory's risk
- Commerce Core usage statistics: weekly self-reported installs by release
- SecurityWeek's report: what Drupal has and hasn't disclosed about the attacks
- Ostorlab's analysis: the state of public exploit code
Learning Objectives
This room walks you through a live, actively exploited access bypass in a Drupal Commerce storefront from advisory through to the fix and the cleanup. In particular, you'll learn how to:
- Explain what the Commerce Core access bypass is
- Describe how Drupal decides who may open a route
- Trace cart ownership into an admin route
- Reach staff-only order data as an anonymous shopper
- Override an order price through the bypass
- Detect the attack and audit the orders
- Confirm the patched release refuses the request
Room Prerequisites
This room assumes you can make and receive HTTP requests via curl and an intercepting proxy (Burp Suite would be the obvious choice). You should be able to carry a session cookie from one request to the next and be at home in the AttackBox terminal. No prior Drupal or Commerce experience is required, as we'll build what you need as we go. If you're new to HTTP requests, cookies, and web proxies, then the web fundamentals material in the Junior Penetration Tester path is a good place to start.
Before you start Task 2, press the Start AttackBox button to start the Attacker machine and press the Start Machine button to start the Target machine so that they are ready when you need them in later tasks.