Penetratietest Shopify: Liquid SSTI, Theme Beveiliging en App Proxy
Shopify drijft duizenden Nederlandse webshops aan — fashion boutiques, B2B marketplaces, DTC merken. Het platform is over het algemeen veilig (Shopify beheert infrastructuur en payment processing), maar custom themes, in-house ontwikkelde apps, en Shopify Plus custom configuraties hebben specifieke aanvalsoppervlakken. Matproof Sentinel voert gerichte Shopify pentests uit gericht op Liquid SSTI, theme XSS, app proxy misbruik en webhook signing, met AVG / PCI-DSS audit-klaar rapport vanaf €149.
Waarom Shopify specifieke pentest competenties vereist
Shopify is het dominante e-commerce platform voor Nederlandse digitale handel, met meer dan 175.000 actieve merchants in Europa in 2024. Terwijl Shopify de beveiliging van infrastructuur en payment processing beheert (PCI-DSS Level 1), is de verantwoordelijkheid voor custom themes, in-house ontwikkelde apps, en Shopify Plus configuraties bij de merchant zelf. Liquid (de Shopify template engine) is over het algemeen sandboxed, maar implementatiefouten kunnen SSTI (Server-Side Template Injection) mogelijk maken. Theme.liquid en settings_schema.json blootgesteld kunnen persistent XSS mogelijk maken. Voor Shopify Plus met custom apps is de app proxy een klassiek aanvalsoppervlak: als de authenticatie de HMAC signature van Shopify niet correct valideert, kan een aanvaller legitieme verzoeken van de storefront vervalsen. CVE-2022-21664 (Shopify Marketplace, 2022) heeft exploitable bug in review submission validatie aangetoond.
- CVE-2022-21664 (Shopify Marketplace): exploitable bug in review submission validatie — indicatief voor attack patterns op Shopify platform.
- Liquid SSTI: implementatiefouten in custom themes kunnen SSTI mogelijk maken via Liquid objects met ongesaneerde gebruikersinvoer.
- Theme XSS: theme.liquid met gebruikersinvoer in query params, customer reviews/comments zonder correcte escaping, custom checkout extensions met UNSAFE_RAW_HTML.
- App proxy misbruik: custom apps met app proxy die geen HMAC signature van Shopify valideert — aanvaller kan storefront requests vervalsen.
- Webhook signing: webhook endpoints die geen X-Shopify-Hmac-Sha256 header verifiëren — aanvaller kan order/customer fake events injecteren.
- Shopify Plus scripts (Ruby): Shopify Scripts (deprecated 2024 ten gunste van Functions) kan nog legacy applicaties hebben met manipuleerbare pricing logic.
- AVG Art. 32 voor customer data: Shopify beheert veel, maar data export via apps en custom integraties zijn merchant verantwoordelijkheid.
Wat we specifiek testen in een Shopify webshop
- Theme.liquid audit: zoeken naar Liquid SSTI patterns (output van objects met gebruikersinvoer), XSS in customer reviews, blootgestelde metadata via {{ }} ongesaneerd.
- Theme customization permissions: settings_schema.json en settings_data.json voor admin input validatie, theme app extensions security.
- Custom apps: app proxy HMAC signature validatie, webhook endpoints HMAC verificatie, OAuth scope minimisatie, API token rotation.
- Storefront API: rate limiting (Shopify zet limit maar kan onvoldoende zijn), customer enumeration via GraphQL queries, blootgestelde private metafields.
- Checkout extensions: server-side payment validatie, custom shipping calculators met input validatie, post-purchase upsells met cross-selling auth.
- Shopify Functions (Rust-based, 2024+): Function code review voor manipuleerbare pricing/discount/shipping logic, exploitable performance issues voor DoS.
- GraphQL Admin API: query depth limiting, exposure van onnodige data, scope token analyse.
- Webhooks reliability: idempotency check, signature verificatie, replay attack preventie met timestamp.
- Liquid template performance: zoeken naar constructies die DoS via infinite loops of nested for-loops in custom themes kunnen veroorzaken.
- PCI-DSS scope: voor Shopify Plus merchants met custom checkout, verificatie van PCI-DSS scope (idealiter afwezig als Shopify Payments wordt gebruikt).
Voorbeeldbevinding
App Proxy zonder HMAC validatie — forge van storefront requests
De Shopify custom app gebruikt een app proxy om een interne mini-app (storefront customization tool) te serveren via /apps/custom-config. Het backend endpoint (https://app.matproof.example/proxy/shopify) valideert niet de HMAC signature die Shopify in de signature URL parameter stuurt. Een aanvaller kan willekeurige requests sturen naar het backend endpoint die zogenaamd van Shopify storefront komen — inclusief manipulatie van customer_id, shop, en logged_in_customer_id query parameters. De test maakte mogelijk: (1) lezen van customer order history van andere gebruikers via customer_id manipulatie; (2) injection van admin parameters om storefront configuratie te wijzigen; (3) potentieel cross-customer data leakage als backend logging request parameters niet saneert.
Oplossing: Onmiddellijke actie (prioriteit 1): implementeer HMAC signature validatie in alle app proxy endpoints. Code voorbeeld (Node.js):\n\nconst crypto = require('crypto');\nfunction validateShopifySignature(req, secret) {\n const { signature, ...params } = req.query;\n const message = Object.keys(params).sort().map(k => `${k}=${params[k]}`).join('');\n const hmac = crypto.createHmac('sha256', secret).update(message).digest('hex');\n return crypto.timingSafeEqual(Buffer.from(signature, 'hex'), Buffer.from(hmac, 'hex'));\n}\n\nAanvullende acties: roteer Shopify API secret als non-validation > 24u in productie was; audit logs van laatste 90 dagen voor afwijkende requests; rate limiting op WAF/Cloudflare niveau; timing safe check om side-channel timing attacks te voorkomen.
Referentie: Shopify App Documentation - HMAC Validation · CWE-345 · OWASP A02:2021 · AVG Art. 32(1)(b)
Pentest Shopify: opties vergeleken
| — | Gratis scan | Matproof Sentinel | Traditionele consultancy |
|---|---|---|---|
| Geautomatiseerde scan-engine | ✓ (3-min preview) | ✓ Volledige scan | ✗ Alleen handmatig |
| OWASP Top 10 dekking | Gedeeltelijk | ✓ Volledig | ✓ Volledig |
| Proof-of-exploit bewijs | ✗ | ✓ Per bevinding | ✓ Per bevinding |
| Regulatorische mapping (DORA/NIS2/ISO 27001) | ✗ | ✓ Geautomatiseerd | ✓ Handmatig |
| Audit-geschikt PDF-rapport | ✗ | ✓ Direct | ✓ 2–4 weken levertijd |
| Continue / terugkerende scans | ✗ | ✓ Per deploy | ✗ Jaarlijkse opdracht |
| Tijd tot eerste resultaat | ~3 min | ~30 min volledige scan | 2–4 weken |
| Prijs | €0 | Vanaf €149 | €8.000–€25.000 |
| Broncode-review (SAST) | ✗ | ✓ Growth-plan | ✓ In scope |
| API-tests (REST/GraphQL) | ✗ | ✓ Geautomatiseerd | ✓ Handmatig |
Pentest Shopify pakketten
- 1 volledige penetratietest-scan
- AI-geprioriteerde bevindingen met CVSS 3.1
- Proof-of-exploit per bevinding
- PDF-rapport (geschikt voor audit)
- Regulatorische mapping (DORA, NIS2, ISO 27001)
- Onbeperkt scannen (tot 3 domeinen)
- Continue monitoring
- CI/CD-integratie (GitHub, GitLab)
- Alle regulatorische mappings
- Prioriteitsondersteuning
- Onbeperkt scannen + domeinen
- Geauthenticeerde / White-Box tests
- API- en cloud-infrastructuurtests
- Dedicated security account manager
- SLA responstijd 24u
Veelgestelde vragen over Shopify pentest
Beheert Shopify niet al alle beveiliging? Waarom een pentest?
Shopify beheert infrastructuur en payment processing (PCI-DSS Level 1), maar verantwoordelijkheid voor custom themes, in-house apps, en integraties is bij de merchant. Voor Shopify Plus met custom Liquid, app proxy, custom checkout extensions, of Shopify Functions is een pentest essentieel.
Testen jullie ook apps van de Shopify App Store?
Voor publieke apps uit de App Store (Shopify-geverifieerd) is het risico laag. Wij testen: private/development apps, custom apps van partners, minder populaire apps (< 1k installs) met mogelijk minimale security review. Focus is op data flow.
Wat testen jullie voor Shopify Functions?
Shopify Functions (Rust-based, GA 2024) heeft eigen security: input validatie van Function logic, performance limits (Functions hebben 11ms timeout — exploitable als logic complex is), manipuleerbare business logic voor discount/shipping/pricing.
Kunnen we Matproof integreren in onze CI/CD voor Shopify theme deployment?
Ja. Voor Shopify CLI workflow: GitHub Actions integratie op PR naar main theme repository branch, automatische scan bij elke `shopify theme push`. Critical/High findings kunnen deploy blokkeren.
Dekt de pentest PCI-DSS compliance voor onze Shopify stores?
Shopify heeft PCI-DSS Level 1 certificering, dus als u Shopify Payments gebruikt is uw PCI-DSS scope minimaal (SAQ-A). Als u alternatieve gateways gebruikt (Mollie iDEAL, Adyen native), wordt scope uitgebreid.
Testen jullie ook Hydrogen (Shopify React framework)?
Ja. Hydrogen is een Next.js-gebaseerd framework voor Shopify headless commerce. Combineert Next.js risico's (CVE-2024-43481 middleware bypass, ISR cache poisoning) met Hydrogen-specifieke: Storefront API token management, customer authentication.
Hoe lang duurt een volledige Shopify pentest?
45-60 minuten voor Shopify standard, 90-120 minuten voor Shopify Plus met custom apps. Audit-klaar rapport binnen 24 uur.
Is het rapport geaccepteerd voor AVG audits en marketplace security questionnaires?
Ja. Het technische rapport levert bewijs van adequate beveiliging voor AVG Art. 32. Voor marketplaces die security questionnaires vragen (Amazon Vendor Central, bol.com Plaza partners), beantwoordt het Matproof Sentinel rapport direct de technische vragen.
Gerelateerde onderwerpen
Meer lezen — gerelateerde blogartikelen
Bescherm uw Shopify webshop nu
Eerste scan in 3 minuten, volledige Shopify pentest in 45-90 minuten. Audit-klaar rapport AVG / PCI-DSS vanaf €149.
Start gratis scan