CSIPE

Published

- 22 min read

The Adobe Commerce Fix Needs Proof, Not a Green Deployment Job


The Digital Fortress: Your Everyday Guide to a Safer Digital Life

Stay Safe Online Without Making It Your Second Job

The Digital Fortress (Second Edition)

A warm, plain-English guide for people with real lives and finite patience. Learn the handful of habits that genuinely protect your money, accounts, and family, and get honest permission to ignore the rest.

Buy the book now
The Anonymity Playbook: Digital Survival for Whistleblowers, Journalists, Activists, and Everyone Else

For People Who Cannot Afford to Get Privacy Wrong

The Anonymity Playbook (Second Edition)

A practitioner’s field manual for journalists protecting sources, whistleblowers, and activists. It explains how the surveillance actually works, what each technique costs you, and exactly where it fails.

Buy the book now
Secure Software Development: Practical patterns for building secure software

Write, Ship, and Maintain Code Without Shipping Vulnerabilities

Secure Software Development

A hands-on security guide for developers and IT professionals who ship real software. Build, deploy, and maintain secure systems without slowing down or drowning in theory.

Buy the book now
The Secure Harness: Shipping Production Code with AI Coding Agents

Use AI Coding Agents Without Losing Control of Your Codebase

The Secure Harness

A calm, practical guide to letting agents do useful work inside boundaries you set, enforce, and audit. Ships with 15 copy-pasteable artifacts: hook scripts, permission configs, release gates, and MCP templates.

Buy the book now
The AI Native Engineer: Build, Evaluate, and Ship AI Systems That Work in Production

Stop Shipping Demos. Start Shipping Systems.

The AI Native Engineer

Sixteen hands-on chapters, one real product. Grow it from a single model call into a retrieved, tool-using, observable, production-grade system, with evaluation treated as a habit from the first feature.

Buy the book now

A customer signs in to an online shop and receives a session, the small bundle of state that lets the site remember who is browsing. The shop should bind that session to one customer. A critical Adobe Commerce flaw disclosed on 11 August 2026 could let an unauthenticated attacker switch that identity and enter somebody else’s account.

Adobe fixed the flaw, CVE-2026-71362, in its August security update. The awkward part is how the fix arrives. There is no ordinary new Commerce release or Composer package for this monthly update. Adobe distributed isolated patch files that operators apply on top of the latest quarterly patch level for each supported release line. (Adobe, Sansec)

That packaging detail turns a familiar instruction, “patch now,” into an engineering question. Which patch matches each store? Did it reach every web node, background worker, staging copy, and disaster-recovery image? Is the running code fixed, or did a deployment system merely report that a command completed?

The public evidence deserves urgency without drama. Sansec reported that its protection service was already blocking exploitation attempts when it published its analysis on 11 August. Adobe’s bulletin, written at release time, said Adobe was not aware of exploitation in the wild. Those statements describe different observation points and times; they do not cancel each other out. As of 16 August, the safe working assumption for an internet-facing, unpatched store is that people may be testing the flaw. The response should begin with verified patch state, then examine the exposed period.

What Adobe fixed on 11 August

Adobe’s bulletin APSB26-92 covers seven vulnerabilities in Adobe Commerce and Magento Open Source. Five carry a critical rating. The flaw at the centre of this article, CVE-2026-71362, has a Common Vulnerability Scoring System score of 9.1 and requires no prior account, administrative privilege, or user interaction. The US National Vulnerability Database records the weakness as incorrect authorization and says a remote attacker can gain elevated access to sensitive resources. (Adobe, NVD)

Sansec examined the patch and described a more concrete result. The vulnerable code could switch a customer session to another customer’s identity, exposing that customer’s account and private data. Adobe changed the way Commerce handles customer identity inside the account session. (Sansec)

The distinction matters. “Privilege escalation” sounds like an abstract platform problem. In a shop, the privilege is another customer’s logged-in state. Depending on what that particular store keeps behind an account page, that may include a name, email address, delivery address, order history, saved preferences, loyalty balance, or access to actions intended for the customer. The public sources reviewed for this article do not establish that every one of those fields or actions is available on every affected deployment. Custom modules and local account design decide the real impact.

The vulnerability affects Adobe Commerce, Adobe Commerce B2B, and Magento Open Source across several supported lines. The NVD record, based on Adobe’s supplied data, marks the August 2026 patch levels as unaffected and earlier listed levels as affected. Adobe Commerce lines 2.4.4 through 2.4.9 appear in the record, while Magento Open Source begins at 2.4.6 in that affected-version data. Commerce B2B has its own extension version ranges. Operators should use Adobe’s bulletin and the patch package for their exact product line rather than copy one version string from a news report. (NVD)

