Penetration Test Shopify: Liquid SSTI, Theme Security e App Proxy
Shopify alimenta migliaia di e-commerce italiani — boutique fashion, marketplace B2B, brand DTC. La piattaforma è generalmente sicura (Shopify gestisce infra e payment processing), ma temi personalizzati, app sviluppate internamente, e Shopify Plus configurazioni custom espongono superfici di attacco specifiche. Matproof Sentinel esegue pentest Shopify focalizzati su Liquid SSTI, theme XSS, app proxy abuse e webhook signing, con report audit-ready GDPR / PCI-DSS da 149 €.
Perché Shopify richiede competenze pentest specifiche
Shopify è la piattaforma e-commerce dominante per il commercio digitale italiano (vendite cross-border, marketplace, brand DTC), con oltre 175.000 merchant attivi in Europa nel 2024. Mentre Shopify gestisce la sicurezza dell'infrastruttura e del payment processing (PCI-DSS Level 1), la responsabilità per temi custom, app sviluppate dal merchant, e Shopify Plus configurations è del merchant stesso. Liquid (il template engine di Shopify) è generalmente sandboxed, ma errori di implementazione possono permettere SSTI (Server-Side Template Injection) se gli oggetti Liquid sono usati con input utente. Theme.liquid e settings_schema.json esposti possono permettere XSS persistent. Per Shopify Plus con custom apps, l'app proxy è una superficie di attacco classica: se l'autenticazione non valida correttamente il signature HMAC di Shopify, un attaccante può fingere richieste legittime dal storefront. CVE-2022-21664 (Shopify Marketplace, divulgata 2022) ha esposto exploitable bug nella validation di review submissions. Per le aziende italiane con e-commerce Shopify (GDPR Art. 32 customer data, PCI-DSS per high-volume merchants), un pentest Shopify documentato è elemento standard di compliance.
- CVE-2022-21664 (Shopify Marketplace): exploitable bug nella validation di review submissions — fixed in 2022 ma indicativa dei pattern di attack su platform Shopify.
- Liquid SSTI: errori di implementazione in temi custom possono permettere SSTI tramite Liquid objects con input utente non sanitizzato (es. {{ product.metafields[user_input] }}).
- Theme XSS: theme.liquid con input utente nei query params, customer reviews/comments senza escape corretto, custom checkout extensions con UNSAFE_RAW_HTML.
- App proxy abuse: custom apps con app proxy che non validano HMAC signature da Shopify — un attaccante può fingere richieste dal storefront.
- Webhook signing: webhook endpoints custom che non verificano X-Shopify-Hmac-Sha256 header — un attaccante può iniettare order/customer fake events.
- Shopify Plus scripts (Ruby): Shopify Scripts (deprecato 2024 a favore Functions) può ancora avere applicazioni legacy con logica di pricing manipolabile.
- GDPR Art. 32 per customer data: Shopify gestisce molto, ma data export tramite app e custom integrations sono responsabilità del merchant.
Cosa testiamo specificamente in uno store Shopify
- Theme.liquid audit: ricerca di Liquid SSTI patterns (output di oggetti con input utente), XSS in customer reviews, exposed metadata via {{ }} non sanitizzato.
- Theme customization permissions: settings_schema.json e settings_data.json per validation di input admin, theme app extensions security.
- Custom apps: app proxy HMAC signature validation, webhook endpoints HMAC verification, OAuth scope minimization (no read_all_orders se non necessario), API token rotation.
- Storefront API: rate limiting (Shopify imposta limit ma può essere insufficiente), customer enumeration tramite GraphQL queries, exposed metafields privati.
- Checkout extensions: payment validation lato server (mai trust client), custom shipping calculators con input validation, post-purchase upsells con cross-selling auth.
- Shopify Functions (Rust-based, 2024+): Function code review per logica di pricing/discount/shipping manipolabile, performance issues exploitable per DoS.
- GraphQL Admin API: query depth limiting, exposure di dati non necessari, scope token analysis (app token con read_all_orders è high-risk).
- Webhooks reliability: idempotency check (gestione retry da Shopify), signature verification, replay attack prevention con timestamp.
- Liquid template performance: ricerca di costrutti che possono causare DoS via loop infiniti o nested for-loops in custom themes.
- PCI-DSS scope: per merchant Shopify Plus con custom checkout, verifica del PCI-DSS scope (idealmente assente se Shopify Payments è usato, scope esteso se gateway alternativo).
Esempio di finding
App Proxy senza validation HMAC — Forgia di richieste storefront
L'applicazione Shopify custom utilizza un app proxy per servire un mini-app interno (storefront customization tool) accessibile via /apps/custom-config. L'endpoint backend (https://app.matproof.example/proxy/shopify) non valida l'HMAC signature inviata da Shopify nel parametro signature URL. Un attaccante può inviare richieste arbitrarie all'endpoint backend fingendo che provengano da Shopify storefront — incluso manipolazione di customer_id, shop, e logged_in_customer_id query parameters. Il test ha permesso: (1) lettura di customer order history di altri utenti tramite manipolazione customer_id; (2) injection di parametri admin per modificare configurazione storefront; (3) potenziale per cross-customer data leakage se logging del backend non sanitizza request parameters.
Correzione: Azione immediata (priorità 1): implementare validation HMAC signature in tutti gli endpoint app proxy. Codice esempio (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\nAzioni complementari: ruotare il Shopify API secret se la non-validation è stata in produzione per > 24h; audit log degli ultimi 90 giorni per richieste anomale all'endpoint proxy; abilitare rate limiting al livello WAF / Cloudflare per evitare brute-force enumeration; implementare check di timing safe per evitare side-channel timing attacks sulla validation.
Riferimento: Shopify App Documentation - HMAC Validation · CWE-345 Insufficient Verification of Data Authenticity · OWASP A02:2021 Cryptographic Failures · GDPR Art. 32(1)(b)
Pentest Shopify: opzioni a confronto
| — | Scan gratuito | Matproof Sentinel | Consulenza tradizionale |
|---|---|---|---|
| Motore di scansione automatizzato | ✓ (anteprima 3 min) | ✓ Scansione completa | ✗ Solo manuale |
| Copertura OWASP Top 10 | Parziale | ✓ Completa | ✓ Completa |
| Prova di exploit | ✗ | ✓ Per finding | ✓ Per finding |
| Mapping normativo (DORA/NIS2/ISO 27001) | ✗ | ✓ Automatizzato | ✓ Manuale |
| Report PDF pronto per l'audit | ✗ | ✓ Immediato | ✓ Consegna 2–4 settimane |
| Scansioni continue / ricorrenti | ✗ | ✓ Per deploy | ✗ Impegno annuale |
| Tempo al primo risultato | ~3 min | ~30 min scansione completa | 2–4 settimane |
| Prezzo | €0 | Da €149 | €8.000–€25.000 |
| Revisione codice sorgente (SAST) | ✗ | ✓ Piano Growth | ✓ In scope |
| Test API (REST/GraphQL) | ✗ | ✓ Automatizzato | ✓ Manuale |
Pacchetti pentest Shopify
- 1 scansione pentest completa
- Risultati prioritizzati da AI con CVSS 3.1
- Proof-of-exploit per ogni finding
- Report PDF (pronto per l'audit)
- Mapping normativo (DORA, NIS2, ISO 27001)
- Scansioni illimitate (fino a 3 domini)
- Monitoraggio continuo
- Integrazione CI/CD (GitHub, GitLab)
- Tutti i mapping normativi
- Supporto prioritario
- Scansioni + domini illimitati
- Test autenticati / White-Box
- Test API e infrastruttura cloud
- Account manager dedicato
- SLA risposta 24h
Domande frequenti sul pentest Shopify
Shopify non gestisce già tutta la sicurezza? Perché un pentest?
Shopify gestisce l'infrastruttura e il payment processing (PCI-DSS Level 1), ma la responsabilità per temi custom, app sviluppate internamente, e integrazioni è del merchant. Per Shopify Plus con custom Liquid, app proxy, custom checkout extensions, o Shopify Functions, un pentest è essenziale. Anche per Shopify standard, il theme custom + app installate (specialmente private/development apps) hanno la propria superficie di attacco.
Testate anche le app installate dal Shopify App Store?
Per le app pubbliche dal App Store (Shopify verifica), il rischio è basso. Testiamo invece: app private/development sviluppate dal merchant, app custom da partner, app meno popolari (< 1k installs) che possono avere security review minima. Il focus è su data flow: quali permessi ha ogni app, dove vanno i dati, come autenticano le richieste.
Cosa testate per Shopify Functions (il successore di Shopify Scripts)?
Shopify Functions (Rust-based, GA 2024) ha la propria sicurezza specifica: input validation della Function logic, performance limits (Functions hanno timeout 11ms — exploitable se logica è complessa), business logic per discount/shipping/pricing manipolabile, GraphQL output validation.
Possiamo integrare Matproof nel nostro CI/CD per Shopify theme deployment?
Sì. Per Shopify CLI workflow: GitHub Actions integration su PR a main branch theme repository, scan automatico ad ogni `shopify theme push`. Findings Critical/High possono bloccare il deploy. Particolare attenzione a custom Liquid in checkout.liquid (Shopify Plus) che ha access a customer payment data.
Il pentest copre la conformità PCI-DSS per i nostri stores Shopify?
Shopify ha PCI-DSS Level 1 certification, quindi se usi Shopify Payments (gateway nativo), il tuo PCI-DSS scope è minimo (SAQ-A). Se usi gateway alternativi (es. Bancomat Pay, Klarna nativo italiano), il scope si estende. Testiamo: verifica del SAQ scope corretto, checkout extensions che non toccano card data, customer data storage compliance.
Testate anche Hydrogen (Shopify React framework)?
Sì. Hydrogen è un framework basato su Next.js per Shopify headless commerce. Combina rischi Next.js (CVE-2024-43481 middleware bypass, ISR cache poisoning) con specifiche Hydrogen: Storefront API token management, customer authentication via Shop Customer Account API, server-side rendering di dati customer. Testato come parte del pentest Shopify per merchant headless.
Quanto tempo richiede un pentest Shopify completo?
Scansione automatica: 45-60 minuti per Shopify standard, 90-120 minuti per Shopify Plus con custom apps. Test include: theme audit, app proxy validation, webhook security, Storefront/Admin API, custom Functions. Report audit-ready entro 24 ore.
Il report è accettato per audit GDPR e per le richieste dei marketplace italiani (es. Amazon Vendor, ePRICE)?
Sì. Il report tecnico fornisce evidenza di sicurezza adeguata per GDPR Art. 32. Per marketplace che richiedono security questionnaire (Amazon Vendor Central, ePRICE B2B, Privalia), il report Matproof Sentinel risponde direttamente alle domande tecniche: penetration testing, vulnerability management, data encryption, access control.
Approfondisci — articoli correlati dal blog
Proteggi il tuo store Shopify ora
Primo scan in 3 minuti, pentest Shopify completo in 45-90 minuti. Report audit-ready GDPR / PCI-DSS da 149 €.
Avvia scan gratuito