Patch de segurança Magento SUPEE-6482, O que é patch?

28

Hoje 08.08.2015, foi lançado um novo patch de segurança, alguns colegas e eu estávamos checando o patch, e é sempre bom ter uma discussão sobre o que mudou, também alguém sabe quais são os possíveis ataques que podem afetar a loja sem patch? Qual é o pior que poderia acontecer?

Atualização: Eu só queria adicionar o email que o magento enviou hoje para concluir a postagem. Atualização de E-mail Magento

lloiacono
fonte
1
Tenho certeza de que haverá um encerramento nos dias de hoje. No entanto, se você já o verificou e deseja discutir, vá em frente! Compartilhe seus pensamentos e descobertas!
Mam08ixo 4/08
2
O patch em si, não. A instalação completa para 1.9.2.1 teriam que ser examinados para essas mudanças, neste momento parece apenas questões de segurança endereço 4
Fiasco Labs
2
Você precisará fazer uma atualização completa ou o backport 1.9.2.0 => CMS Block e Widget em cache magento-1921/app/code/core/Mage/Cms/Block/Block.phpemagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs
2
merch.docs.magento.com/ce/user_guide/… - Acabei de me perguntar quando será o próximo patch, depois de tanto foco nos cabeçalhos nos últimos dias. E aí está!
hakre
2
@ hakre - eu tinha lido o conteúdo do patch antes de incluir os cabeçalhos, a menos que esses cabeçalhos estivessem realmente na API. O download completo possui algumas correções no controlador http e no modelo de cookie javascript, mas a correção 6482 não.
Fiasco Labs

Respostas:

13

O patch de segurança real ( SUPEE-6482 ) afeta apenas os dois arquivos a seguir e é um patch de API.

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Catalog/Model/Product/Api/V2.php

A instalação completa 1.9.2.1 é uma questão completamente diferente. Eu diferiria o código fonte entre 1.9.2.0 e 1.9.2.1 para descobrir os outros dois itens que foram corrigidos.

As notas de versão são para o instalador completo; você deve verificar o patch para ver se ele realmente inclui todos os itens mencionados nas notas de versão.

Implicações da execução de um servidor sem patch:

  1. Script entre sites usando cabeçalhos não validados => envenenamento por cache
  2. Inclusão de arquivo carregada automaticamente na API SOAP Magento => carregamento automático de código remoto
  3. XSS na Gift Registry Search => Roubo de cookies e representação de usuário
  4. Vulnerabilidade de SSRF no arquivo WSDL => Vazamento interno de informações do servidor e inclusão remota de arquivos

NOTA: Arquivos corrigidos no arquivo de instalação completa que não foram corrigidos com o patch, hum?

diff -r magento-1920/app/code/core/Mage/Core/Controller/Request/Http.php magento-1921/app/code/core/Mage/Core/Controller/Request/Http.php
300a301
>         $host = $_SERVER['HTTP_HOST'];
302,303c303,304
<             $host = explode(':', $_SERVER['HTTP_HOST']);
<             return $host[0];
---
>             $hostParts = explode(':', $_SERVER['HTTP_HOST']);
>             $host =  $hostParts[0];
305c306,313
<         return $_SERVER['HTTP_HOST'];
---
> 
>         if (strpos($host, ',') !== false || strpos($host, ';') !== false) {
>             $response = new Zend_Controller_Response_Http();
>             $response->setHttpResponseCode(400)->sendHeaders();
>             exit();
>         }
> 
>         return $host;

diff -r magento-1920/app/design/frontend/base/default/template/page/js/cookie.phtml magento-1921/app/design/frontend/base/default/template/page/js/cookie.phtml
37,38c37,38
< Mage.Cookies.path     = '<?php echo $this->getPath()?>';
< Mage.Cookies.domain   = '<?php echo $this->getDomain()?>';
---
> Mage.Cookies.path     = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getPath()) ?>';
> Mage.Cookies.domain   = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getDomain()) ?>';
Fiasco Labs
fonte
5
Acho que os arquivos ausentes corrigem o problema mais crítico "Cross-site Scripting Using Unvalidated Headers". O problema "XSS no Gift Registry Seaerch" parece ter sido adicionado por engano à documentação do patch da versão CE, pois o Gift Registry é um recurso exclusivo de EE.
Aad Mathijssen
1
Sim, eu achei que era importante o suficiente aplicar as alterações ausentes na minha instalação do CE de qualquer maneira e não espere o Magento descobrir e nos enviar um patch V2 quando eles resolverem o problema. O envenenamento de cache e a entrada não filtrada do usuário usados ​​nos componentes do cookie parecem um grande problema.
Fiasco Labs
1
O Magento atualizou a documentação: os problemas "Scripts entre sites usando cabeçalhos não validados" e "XSS na pesquisa de registros de presentes" estão marcados como "Somente para o Magento Enterprise Edition". Entretanto, o Magento CE 1.9.2.1 contém correções para o problema "Scripts entre sites usando cabeçalhos não validados", ou pelo menos uma parte dele.
Aad Mathijssen
1
Heh, a CE muda de ação. O CE não possui a lista de desejos, mas definitivamente precisa que o problema "Cabeçalhos não validados" seja eliminado por meio do patch, não da alteração da documentação. Oh, bem ... mais do que esperamos.
Fiasco Labs
3
Para o registro - de acordo com nossos testes - o script entre sites usando cabeçalhos não validados NÃO é uma vulnerabilidade da CE. Se alguém puder fornecer um POC que exista uma vulnerabilidade CE, acesse magento.com/security e relate-o.
benmarks
9