Adobe gave the Commerce update a priority rating of 2. That rating is part of Adobe’s patching system; it should not be read as a claim that the account-takeover flaw is mild. The CVSS vector says the attack is network-reachable, low complexity, needs no privileges or user action, and can have a high effect on confidentiality and integrity. Availability is not the main impact in that score. (NVD)

The known facts have useful limits. As of 16 August 2026, the sources reviewed here do not provide a victim count, a named campaign, or evidence that every test request succeeded. Sansec says it blocked attempts. Adobe’s original bulletin says it knew of no exploitation at publication. A blocked request proves interest in the path, not compromise of the targeted shop. A clean status page proves even less. Each operator still has to establish its own exposure and evidence.

The bug was an identity-binding failure

A web session is a continuity mechanism. HTTP requests arrive separately, so the application needs a safe way to remember that several requests belong to the same signed-in customer. The browser usually presents a session cookie, and the server looks up the corresponding state. Somewhere in that state, directly or indirectly, sits the answer to a sensitive question: which customer is this?

That answer has to stay bound to the authentication event. If Alice signs in, later requests in Alice’s session may read Alice’s orders. The application must not accept a caller-controlled route that swaps the customer identity while preserving the trusted session around it. Authentication happened once, but authorization is checked every time the application decides which object, record, or action belongs to that identity.

Sansec’s patch analysis says CVE-2026-71362 allowed an attacker to switch a customer session to another customer account. Put plainly, the store could remember that a session was valid while losing control of whose session it had become. The attacker did not need to steal the victim’s password or persuade the victim to click a link. The weakness sat in the application’s handling of identity. (Sansec)

Picture a hotel where a guest receives a key card at reception. The card should remain tied to room 412 until staff deliberately change it. A broken desk workflow lets a stranger alter the room number on an active card without proving they belong to either room. The card reader still sees a genuine hotel card. The dangerous mistake happened earlier, when the system changed the identity attached to it.

This is why login controls around the edge do not repair the flaw. Multifactor authentication protects the process that creates a legitimate customer session. A web application firewall may block a known request pattern. Rate limits may make repeated testing noisier. Those controls can reduce exposure, and Sansec says its own shield blocks this attack, but the durable fix is the vendor patch that restores the identity rule in the application. (Sansec)

The design lesson extends beyond Commerce. Session state deserves the same suspicion as a password check because it carries the result of that check forward. Any endpoint that edits account details, merges carts, changes email addresses, recovers accounts, impersonates users, or moves between storefronts can accidentally cross an identity boundary. Tests should assert that the authenticated subject remains fixed unless a narrow, audited transition explicitly changes it.

A useful authorization test does more than send one valid request and one anonymous request. It creates two customers, gives each distinct records, then tries to make customer A’s session reach customer B’s object through every identifier and state transition the endpoint accepts. The expected result is a denial without a state change. The test should also inspect the session afterward. A rejected request that quietly mutates identity can poison the next otherwise ordinary page load.

Commerce platforms make this work harder because shops rarely run as untouched vendor packages. Themes, checkout extensions, loyalty modules, customer-service tools, identity providers, and local integrations all join the request path. A core patch may be correct while a custom plugin restores an unsafe assumption or calls the changed code in an unexpected way. That does not justify delaying the fix. It explains why patch verification needs both a security check and a short business-flow check.

An isolated patch is a different deployment object

Most teams have a comfortable story for package updates. Change a version constraint, refresh the lockfile, build an artifact, run tests, and deploy an immutable image. The resulting version is visible in source control and in the package manager. APSB26-92 does not fit that story neatly because Adobe released isolated patch files rather than a new security release or new Composer packages. (Sansec)

An isolated patch changes files on top of a known base. Adobe’s current monthly schedule expects merchants to run the latest -p release for their supported line, then apply the corresponding isolated patch. If the base differs, the patch may refuse to apply, apply with conflicts, or produce a state the vendor did not intend. The exact result depends on the tool and local modifications, which is why a green shell exit alone is weak evidence.

The first proof is selection. An inventory should identify the product, base version, quarterly patch level, B2B extension version where relevant, and the isolated patch intended for that combination. A fleet with three stores may need more than one package. A forgotten acceptance environment copied from production last quarter may need a base update before it can receive the August fix.

The second proof is provenance. Download the patch through Adobe’s official route, retain its filename and vendor-supplied integrity information where available, and store it in the controlled build input used for the deployment. Do not let individual web nodes fetch a mutable URL during rollout. The artifact tested before approval should be the artifact applied later.

