CSP e PCI compliance

Per chiunque gestisca pagamenti con carta di credito, la conformità al PCI DSS è essenziale, anche se si utilizza un fornitore di servizi di pagamento terzo. A partire dal 1° aprile 2025, il PCI DSS richiederà l’implementazione del CSP sulle pagine che gestiscono l’elaborazione dei pagamenti per migliorare la sicurezza. Una corretta implementazione del CSP aiuta a proteggere i dati di pagamento dagli attacchi di iniezione ed è un passo verso la conformità al PCI.

Magento Csp - report only

Magento e CSP

Per rispettare i requisiti imminenti del PCI DSS, Adobe ha aggiunto il supporto CSP e SRI in Magento e Adobe Commerce. Con il recente rilascio di Magento 2.4.7, il CSP è impostato in modalità rigorosa nel checkout e il modulo CSP non può più essere disabilitato. Questo aggiornamento causa problemi ai checkout in tutto il mondo. Cosa dovresti fare?

Checkout interrotti Un CSP rigoroso può bloccare JavaScript inline e librerie di terze parti, quindi l’aggiornamento a una delle seguenti versioni probabilmente interromperà il tuo checkout.

  • Magento 2.4.7 e versioni successive
  • Magento 2.4.6-p6
  • Magento 2.4.5-p8
  • Magento 2.4.4-p9

Adobe ha pubblicato una guida completa per risolvere i problemi del codice legacy. Tuttavia, se il tuo codice proviene da un fornitore esterno (come nella maggior parte dei negozi), dovrai aspettare che il fornitore fornisca le correzioni. Nel frattempo, ti consigliamo di disabilitare il “CSP rigoroso” nel checkout 👇

Disabilita il CSP rigoroso nel checkout Mentre 2.4.7 è impostato su “rigoroso” per impostazione predefinita, puoi impostarlo su modalità “solo report”.

Alcune guide raccomandano di modificare vendor/magento/module-checkout/etc/config.xml, ma questo potrebbe essere sovrascritto dopo un nuovo rilascio. Pertanto, è meglio aggiornare la tua configurazione in env.php. Il seguente codice imposterà la modalità solo report per le rotte di checkout e admin. Inoltre, abilita gli script inline (non conforme al PCI dopo aprile 2025!).

 [
        'default' => [
            'csp' => [
               'mode' => [
                  'storefront_checkout_index_index' => [
                     'report_only' => '1'
                  ],
                  'admin_sales_order_create_index' => [
                    'report_only' => '1'
                  ]
               ],
               'policies' => [
                  'storefront_checkout_index_index' => [
                    'scripts' => [
                        'inline' => '1'
                    ]
                  ],
                  'admin_sales_order_create_index' => [
                    'scripts' => [
                        'inline' => '1'
                    ]
                  ]
               ]
            ]
        ]
    ]
];

[REPORT ONLY]

Ora Questa configurazione imposta il CSP in modalità “solo report” per le rotte di checkout e admin, consentendo script inline. Assicurati di rivedere questa configurazione e aggiornarla in conformità ai requisiti PCI prima di aprile 2025.

Vantaggi del CSP

Quando il CSP è configurato correttamente, può:

  • Inviare avvisi per nuove sorgenti di JavaScript non autorizzate.
  • Inviare avvisi per perdite di dati.
  • Fornire una panoramica dell’inventario di tutti gli elementi di codice nel tuo negozio.

Problemi con il CSP

Tuttavia, il CSP non è la soluzione definitiva contro il web skimming. Ecco alcuni problemi. Rimane comunque uno dei migliori strumenti a nostra disposizione, poiché è supportato da tutti i principali browser.

  • Manutenzione onerosa: Il CSP richiede un notevole investimento e manutenzione.
    Anche con un endpoint di raccolta funzionante, dovrai gestire molto “rumore” causato da browser difettosi, estensioni grezze e altri avvisi non pertinenti al tuo store.
  • Google Analytics 4 con Google Signals: Utilizzare il CSP con trust basato sulla posizione non funziona bene con Google Analytics 4 (GA4) se hai abilitato Google Signals.
    Se usi GA4 con Signals nel tuo checkout, devi aggiungere tutti i domini locali di Google alla tua lista di accettazione, il che è possibile ma aumenta la dimensione dell’header e può rallentare il tuo negozio.
    Google non intende cambiare questo comportamento e suggerisce di utilizzare strict-dynamic con nonces. Tuttavia, questo metodo è incompatibile con Magento. Quindi o hai header HTTP grandi, o non puoi usare Google Signals (utilizzati per tracciare gli utenti connessi su dispositivi diversi).
  • 3D Secure via iframe: Alcuni servizi di pagamento, in particolare Braintree di Paypal, sono integrati utilizzando un iframe.
    Quando un pagamento con carta richiede la verifica 3D Secure, il servizio di pagamento reindirizzerà il visitatore nell’iframe alla propria banca.
    Poiché esistono molte banche nel mondo, non è possibile aggiungerle tutte a una lista di autorizzazione CSP.
    Paypal ad esempio consiglia di disabilitare la protezione CSP per l’iframe aggiungendo una policy frame-src *.
    Dovresti essere consapevole che probabilmente ciò non rispetta i requisiti PCI DSS, poiché un attaccante potrebbe abusare di questo per inserire la propria posizione iframe.
    Il gigante dei pagamenti Adyen afferma: “Adyen non mantiene e non è responsabile per mantenere un elenco di URL ACS. Se scegli di implementare un’intestazione CSP che blocca il caricamento delle risorse, devi assicurarti di includere l’elenco degli URL ACS utilizzati per l’autenticazione 3D Secure 2 in modo che l’interfaccia di autenticazione possa essere caricata.”

Bypass della protezione CSP

Il CSP non è stato specificamente progettato per proteggere contro il digital skimming (invece, per proteggere contro gli attacchi XSS). Sebbene sia certamente utile, ci sono diversi modi per aggirarlo.

  • Se uno dei siti attendibili ha un endpoint JSONP o AngularJS, può essere utilizzato per iniettare JavaScript arbitrario.
  • Data la complessità del protocollo CSP, è facile commettere un errore di configurazione. E un attaccante ha bisogno solo di un singolo errore nella policy.
  • Se il codice backend è compromesso, un attaccante potrebbe manomettere l’intestazione CSP o aggiungere un hash o nonce al proprio malware.
  • Estensioni del browser casuali generano molti report di violazione CSP, portando a una fatica da report. Oppure le estensioni possono alterare le tue richieste portando a falsi report.
  • I browser comuni limitano il numero di report di violazione CSP a 100 per pagina. Poiché un’installazione tipica di Magento ha molti più elementi, il monitoraggio CSP fornisce una visione incompleta.