Come proteggere il suo negozio Magento 2 dalla vulnerabilità APSB25-88

Come proteggere il suo negozio Magento 2 dalla vulnerabilità APSB25-88

Proprietari di negozi Magento 2, è il momento di agire rapidamente. Adobe ha recentemente rilasciato un importante aggiornamento di sicurezza che corregge un problema critico in grado di consentire l’esecuzione di codice non autorizzato. Se il suo negozio non è ancora stato aggiornato con la patch, deve intervenire immediatamente. Dopo aver applicato la patch, compia un altro passo importante: disattivi gli endpoint di caricamento file inutilizzati e rischiosi, come i caricamenti di file negli indirizzi cliente e i caricamenti di file nelle opzioni personalizzate.

Buone notizie: la patch ufficiale di Adobe è disponibile

Buone notizie: Adobe è riuscita a risolvere il problema in tempo e ha rilasciato una patch di emergenza che corregge completamente la vulnerabilità.

Ora tocca a lei: applichi la patch e protegga il suo negozio. Non rimandi, agisca subito.

Segua le istruzioni ufficiali di Adobe qui: istruzioni per la patch di Adobe.

Come applicare la patch

Scarichi la patch VULN-32437-2-4-X ed esegua i seguenti comandi dalla directory principale di Magento 2:

curl -LO https://repo.magento.com/patch/VULN-32437-2-4-X-patch.zip
unzip VULN-32437-2-4-X-patch.zip
patch -p1 < VULN-32437_2.4.X.patch && \
php -d memory_limit=-1 bin/magento cache:clean

Dopo aver eseguito questi comandi, dovrebbe vedere una modifica in vendor/magento/framework/Webapi/ServiceInputProcessor.php simile a questa:

diff --git a/vendor/magento/framework/Webapi/ServiceInputProcessor.php b/vendor/magento/framework/Webapi/ServiceInputProcessor.php
index ba58dc2bc7acf..06919af36d2eb 100644
--- a/vendor/magento/framework/Webapi/ServiceInputProcessor.php
+++ b/vendor/magento/framework/Webapi/ServiceInputProcessor.php
@@ -246,6 +246,13 @@ private function getConstructorData(string $className, array $data): array
             if (isset($data[$parameter->getName()])) {
                 $parameterType = $this->typeProcessor->getParamType($parameter);

+                // Allow only simple types or Api Data Objects
+                if (!($this->typeProcessor->isTypeSimple($parameterType)
+                    || preg_match('~\\\\?\w+\\\\\w+\\\\Api\\\\Data\\\\~', $parameterType) === 1
+                )) {
+                    continue;
+                }
+
                 try {
                     $res[$parameter->getName()] = $this->convertValue($data[$parameter->getName()], $parameterType);
                 } catch (\ReflectionException $e) {

Integrazione della patch nelle versioni successive

Dal 14 ottobre, Adobe ha incluso ufficialmente la correzione nella release APSB25-94. Può verificarlo nel bollettino di sicurezza di Adobe.

I negozi che utilizzano le seguenti versioni sono già protetti:

  • Magento 2.4.6-p13
  • Magento 2.4.7-p8
  • Magento 2.4.8-p3

Se utilizza una di queste release, è a posto, ma verifichi comunque lo stato degli aggiornamenti per essere certo di essere protetto da APSB25-94 e dalle vulnerabilità correlate.

Ora renda il suo negozio ancora più sicuro

Dopo la patch, compia il passo proattivo successivo: blocchi i due endpoint di caricamento più sfruttati in Magento 2. Si tratta di due punti di accesso distinti, ciascuno con la propria correzione: uno riguarda i caricamenti di file nelle opzioni personalizzate (usati quando un prodotto consente ai clienti di caricare un file, ad es. un logo da incidere), l’altro l’attributo di caricamento file dell’indirizzo cliente. Entrambi sono importanti e riguardano endpoint diversi: consigliamo di installarli entrambi.

Proteggere i caricamenti delle opzioni personalizzate: modulo PolyShell Protection

Modulo: aregowe/magento2-module-polyshell-protection
Scopo: Difesa in profondità contro la vulnerabilità PolyShell di caricamento file senza restrizioni (APSB25-94) che colpisce Magento Open Source e Adobe Commerce fino alla 2.4.9-alpha2, sfruttata più comunemente tramite i caricamenti di file nelle opzioni personalizzate nelle pagine prodotto. Applica otto protezioni distinte — blocco dei percorsi delle richieste, prevenzione dei caricamenti a livello di controller, rilevamento di file poliglotti e hardening delle immagini a livello di framework — tramite nove plugin che coprono gli endpoint di caricamento della REST API, la distribuzione dei media e l’elaborazione delle immagini.

Installazione tramite Composer (consigliata se il suo hosting lo supporta):

composer require aregowe/magento2-module-polyshell-protection
bin/magento module:enable Aregowe_PolyShellProtection
bin/magento setup:upgrade
bin/magento cache:flush

Installazione manuale in app/code (senza bisogno di accesso a Composer): scarichi il repository come ZIP da GitHub, quindi:

mkdir -p app/code/Aregowe/PolyShellProtection
# extract the downloaded ZIP contents into that folder, so that
# app/code/Aregowe/PolyShellProtection/registration.php exists
bin/magento module:enable Aregowe_PolyShellProtection
bin/magento setup:upgrade
bin/magento cache:flush

Una volta attivato, vada su Stores > Configuration > PolyShell Protection per controllare le estensioni di file consentite/bloccate: non servono modifiche al codice per regolarlo ulteriormente.

Proteggere i caricamenti negli indirizzi cliente: disattivare l’endpoint di caricamento

Modulo: basecom/magento2-disable-customer-address-file-upload
Scopo: Disattiva specificamente l’endpoint di caricamento file nell’indirizzo cliente : un percorso di caricamento diverso da quello delle opzioni personalizzate, che la maggior parte dei negozi non utilizza mai, per cui disattivarlo elimina del tutto il rischio anziché limitarsi a filtrarlo.

Installazione tramite Composer:

composer require basecom/magento2-disable-customer-address-file-upload
bin/magento module:enable Basecom_DisableCustomerAddressFileUpload
bin/magento setup:upgrade
bin/magento cache:clean

Installazione manuale in app/code (senza bisogno di accesso a Composer): scarichi il repository come ZIP da GitHub, quindi:

mkdir -p app/code/Basecom/DisableCustomerAddressFileUpload
# extract the downloaded ZIP contents into that folder, so that
# app/code/Basecom/DisableCustomerAddressFileUpload/registration.php exists
bin/magento module:enable Basecom_DisableCustomerAddressFileUpload
bin/magento setup:upgrade
bin/magento cache:clean

Una volta attivato, qualsiasi tentativo di caricamento file tramite il modulo dell’indirizzo cliente o l’API verrà bloccato, chiudendo una potenziale superficie d’attacco che molti negozi trascurano. Non è necessaria alcuna ulteriore configurazione.

Considerazioni finali

La sicurezza è un processo continuo. Applicare l’ultima patch di Adobe mantiene sicuro il core di Magento 2. I due moduli sopra descritti svolgono funzioni diverse: uno impedisce caricamenti dannosi tramite le opzioni personalizzate, l’altro chiude il distinto endpoint di caricamento dell’indirizzo cliente. Nessuno dei due sostituisce l’altro: li installi entrambi, insieme alla patch del core, per ottenere una protezione a più livelli e la massima tranquillità.