The third proof is application. Capture the patch tool’s full output and fail on rejected hunks, already-modified targets, or an unexpected base. A script that turns every non-empty output into “done” is a reporting machine, not a patch control. If local code overlaps the vendor change, stop and reconcile it in source control. Forcing the patch through may remove the security fix or break customer identity in a subtler way.

The fourth proof is resulting state. Record a digest or manifest for the files the patch is supposed to change, then compare it on the built artifact and on each running node. A package marker saying august-security-fix=true can drift away from the actual filesystem. The running code is what serves requests.

Containers simplify this if the patch is applied during the image build. The Dockerfile or build script becomes reviewable, the image digest identifies the result, and rollout replaces nodes instead of editing them in place. The patch still needs the correct base and test coverage, but the final object is easier to reproduce. A later emergency shell session on one container should be treated as drift and replaced, not celebrated as speed.

Long-lived virtual machines require more discipline. Applying the patch directly on six nodes can produce six slightly different outcomes because local files, permissions, caches, and previous hotfixes differ. Build once and promote the same release bundle when the platform permits it. Where in-place application is unavoidable, collect the same before-and-after manifest from every node and make variance a failed deployment.

Adobe Commerce also has generated and cached state. Compiled dependency injection, static content, opcode caches, reverse proxies, and long-running workers can keep old behavior alive after files change. The correct cache and compilation sequence depends on the installation and deployment model. Teams should follow Adobe’s operating guidance for their version, restart the processes that retain code, and verify a new process is actually serving the patched artifact. “Files changed at 14:02” does not prove “all requests used new code at 14:03.”

This is the durable lesson from the release format: treat a patch as a first-class build input. It belongs in version control or an approved artifact store, receives review, produces a traceable build, passes tests, and leaves evidence on the running service. A loose file copied from one operator’s laptop has none of those properties, even if the file itself came from the right vendor.

A green rollout can still leave a vulnerable shop

Commerce services are often fleets rather than boxes. A load balancer distributes web requests across nodes. Background consumers process queues. Cron workers perform scheduled jobs. Search, cache, and database services sit nearby. A disaster-recovery stack waits in another region, while staging uses a copy of production data and an older image.

Suppose a deployment updates five of six web nodes. Health checks stay green because the sixth node serves ordinary pages. Only some customers land on the old code, and a scanner that hits the load balancer once is likely to see a patched response. The deployment dashboard reports 83 percent if it counts honestly, but many pipelines report success when the minimum healthy capacity returns.

Now add an autoscaling group. The live nodes are patched, yet the launch template still points to July’s image. Traffic rises on Saturday, a new old node joins the pool, and the vulnerability returns. Present-state scanning will eventually notice if it samples that node. Release evidence would have caught the stale template before scaling did.

Blue-green deployments create another trap. The green environment receives the fix and traffic moves successfully. The blue environment remains warm for rollback. If an emergency sends traffic back, the team restores the flaw along with the old release. A safe rollback plan has to include the security property. Some releases should be marked non-returnable, with a forward fix prepared instead.

Staging is not harmless merely because customers do not know its address. Test environments often use copied customer records, weaker access controls, older plugins, and broad developer access. If a staging store is internet-reachable and uses an affected Commerce build, the identity flaw still exists. If it contains production data, the consequences can be real even when checkout is disabled.

Disaster recovery deserves the same question. A cold image or backup does not need an emergency patch while it is offline and inaccessible, but the recovery procedure must apply the fix before the service becomes reachable. Write that requirement into the runbook now. An incident is a poor time to remember that the standby image predates a critical account-boundary fix.

Edge security can hide inconsistent origins. A web application firewall may block a known exploit request at the public hostname while direct origin addresses, administrative paths, partner networks, or alternate domains bypass the same rule. Treat the edge control as a temporary layer. Verify that every route to the application either enforces the mitigation or reaches fixed code.

The most useful inventory therefore connects four things: hostname, traffic route, running artifact, and patch evidence. A configuration management database entry that says “Magento 2.4” is too broad. A scanner finding against one URL is too narrow. Operators need to know which concrete processes can serve customer requests and which build each one runs.

One small verification endpoint can help, provided it reveals no sensitive detail publicly. An authenticated operations endpoint might return an internal release identifier and image digest. The deployment controller can query every node directly, compare the values with the approved release, and keep the result in the change record. Do not expose a verbose package list to anonymous visitors just to make inventory easier.