Eu tenho uma olhada nas mudanças em detalhes e quais efeitos colaterais são esperados.

Na versão do EE 1.13.1.0, os seguintes arquivos foram alterados:

2015-08-05 07:14:25 UTC | SUPEE-6482_EE_1.13.1.0 | EE_1.13.1.0 | v2 | 7e38036f94f250514fcc11d066a43c9bdb6a3723 | Tue Jul 28 14:29:35 2015 +0300 | v1.13.1.0..HEAD
patching file app/code/core/Enterprise/PageCache/Model/Processor.php
patching file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
patching file app/code/core/Mage/Catalog/Model/Product/Api/V2.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 294 (offset 7 lines).
patching file app/design/frontend/base/default/template/page/js/cookie.phtml
patching file app/design/frontend/enterprise/default/template/giftregistry/search/form.phtml
  • Em Adapter/Soap.php, a urlencoding é adicionada aos dados de autenticação. Isso não deve ter efeito colateral negativo. Ele garante que o resultado wsdlUrlseja válido. Sem essa alteração, pode-se influenciar o URL
  • Product/Api/V2.php: Aqui estão algumas verificações se os dados passados ​​são um objeto. Isso não deve acontecer em circunstâncias normais.
  • em Request/Http.phpe PageCache/Model/Processor.phpum cheque é adicionado quando chegar a HOST HTTP. Isso parece cobrir as injeções de cabeçalho mencionadas. A verificação se aplica apenas se houver um ;ou ,no host HTTP; portanto, isso deve ser crítico nos sistemas da vida real / não tem efeito colateral negativo.
  • no cookie.phtmlescape é adicionado. Portanto, isso deve ser encaminhado para o seu tema se você substituir esse arquivo
  • semelhante para giftregistry/search/form.phtml

Para resumir, eu diria que a aplicação do adesivo não deve ter efeitos colaterais negativos. Lembre-se de encaminhar a porta para as alterações nos seus .phtmlarquivos.

Alex
fonte
1
Obrigado pela confirmação, a injeção de cabeçalho e o escape do componente de cookie são fáceis de transportar para o CE.
Fiasco Labs
1
Não há necessidade de porta. Existem versões de patch também para CE na área de download.
Alex #
5

O estranho é que o patch EE contém modificações nos seguintes arquivos:

app/code/core/Mage/Core/Controller/Request/Http.php
app/design/frontend/base/default/template/page/js/cookie.phtml

Quando o CE não, para uma versão equivalente.

Presumo que algo esteja faltando nessa SUPEE-6482versão do CE, e um V2 poderá ser lançado em breve.

Antoine Kociuba
fonte
Eu pensei a mesma coisa!
rob3000
2
Sim, você notou certo. Foi o que obtive ao diferenciar os arquivos de instalação 1.9.2.0 e 1.9.2.1. Eu tenho uma instalação CE totalmente corrigida devido a isso, fui adiante e atualizei manualmente os dois arquivos mencionados. O arquivo cookie js também precisa ser corrigido no seu modelo personalizado, se você tiver esse arquivo. Eles provavelmente ignoraram o controlador de solicitações como um patch, pois ele precisaria corrigir um arquivo corrigido anteriormente e não temos nenhum amor pela CE.
Fiasco Labs
1
Mais um motivo para "esperar" alguns dias antes para implantar no ambiente de produção (e usar esses dias para fazer verificações melhores antes de entrar no ar). Hoje, mais uma notificação de atualização no Magento Backend (apenas o aviso sobre a vulnerabilidade de segurança 2 em vez de 4). Enfim, vou esperar até segunda-feira para ir ao vivo, pelo menos.
precisa saber é o seguinte
1
Magento atualizou sua nota de lançamento: merch.docs.magento.com/ce/user_guide/… Alguns patches são efetivamente apenas para EE. Mas eu ainda não entendo por que esses 2 arquivos, núcleo base, não são causa no patch CE, como eles são integrados na CE 1.9.2.1 ...
Antoine Kociuba
4

