Ecommerce platform BigCommerce has notified multiple merchants that their storefronts were breached after attackers compromised credentials belonging to third-party applications developed by Ribon. Using those stolen app credentials, the threat actors authenticated legitimately into merchant stores and injected malicious JavaScript directly into storefront pages — a classic digital skimming (Magecart-style) pattern executed not through a platform vulnerability, but through trusted third-party API access.
This distinction matters enormously for defenders. BigCommerce's core platform was not exploited. There is no CVE to patch here. The attackers walked through the front door using valid OAuth/API credentials issued to a vendor integration that merchants had authorized. Every defensive control keyed on vulnerability management, WAF signatures, or endpoint detection would have seen nothing unusual — because from a telemetry perspective, the API calls looked legitimate.
Merchants running BigCommerce storefronts with Ribon applications installed (or any third-party app with storefront script modification permissions) should treat this as an active incident-response scenario, not an advisory to file away. If your store accepted payment card data during the exposure window, you are potentially facing PCI-DSS reportable compromise, card brand fines, and mandatory breach notification obligations.
Why Defenders Need to Act Now
Web skimming is one of the most consistently profitable attack classes against ecommerce because it targets the one moment that cannot be encrypted away: the point where the customer types cardholder data into the browser. The injected scripts in campaigns like this typically hook checkout or payment form fields, exfiltrate data to attacker-controlled domains, and persist quietly for weeks or months. Historical skimming dwell times routinely exceed 90 days before discovery — and discovery usually comes from card brand fraud correlation, not internal detection.
The supply-chain dimension amplifies the blast radius. A single compromised app developer's credentials can yield access to every merchant storefront that installed the app. That is exactly what happened here: the attackers did not breach each merchant individually — they breached one vendor and inherited that vendor's trusted position across the merchant fleet.
Technical Analysis
Attack Chain
- Credential compromise (upstream): Attackers obtained credentials for Ribon's third-party BigCommerce applications. The upstream vector (phishing, credential stuffing, developer endpoint compromise, or leaked secrets) has not been publicly detailed as of this writing.
- Legitimate API authentication: Using the stolen app credentials, the attackers authenticated against the BigCommerce platform with the same OAuth scopes and permissions the Ribon apps were granted by merchants.
- Malicious script injection: The attackers used the app's authorized ability to modify storefront content — via BigCommerce's Script Manager API, theme/template modification, or checkout customization interfaces — to inject malicious JavaScript into store pages.
- Skimming and exfiltration: The injected scripts execute in customer browsers, capture payment and PII data entered into checkout forms, and transmit it to attacker-controlled infrastructure.
Why Traditional Controls Missed This
- No platform vulnerability: Patching cadence is irrelevant; there is nothing to patch on the BigCommerce side.
- Valid authentication: API calls originated from authorized app credentials. Without behavioral baselining (unusual source IPs, off-hours modification, anomalous API call patterns), nothing fires.
- Client-side execution: The skimmer runs in the customer's browser. Server-side EDR, network IDS on the merchant's infrastructure, and platform logging see only a legitimate script reference.
- SaaS opacity: Merchants on hosted platforms like BigCommerce have limited visibility into platform-side change events unless they deliberately consume audit/API logs and build client-side integrity monitoring.
Exploitation Status
This is confirmed active exploitation in the wild — merchant breaches occurred and BigCommerce issued notifications. This is not theoretical. No CVE identifier has been published for this campaign because the root cause is credential compromise and abuse of legitimate API functionality, not a software flaw.
Affected Parties
- BigCommerce merchants who installed Ribon-developed applications
- Potentially, any BigCommerce merchant running third-party apps with script/template modification scopes (the technique generalizes beyond this one vendor)
- End customers who entered payment or personal data on affected storefronts during the exposure window
Detection & Response
The detection strategy for this threat class has three pillars: server-side integrity monitoring (catching unauthorized storefront modifications), client-side behavioral detection (catching skimmer execution in the browser), and identity/API auditing (catching anomalous use of app credentials). The controls below map to those pillars.
Sigma Rules
These two rules target observable behaviors on infrastructure you control. Rule one catches unauthorized JavaScript modification in web content directories (applicable to any staging servers, CDN origin sync hosts, or custom storefront components you operate). Rule two catches the common webshell follow-on behavior seen when storefront/web server access is abused — a web server worker process spawning command interpreters.
---
title: Unauthorized JavaScript Modification in Web Content Directories
id: 3f8c2a71-9d4e-4b6a-a1c5-7e2d8f901b34
status: experimental
description: Detects creation or modification of JavaScript files in web-served directories, consistent with malicious script injection into storefront content following compromised third-party app credentials.
references:
- https://attack.mitre.org/techniques/T1189/
- https://attack.mitre.org/techniques/T1059/007/
- https://www.bleepingcomputer.com/news/security/bigcommerce-alerts-merchants-of-data-breach-linked-to-ribon-apps/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.initial_access
- attack.t1190
- attack.collection
logsource:
category: file_event
product: windows
detection:
selection_paths:
TargetFilename|contains:
- '\inetpub\wwwroot\'
- '\wwwroot\'
- '\htdocs\'
- '\public_html\'
selection_ext:
TargetFilename|endswith:
- '.js'
- '.html'
- '.phtml'
- '.liquid'
- '.tpl'
condition: selection_paths and selection_ext
falsepositives:
- Legitimate deployments and CMS updates — tune against change windows and deployment service accounts
level: high
---
title: Web Server Worker Process Spawning Command Interpreter
id: 8b4e1d62-3c7a-4f59-b2e8-1a9c6d403e57
status: experimental
description: Detects IIS/Apache/NGINX worker processes spawning command shells or scripting interpreters, a common post-exploitation behavior following web application or storefront compromise including third-party app credential abuse.
references:
- https://attack.mitre.org/techniques/T1059/
- https://attack.mitre.org/techniques/T1505/003/
- https://www.bleepingcomputer.com/news/security/bigcommerce-alerts-merchants-of-data-breach-linked-to-ribon-apps/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1505.003
- attack.execution
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\w3wp.exe'
- '\httpd.exe'
- '\nginx.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\cscript.exe'
- '\wscript.exe'
- '\mshta.exe'
condition: selection_parent and selection_child
falsepositives:
- Rare; some legacy web applications shell out for PDF generation or image processing — baseline per application
level: high
KQL — Microsoft Sentinel / Defender
The highest-signal hunt for skimming campaigns is identifying web-facing infrastructure making outbound connections to newly observed or rare external domains — either from server-side skimmer components or from CDN/origin hosts serving modified content. The first query hunts server-side egress anomalies; the second hunts process telemetry for web server workers launching interpreters (the Sigma rule above expressed in Defender data).
// Hunt 1: Outbound connections from web server processes to rarely-seen domains
// Baseline window: 14 days. Flags destinations seen fewer than 5 times historically.
let Lookback = 14d;
let WebProcesses = dynamic(["w3wp.exe", "httpd.exe", "nginx", "apache2", "node.exe", "php-cgi.exe"]);
let HistoricalDests = DeviceNetworkEvents
| where TimeGenerated between (ago(Lookback) .. ago(1d))
| where InitiatingProcessFileName in~ (WebProcesses)
| summarize HistoricalCount = count() by RemoteUrl;
DeviceNetworkEvents
| where TimeGenerated > ago(1d)
| where InitiatingProcessFileName in~ (WebProcesses)
| where isnotempty(RemoteUrl)
| join kind=leftanti (HistoricalDests | where HistoricalCount > 5) on RemoteUrl
| summarize Connections = count(), FirstSeen = min(TimeGenerated), Devices = dcount(DeviceId) by RemoteUrl, InitiatingProcessFileName, DeviceName
| order by Connections asc;
// Hunt 2: Web server worker processes spawning interpreters (Defender endpoint telemetry)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName in~ ("w3wp.exe", "httpd.exe", "nginx.exe")
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "cscript.exe", "wscript.exe", "mshta.exe")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, AccountName, SHA256
| order by TimeGenerated desc;
For merchants ingesting BigCommerce API/audit events or IdP sign-in data into Sentinel, add a third hunt: alert on any API token or app credential authenticating from a source IP, ASN, or geography not seen in the prior 30 days for that client ID, and on any Script Manager or template modification calls made outside documented deployment windows.
Velociraptor VQL
For origin servers, build hosts, or any infrastructure storing storefront assets, this artifact hunts recently modified script files containing high-signal skimmer indicators (obfuscation primitives and dynamic script loading patterns).
-- Hunt for recently modified web scripts containing skimming/obfuscation indicators
SELECT FullPath, Size, Mtime,
read_file(filename=FullPath, length=200000) AS Content
FROM glob(globs=['C:\\inetpub\\wwwroot\\**\\*.js',
'/var/www/**/**/*.js',
'/srv/www/**/**/*.js',
'/home/*/public_html/**/*.js'])
WHERE Mtime > now() - 2592000
AND (Content =~ 'eval\\(atob'
OR Content =~ 'fromCharCode'
OR Content =~ 'createElement\\(.script.'
OR Content =~ 'addEventListener\\(.(input|keyup|change)'
OR Content =~ 'XMLHttpRequest|fetch\\(\\s*["\x27]https?://')
ORDER BY Mtime DESC
Tune the time window (currently 30 days) to your suspected exposure window, and note that fetch() and event listeners appear in legitimate code — the value here is the intersection of recently modified plus checkout-relevant paths. Prioritize hits in checkout, payment, or cart templates.
Remediation / Verification Script
Run this against any origin or build host serving storefront assets to enumerate external script references and flag non-allowlisted domains — the fastest way to spot injected third-party scripts. Edit the allowlist to match your known-good vendors (payment gateway, analytics, tag manager).
#!/usr/bin/env bash
# storefront-integrity-scan.sh — enumerate external script src domains in web assets
# and flag anything not on the allowlist.
WEBROOT="${1:-/var/www}"
ALLOWLIST="js.stripe.com|js.braintreegateway.com|www.googletagmanager.com|www.google-analytics.com|cdn.jsdelivr.net"
echo "[*] Scanning $WEBROOT for external script references..."
grep -rhoE '<script[^>]+src=["'"'"']https?://[^"'"'"' >]+' "$WEBROOT" 2>/dev/null \
| grep -oE 'https?://[^"'"'"' >]+' \
| sed -E 's|https?://([^/]+)/?.*|\1|' \
| sort | uniq -c | sort -rn > /tmp/script_domains.txt
echo "[*] All external script domains found:"
cat /tmp/script_domains.txt
echo ""
echo "[!] NON-ALLOWLISTED domains (investigate immediately):"
grep -vE "($ALLOWLIST)" /tmp/script_domains.txt || echo " None — all domains on allowlist."
echo ""
echo "[*] Files modified in the last 30 days under $WEBROOT (review against change log):"
find "$WEBROOT" -type f \( -name '*.js' -o -name '*.html' -o -name '*.tpl' -o -name '*.liquid' \) -mtime -30 -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort -r | head -50
echo ""
echo "[*] Scanning for common skimmer obfuscation patterns in recently modified files:"
find "$WEBROOT" -type f -name '*.js' -mtime -30 -print0 2>/dev/null \
| xargs -0 grep -lE 'eval\(atob|String\.fromCharCode\(\s*[0-9]+,\s*[0-9]+,\s*[0-9]+|document\.createElement\(.script.\)' 2>/dev/null \
|| echo " No obfuscation-pattern hits in recently modified files."
Remediation
If you are a BigCommerce merchant — especially one that installed Ribon applications — execute the following in order. Treat this as incident response until proven otherwise.
1. Determine exposure immediately
- Inventory every third-party app installed on your store (BigCommerce Control Panel → Apps). Identify all Ribon-developed apps and any app with Script Manager, theme, or checkout modification scopes.
- Contact BigCommerce support to request the audit/change history for your store covering script installations, template edits, and API token activity during the exposure window. Compare against your documented deployment timeline — any unexplained script creation or modification is a finding.
2. Revoke and rotate
- Uninstall or disable the affected Ribon applications. Revoking the app's OAuth token severs the attacker's access path.
- Rotate all store API credentials: store-level API accounts, webhook secrets, payment gateway keys, and any credentials the app could have touched.
- Force re-review of any remaining third-party apps before re-authorization.
3. Hunt for injected scripts
- Pull your current storefront script inventory (Settings → Data Solutions / Script Manager) and diff it against a known-good baseline. Remove any script whose origin and purpose you cannot positively attribute.
- Run the integrity scan above against any origin/build infrastructure you control.
- Inspect checkout page source in a clean browser session: enumerate every third-party domain contacted during checkout. Any domain you cannot identify is a lead.
4. Assess the breach notification obligation
- If cardholder data was potentially exposed, engage your acquiring bank and follow PCI-DSS incident response requirements — this likely includes a PFI (PCI Forensic Investigator) engagement and potential card brand notification.
- Evaluate state breach notification statutes based on customer geography and data types exposed (PII in addition to payment data broadens obligations). Engage counsel early.
5. Harden against recurrence
- Least-privilege app scopes: Before installing any app, review requested OAuth scopes. Reject or proxy apps requesting script/template write access unless it is core to their function — and if it is, demand the vendor's security posture documentation (MFA enforcement on developer accounts, secret management, SOC 2).
- Content Security Policy: Deploy a strict CSP on checkout pages (
script-srcenumerated to known-good domains) withreport-uri/report-todirectives feeding violation reports into your SIEM. CSP violation spikes on checkout pages are one of the highest-fidelity skimmer tripwires available. - Subresource Integrity (SRI): Pin integrity hashes on all third-party scripts you intentionally load, so silent modification breaks execution.
- Behavioral alerting on app credentials: Alert on API activity from new IPs/ASNs, off-hours storefront modifications, and any Script Manager changes outside deployment windows.
- Vendor monitoring: Subscribe to security advisories from every app vendor in your stack. This incident is a reminder that your third-party apps are privileged insiders.
The Bigger Lesson
This breach is the latest confirmation of a pattern defenders must internalize: the modern ecommerce attack surface is the trust graph, not the platform. SaaS commerce platforms have hardened their cores; attackers have responded by moving to the integration layer, where a single compromised developer credential yields write access to hundreds of production storefronts. Your third-party app inventory is a privileged access inventory — govern it, monitor it, and be prepared to revoke it.
Related Resources
Security Arsenal Incident Response Services AlertMonitor Platform Book a SOC Assessment incident-response Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.