The rule is simple: count protection at the request-serving boundary. A ticket is not patched. A pipeline is not patched. A cluster is patched when every route that can execute the vulnerable code reaches a verified fixed artifact, and every automated replacement source will preserve that state.

Patching and incident review answer different questions

Installing APSB26-92 asks whether the known path should work tomorrow. Incident review asks whether it worked yesterday. A successful patch cannot answer the second question because it changes future behavior, not past events.

The starting point is an exposure window. Record when Adobe published the update on 11 August 2026, when each environment became reachable on an affected build, when temporary edge rules began blocking the known route if used, and when every node moved to verified fixed code. The window may begin earlier than public disclosure because a vulnerability can be discovered privately or independently. Public reporting does not establish a universal first-exploitation date.

Preserve the evidence before routine rotation removes it. Useful sources may include reverse-proxy requests, web application firewall events, Commerce application logs, identity-provider records, customer-account changes, endpoint telemetry, database audit trails, email-change notifications, and administrative actions. Copy relevant logs to storage the Commerce service cannot rewrite and note the timezone and retention period for each source.

Look for outcomes, not only a published request signature. Vendor and specialist detection guidance may identify useful paths or patterns, but signatures age quickly. Account identity changes, unfamiliar profile edits, unexpected address changes, unusual access to many customer records, and a sequence of sessions moving between customers may be more durable clues. Tune the query to the store’s normal behavior so a busy sale does not become an incident by itself.

Session invalidation is a business decision with a security purpose. If evidence indicates sessions could have been switched or account state cannot be trusted, forcing affected customers to sign in again may cut off hostile sessions. A universal logout has customer-support and conversion costs, so scope it from evidence when possible. Do not leave a known hostile session alive solely to protect a dashboard metric.

Customer communication should follow established breach and legal processes, based on confirmed or reasonably assessed impact. The current public reports do not prove that every vulnerable merchant lost customer data. Sending a dramatic warning without evidence can mislead customers. Saying nothing after confirmed account access is worse. Preserve facts, involve privacy and legal owners early, and describe what is known, what data was involved, and what the customer should do.

The absence of a log match is not a clean bill of health when logs are incomplete. If a public store remained unpatched after attempts were reported and keeps only a day of edge records, responders have uncertainty rather than proof of safety. They can narrow that uncertainty with database history, notification records, endpoint evidence, and customer reports. Where evidence remains thin, the authority available through the account path should guide conservative actions such as session revocation and targeted monitoring.

A blocked attempt has a different meaning. It shows somebody sent a request that matched a control, while the control says it stopped the request before vulnerable code. Confirm that the control covered every route and stayed active for the whole period. Then retain the event as evidence. Do not quietly convert “blocked at one edge” into “the fleet was never reached.”

Small shops may lack a dedicated incident team, but they can still separate the questions. The developer confirms the fixed artifact and exposure times. The hosting provider preserves edge and system logs. The merchant identifies sensitive account actions and customer-support reports. One owner writes a dated decision record. Clear roles beat a large meeting where everyone assumes somebody else checked the sixth node.

A practical response sequence for Commerce teams

The work is easier when it follows dependencies. Stop new exposure first, preserve evidence before it expires, then prove the repair across the fleet. Keep the store owner, platform team, security contact, and customer-support lead in one decision record even if one person fills several roles.

  1. Identify every affected deployment and exact base. List Adobe Commerce, Commerce B2B, and Magento Open Source instances, including alternate storefronts, staging, disaster recovery, and old migration hosts. Record the product line, version, latest quarterly -p level, B2B extension version, internet routes, node count, and image or release identifier. Use Adobe’s APSB26-92 bulletin as the version authority. (Adobe)

  2. Preserve the exposed period before changing noisy systems. Export reverse-proxy, firewall, application, identity, endpoint, and relevant database records to protected storage. Note retention limits and clocks. If a compromise is suspected, follow the organization’s incident process before wiping or rebuilding evidence-bearing systems.

  3. Obtain the matching official patch and pin it as a build input. Use Adobe’s official distribution path. Verify the patch is intended for the exact supported line and required base level. Retain its identity with the release record. Avoid downloading separately on each production node.

  4. Build and test away from the public fleet. Apply the patch to a reproducible artifact or controlled release bundle. Fail on conflicts. Run focused tests for sign-in, account pages, password recovery, address changes, orders, customer-service impersonation if present, checkout, and any custom module that touches customer sessions. Add a two-customer authorization test so one session cannot adopt the other customer’s records.

  5. Deploy with temporary exposure reduction. Keep or add a vendor-supported edge mitigation while the rollout proceeds, but do not treat it as the final fix. Drain nodes, replace or patch them in a controlled sequence, clear generated state as required, and restart long-lived processes that may retain old code. Ensure health checks test meaningful application behavior.

  6. Verify every running and future node. Compare the approved file manifest, release identifier, or image digest with each web and worker node. Check load-balancer pools, autoscaling templates, rollback environments, scheduled workers, and standby images. Sample through every public hostname and test origins directly from an authorized network.

  7. Review account and session evidence for the window. Use Sansec’s report of blocked attempts as a reason to investigate exposed, unpatched systems, not as proof that a particular store was reached. Search for abnormal identity changes and customer-account actions alongside request indicators. Decide whether targeted or broad session invalidation is warranted. (Sansec)

  8. Close the change with durable proof. Attach the inventory, patch provenance, build logs, test results, per-node state, traffic cutover time, edge-control state, and incident-review decision to the change record. Update the base image and rollback policy so automation cannot recreate the vulnerable version next week.