Patch de lançamento Magento SUPEE-6482 para correção da edição abaixo na edição CE & EE

Para o Magento Community Edition:

  • Inclusão de arquivo carregada automaticamente na API SO Magento
  • Vulnerabilidade de SSRF no arquivo WSDL

Para Magento Enterprise Edition

  • Inclusão de arquivo carregada automaticamente na API SO Magento
  • Vulnerabilidade de SSRF no arquivo WSDL
  • Script entre sites usando cabeçalhos não validados

XSS na pesquisa de registro de presentes

Fazendo mudanças na aula

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Alterações no Mage_Api_Model_Server_Adapter_Soap

             : $urlModel->getUrl('*/*/*');

         if ( $withAuth ) {
-            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);
-            $phpAuthPw = $this->getController()->getRequest()->getServer('PHP_AUTH_PW', false);
-            $scheme = $this->getController()->getRequest()->getScheme();
+            $phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
+            $phpAuthPw = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_PW', false));
+            $scheme = rawurlencode($this->getController()->getRequest()->getScheme());

             if ($phpAuthUser && $phpAuthPw) {
                 $wsdlUrl = sprintf("%s://%s:%s@%s", $scheme, $phpAuthUser, $phpAuthPw,

alterar em Mage_Catalog_Model_Product_Api_V2

     public function create($type, $set, $sku, $productData, $store = null)
     {
-        if (!$type || !$set || !$sku) {
+        if (!$type || !$set || !$sku || !is_object($productData)) {
             $this->_fault('data_invalid');
         }

@@ -243,6 +243,9 @@ class Mage_Catalog_Model_Product_Api_V2 extends Mage_Catalog_Model_Product_Api
      */
     protected function _prepareDataForSave ($product, $productData)
     {
+        if (!is_object($productData)) {
+            $this->_fault('data_invalid');
+        }
         if (property_exists($productData, 'website_ids') && is_array($productData->website_ids)) {
             $product->setWebsiteIds($productData->website_ids);
         }

Veja mais em: http://www.amitbera.com/magento-security-patch-supee-6482/

Amit Bera
fonte
1
Olá Amit Bera (@ amit-bera), onde posso obter o patch SUPEE-6482 na forma de um zip separado do Magento 1.9.2.1?
Andhi Irawan 5/08/15
2
@ Andhi, o magento 1.9.2.1 já foi incluído com o código de correção na estrutura do código, portanto você não precisa aplicar o SUPEE-6482
Amit Bera
1
@ Amit Bera, Se ainda estiver usando o Magento 1.9.1.0, se deseja atualizar para o 1.9.2.1? Quero dizer, só posso instalar o patch SUPEE-6428?
Andhi Irawan
3
Observe que o patch de cabeçalho não validado não está nos patches CE, os seguintes arquivos não são tocados => app/code/core/Mage/Core/Controller/Request/Http.phpe app/design/frontend/base/default/template/page/js/cookie.phtmlestão entre os ausentes. Talvez devêssemos mudar a pergunta no topo para ler: Patch de segurança Magento SUPEE-6482, O que não está corrigido?
Fiasco Labs
1
@ Amit Bera, desculpe, foi adicionado por Magento em Adicionado 04 de agosto de 2015 em magentocommerce.com/download : Download -> Magento Community Edition Patches -> SUPEE-6482
Andhi Irawan
4

Por favor, leia a documentação do Magento nesta versão, a resposta está disponível: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html

ChrisB123
fonte
5
Embora informativo, considere copiar a seção relevante para este segmento. Um link-only-resposta não é a melhor resposta como links têm o hábito de desaparecer (especialmente links da documentação Magento!)
philwinkle
1
@philwinkle - Heh, sim, todos nós já estivemos lá. O MagEbayVaporation (x_x) vincula uma abundância.
Fiasco Labs
2

Esse patch, como outros patches recentes, contém muitas correções de cópia, licença e erros de digitação. Ele também introduz alguns erros de digitação do que vi.

A parte real do patch de segurança parece tratar da higienização das entradas do usuário para 4 possíveis ataques diferentes.

Daniel Smith
fonte