SuperPixel: When Your Own jQuery Becomes a Card Skimmer

By CellWall Security Research | Published November 14, 2026 | Client-Side Security | 5 min read

Blue browser checkout with an orange replacement payment form unfurling from a blue JavaScript file.
divider
How can you tell if code at an approved script URL changed?

Compare the script your checkout actually receives with a known-good release artifact. If the bytes differ without an approved release, run the same checkout in a clean browser and compare the payment form and outbound requests. Keep all three records together so you can investigate whether the file change explains what the shopper saw.

What SuperPixel changed at the same URL

In its November 5, 2026 disclosure, Report URI said it had identified more than 100 affected online shops, including stores running WordPress, PrestaShop, and OpenCart. In the files it examined, the existing JavaScript was still present, with roughly a megabyte of obfuscated code appended. WordPress examples included the store’s own copy of jQuery. Other affected files included theme, plugin, and storefront scripts. Read the original SuperPixel disclosure.

A store can keep the same script tag and familiar URL while serving different code. That makes an origin allowlist or a list of approved filenames insufficient for this case. The altered files suggest the attackers could write to storefront assets. The disclosure leaves open how they gained that ability and how many shoppers were exposed.

What the shopper saw at checkout

Report URI found that SuperPixel hid genuine payment fields with injected CSS and presented its own form. A browser-storage marker could suppress the replacement on a later visit. The skimmer looked up its collection URL through an Ethereum smart contract and used a browser request to send captured data. Responders can therefore see different behavior across visits, and the collection destination can change independently of the affected file. Report URI’s checkout and destination analysis.

Investigate the file, form, and requests together

SignalCompare withRecord

Different bytes at an approved URL

The approved release artifact or verified upstream version for the expected build

Full script URL, timestamp, build, cache context, digest of comparable bytes, and the changed region

An unexpected payment form

The expected checkout in the same payment method, browser, and account state

Form owner, iframe origin where applicable, hidden fields, visible replacement, and initiator when available

An unexpected outbound request

Known destinations for the same checkout steps and configuration

Destination, method, timing, initiating script when observable, and the checkout step

1

Check the delivered file against the release

Save the suspect response and compare its decoded bytes with the expected artifact for that URL and build. Check release approvals, then look for differences between the origin and the CDN. A matching filename, a successful checkout, or a clean copy on the server can leave a browser-delivered variant unexplained.

2

Compare a fresh checkout and a repeat visit

Use an isolated browser and approved test data. Capture the expected payment fields and when they appear, then compare the fresh and repeat paths. Preserve the suspect page state before clearing storage. If an unexpected form appears on a live checkout, preserve the evidence and escalate without submitting payment data through that form.

3

Correlate the three records

Put the delivered script digest, the form change, and the request destination on the same timeline. Keep any evidence containing sensitive fields in approved restricted storage and redact it before sharing. If the records indicate a possible compromise, follow your incident process to contain checkout exposure and investigate which account or process could alter the file before restoring a verified version.

A byte change alone can be an approved rebuild. A new destination can belong to a legitimate integration. An unexplained script change on the same checkout that displays unfamiliar payment fields and makes an unexpected request gives responders a specific path to investigate. For the wider workflow, see JavaScript change detection and checkout skimmer detection.

Payment page tamper detection and script integrity

For stable scripts, Subresource Integrity can make a supported browser reject a response whose bytes fail to match the approved digest in the script tag. Keep the digest and the script under controlled release review so an unauthorized edit cannot simply replace both. A Content Security Policy that allows scripts from the store’s own origin still admits eligible scripts from that origin after a byte change. An enforced connect-src policy can restrict covered outbound requests to unexpected destinations. W3C Subresource Integrity and Content Security Policy Level 3.

For in-scope payment pages, PCI DSS 6.4.3 addresses script authorization, integrity, and an inventory with written justification. Requirement 11.6.1 addresses detecting and alerting on unauthorized changes to payment page contents and HTTP headers as received by the consumer browser. For the same-URL scenario, an approved inventory entry helps explain why the script belongs there, while integrity evidence and browser observations help investigate what actually changed. Confirm applicability with the organization that manages your compliance program. PCI SSC guidance on payment page security and e-skimming.

Read the practical guides that clarify the surrounding risks, controls, and evidence.

Explore the client-side security hub