The sequence can bend around uptime requirements, but skipped steps need names and owners. A merchant may deploy an edge rule before a maintenance window. A very large fleet may roll over an hour rather than all at once. Record which nodes remain exposed and keep the mitigation in place until direct evidence shows they are fixed.

Avoid testing the public vulnerability with exploit code. Defensive verification does not require taking over a real customer account. Confirm vendor patch state, test authorization with synthetic customers in a non-production environment, and inspect production evidence. A live exploit test can alter customer sessions, create legal problems, and destroy the clean evidence responders need.

Build a better patch path before the next isolated fix

Adobe’s monthly patch format exposes a weakness that many teams already have: the emergency process sits outside the normal release process. Somebody downloads a file, copies it to a server, runs a command, and opens a ticket. Speed comes from skipping the machinery that normally makes a release trustworthy.

A better path is short rather than informal. Keep supported Commerce bases current so an isolated patch does not first require months of upgrades. Maintain a tested build step that accepts a pinned vendor patch. Produce one immutable or reproducible artifact. Run a compact security and checkout suite. Promote by digest. Verify every node and automatic replacement source.

The test suite should focus on boundaries, not attempt to replay every shop feature. Create two synthetic customers with distinct orders and addresses. Assert that each can read and edit only its own data. Exercise account recovery and email change. Test any staff impersonation flow with explicit audit records. Confirm a rejected cross-account request leaves the original session identity unchanged.

Canary deployment helps only if the canary answers the right question. A canary that checks the home page can miss an account-session regression. Send synthetic authenticated traffic through the account paths changed by the patch, then compare errors, latency, and state transitions. Keep real customer identities out of the test.

External logging earns its cost during this kind of event. If the store can rewrite the only record of customer changes, a successful intrusion can erase its own trail. Send identity events, profile edits, session anomalies, and administrative changes to a separate system with controlled retention. Collect only enough independent evidence to reconstruct who became whom, when, and through which service.

Customer data minimization reduces the consequence when an account boundary fails. An order may need a delivery address, but the account page may not need to display every historical field forever. Payment card handling should remain with a properly isolated payment provider rather than return full card data to the shop. Data the account cannot reveal does not become exposed through an account takeover.

Network design matters too. Restrict direct access to origins so every public request crosses the same protective edge. Limit administrative panels to trusted routes. Separate staging and production data. Give web processes only the database and service permissions they require. None of these controls repairs incorrect authorization, but each narrows what a single application mistake can reach.

The proof belongs with the running code

CVE-2026-71362 is a serious account-boundary flaw with a vendor fix. That sentence gives teams a clear first action: apply Adobe’s August 2026 update to affected Commerce and Magento deployments. The isolated-patch format adds the part that a headline cannot carry. Operators must match the patch to the base, promote it as a controlled artifact, clear retained state, and verify every process that can serve the old code.

Sansec’s reported blocking of exploitation attempts raises the priority for exposed stores. It does not prove a breach at every merchant, just as Adobe’s release-time statement did not guarantee that attempts would never follow. Establish the local timeline. Preserve the evidence. Separate “fixed now” from “untouched before.”

The durable control is modest: make the running artifact prove its patch state. A deployment job is an intention. A digest, manifest, synthetic authorization test, complete node inventory, and dated traffic cutover turn that intention into evidence.

That evidence survives the next autoscaling event, rollback request, and monthly isolated fix. More importantly, it gives developers, responders, and store owners the same answer when somebody asks whether customer sessions are protected.

For more practical security explanations without a daily alarm bell, join the newsletter on this site. It is one email per month.

Sources