Proprietários de lojas Magento 2, está na altura de agir rapidamente. A Adobe lançou recentemente uma atualização de segurança importante que corrige um problema crítico que poderia permitir a execução de código não autorizado. Se a sua loja ainda não foi corrigida, deve agir de imediato. Depois de aplicar o patch, dê mais um passo importante — desative os endpoints de carregamento de ficheiros não utilizados e de risco, como os carregamentos de ficheiros nas moradas de clientes e os carregamentos de ficheiros nas opções personalizadas.
Boas notícias — o patch oficial da Adobe já está disponível
Boas notícias: a Adobe conseguiu resolver o problema a tempo e lançou um patch de emergência que corrige totalmente a vulnerabilidade.
Agora é a sua vez — aplique o patch e proteja a sua loja. Não adie, aja já.
Siga as instruções oficiais da Adobe aqui: Instruções do patch da Adobe.
Como aplicar o patch
Descarregue o patch VULN-32437-2-4-X e execute os seguintes comandos a partir do diretório raiz do seu 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
Depois de executar estes comandos, deverá ver uma alteração em vendor/magento/framework/Webapi/ServiceInputProcessor.php semelhante a esta:
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) {
Integração do patch em versões posteriores
Desde 14 de outubro, a Adobe incluiu oficialmente a correção na versão APSB25-94. Pode confirmar isto no Boletim de Segurança da Adobe.
As lojas com as seguintes versões já estão protegidas:
- Magento 2.4.6-p13
- Magento 2.4.7-p8
- Magento 2.4.8-p3
Se estiver numa destas versões, está tudo em ordem — mas verifique o estado das suas atualizações para ter a certeza de que está protegido contra a APSB25-94 e as vulnerabilidades relacionadas.
Agora, reforce ainda mais a segurança da sua loja
Depois de aplicar o patch, dê o próximo passo proativo: bloqueie os dois endpoints de carregamento mais explorados no Magento 2. São dois pontos de entrada distintos, cada um com a sua própria correção — um abrange os carregamentos de ficheiros nas opções personalizadas (usados quando um produto permite ao cliente carregar um ficheiro, por exemplo um logótipo para gravar), o outro abrange o atributo de carregamento de ficheiros na morada do cliente. Ambos são importantes e tratam endpoints diferentes — recomendamos que instale os dois.
Proteja os carregamentos nas opções personalizadas: módulo PolyShell Protection
aregowe/magento2-module-polyshell-protectionFinalidade: Defesa em profundidade contra a vulnerabilidade PolyShell de carregamento irrestrito de ficheiros (APSB25-94) que afeta o Magento Open Source e o Adobe Commerce até à versão 2.4.9-alpha2 — explorada sobretudo através dos carregamentos de ficheiros nas opções personalizadas nas páginas de produto. Combina oito proteções distintas — bloqueio de caminhos de pedidos, prevenção de carregamentos ao nível do controlador, deteção de ficheiros poliglotas e reforço de imagens ao nível da framework — em nove plugins que abrangem os endpoints de carregamento da API REST, a disponibilização de media e o processamento de imagens.
Instalação via Composer (recomendada se o seu alojamento o suportar):
composer require aregowe/magento2-module-polyshell-protection
bin/magento module:enable Aregowe_PolyShellProtection
bin/magento setup:upgrade
bin/magento cache:flush
Instalação manual em app/code (sem necessidade de acesso ao Composer): descarregue o repositório em ZIP a partir do GitHub e depois:
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
Depois de ativado, aceda a Stores > Configuration > PolyShell Protection para rever as extensões de ficheiro permitidas/bloqueadas — não são necessárias alterações ao código para o ajustar.
Proteja os carregamentos nas moradas de clientes: desative o endpoint de carregamento
basecom/magento2-disable-customer-address-file-uploadFinalidade: Desativa especificamente o endpoint de carregamento de ficheiros na morada do cliente — um caminho de carregamento diferente do das opções personalizadas e que a maioria das lojas nunca utiliza, pelo que desativá-lo elimina totalmente o risco em vez de apenas o filtrar.
Instalação via Composer:
composer require basecom/magento2-disable-customer-address-file-upload
bin/magento module:enable Basecom_DisableCustomerAddressFileUpload
bin/magento setup:upgrade
bin/magento cache:clean
Instalação manual em app/code (sem necessidade de acesso ao Composer): descarregue o repositório em ZIP a partir do GitHub e depois:
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
Depois de ativado, quaisquer tentativas de carregamento de ficheiros através do formulário de morada do cliente ou da API serão bloqueadas, fechando uma potencial superfície de ataque que muitas lojas ignoram. Não é necessária qualquer configuração adicional.
Considerações finais
A segurança é um processo contínuo. Aplicar o patch mais recente da Adobe mantém o núcleo do seu Magento 2 seguro. Os dois módulos acima fazem coisas diferentes: um impede carregamentos maliciosos através das opções personalizadas, o outro fecha o endpoint separado de carregamento na morada do cliente. Nenhum substitui o outro — instale ambos, juntamente com o patch do núcleo, para obter uma proteção em camadas e total tranquilidade.

