Magento patch di sicurezza SUPEE-6482, Cos'è la patch?


28

Oggi 04.08.2015 è stata rilasciata una nuova patch di sicurezza, alcuni colleghi e io stavamo controllando la patch ed è sempre bello avere qualche discussione su cosa è cambiato, anche qualcuno sa quali sono i possibili attacchi che potrebbero influenzare e fare acquisti senza patch? Qual è il peggio che potrebbe succedere?

Aggiornamento: volevo solo aggiungere l'e-mail magento inviata oggi per completare il post. Aggiornamento email Magento


1
Sono sicuro che ci sarà un riassunto in questi giorni. Tuttavia, se lo hai già verificato e vuoi avere una discussione, vai avanti! Condividi i tuoi pensieri e i risultati!
mam08ixo,

2
La patch stessa, no. L'installazione completa per 1.9.2.1 dovrebbe essere esaminata per tali modifiche, a questo punto sembra affrontare solo 4 problemi di sicurezza
Fiasco Labs

2
Dovrai eseguire un aggiornamento completo o backport 1.9.2.0 => CMS Block e Widget nella 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/… - Mi sono appena chiesto quando arriverà la prossima patch dopo che negli ultimi giorni ci siamo concentrati così tanto sulle intestazioni. Ed eccolo qui!
hakre,

2
@hakre - Prima di includere le intestazioni avrei letto il contenuto della patch, a meno che quelle intestazioni non fossero effettivamente nell'API. Il download completo ha alcune patch nel controller http e nel modello di cookie javascript, ma la patch 6482 no.
Fiasco Labs

Risposte:


13

La patch di sicurezza effettiva ( SUPEE-6482 ) riguarda solo i due file seguenti ed è una patch API.

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

L'installazione completa 1.9.2.1 è una questione completamente diversa. Differirei il codice sorgente tra 1.9.2.0 e 1.9.2.1 per capire gli altri due elementi che sono stati patchati.

Le note di rilascio sono per il programma di installazione completo, è necessario controllare la patch per vedere se include effettivamente tutti gli elementi indicati nelle note di rilascio.

Implicazioni sull'esecuzione di un server senza patch:

  1. Scripting tra siti utilizzando intestazioni non convalidate => Avvelenamento da cache
  2. Inclusione dei file caricati automaticamente nell'API SOAP Magento => Caricamento automatico del codice remoto
  3. XSS in Ricerca registro regali => Furto di cookie e rappresentazione dell'utente
  4. Vulnerabilità SSRF nel file WSDL => Perdita di informazioni sul server interno e inclusione del file remoto

NOTA: file corretti nell'archivio completo dell'installazione che non sono corretti con la patch, hmm?

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()) ?>';

5
Penso che i file mancanti risolvano il problema più critico "Scripting cross-site utilizzando intestazioni non convalidate". Il problema "XSS in Gift Registry Seaerch" sembra essere stato erroneamente aggiunto alla documentazione della patch per la versione CE, poiché il registro dei regali è una funzionalità solo EE.
Aad Mathijssen,

1
Sì, ho pensato che fosse abbastanza importante applicare le modifiche mancanti alla mia installazione CE e non aspettare che Magento lo scoprisse e ci inviasse una patch V2 quando ci aggirano. L'avvelenamento da cache e l'input dell'utente non filtrato utilizzato nei componenti dei cookie sembrano un grosso problema.
Fiasco Labs,

1
Magento ha aggiornato la documentazione: entrambi i problemi "Scripting tra siti che utilizzano intestazioni non convalidate" e "XSS nella ricerca del registro regali" sono contrassegnati come "Solo per Magento Enterprise Edition". Ma nel frattempo, Magento CE 1.9.2.1 contiene correzioni per il problema "Scripting tra siti che utilizzano intestazioni non convalidate", o almeno una parte di esso.
Aad Mathijssen,

1
Heh, il cortocircuito CE in azione. CE non ha la lista dei desideri, ma ha sicuramente bisogno del problema "Intestazioni non convalidate" per andare via tramite patch, non per modificare la documentazione. Oh, beh ... più di quello che ci aspettiamo.
Fiasco Labs

3
Per la cronaca, secondo i nostri test, lo scripting cross-site che utilizza intestazioni non convalidate NON è una vulnerabilità CE. Se qualcuno può fornire un POC in presenza di una vulnerabilità CE, visitare il sito Web magento.com/security e segnalarlo.
benmarks

9

Osservo i cambiamenti nei dettagli e quali effetti collaterali devono aspettarsi.

Nella versione per EE 1.13.1.0 sono cambiati i seguenti file:

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
  • In Adapter/Soap.php, urlencoding viene aggiunto ai dati di autenticazione. Questo non dovrebbe avere effetti collaterali negativi. Assicura che il risultato wsdlUrlsia valido. Senza questa modifica, si potrebbe influenzare l'URL
  • Product/Api/V2.php: Ecco alcuni controlli se i dati passati sono un oggetto. Ciò non dovrebbe accadere in circostanze normali.
  • in Request/Http.phpe PageCache/Model/Processor.phpsi aggiunge un controllo quando ricevendo il HOST HTTP. Questo sembra coprire le iniezioni di intestazione menzionate. Il controllo si applica solo se è presente un ;o, nell'host HTTP, quindi questo dovrebbe essere acritico nei sistemi di vita reale / senza effetti collaterali negativi.
  • nel cookie.phtml fuga viene aggiunto. Pertanto, se si sovrascrive quel file, questo deve essere trasferito sul tema
  • simile per giftregistry/search/form.phtml

Per riassumere, direi che l'applicazione del cerotto non dovrebbe avere effetti collaterali negativi. Ricorda di inoltrare le modifiche ai tuoi .phtmlfile.


1
Grazie per la conferma, l'iniezione dell'intestazione e la fuga dei componenti dei cookie sono facili da riportare in CE.
Fiasco Labs

1
Non c'è bisogno di port. Esistono versioni di patch anche per CE nell'area download.
Alex,

5

La cosa strana è che la patch EE contiene modifiche sui seguenti file:

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

Quando quello CE no, per una versione equivalente.

Presumo che manchi qualcosa in quella SUPEE-6482versione CE, e un V2 potrebbe essere rilasciato presto.


Ho pensato la stessa cosa!
rob3000,

2
Sì, hai notato bene. Questo è ciò che ho ottenuto diffondendo gli archivi di installazione 1.9.2.0 e 1.9.2.1. A causa di ciò ho un'installazione CE completamente patchata, sono andata avanti e ho patchato manualmente i due file citati. Il file cookie js deve essere patchato anche nel tuo modello personalizzato se hai quel file. Probabilmente hanno saltato il controller della richiesta come patch perché avrebbe dovuto patchare un file precedentemente patchato e non ci piaceva CE.
Fiasco Labs,

1
Un motivo in più per "aspettare" alcuni giorni prima di distribuirlo nell'ambiente di produzione (e usare questi giorni per fare controlli migliori prima di passare al live). Oggi, un'altra notifica di aggiornamento in Magento Backend (solo l'avviso sulla vulnerabilità di sicurezza 2 anziché 4). Ad ogni modo, aspetterò fino a lunedì per andare in diretta, almeno.
DarkCowboy,

1
Magento ha aggiornato la nota di rilascio: merch.docs.magento.com/ce/user_guide/… Alcune patch sono effettivamente solo EE. Ma ancora non capisco perché quei 2 file, basati sul core, non siano interessati nella patch CE, poiché sono integrati nella CE 1.9.2.1 ...
Antoine Kociuba

4

Patch di rilascio Magento SUPEE-6482 per la correzione del problema di seguito nell'edizione CE ed EE

Per Magento Community Edition:

  • Inclusione di file caricata automaticamente nell'API SOAP Magento
  • Vulnerabilità SSRF nel file WSDL

Per Magento Enterprise Edition

  • Inclusione di file caricata automaticamente nell'API SOAP Magento
  • Vulnerabilità SSRF nel file WSDL
  • Scripting tra siti utilizzando intestazioni non convalidate

XSS nella ricerca del registro regali

Fare il cambiamento in classe

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Modifiche in 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,

cambia in 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);
         }

Vedi di più su: http://www.amitbera.com/magento-security-patch-supee-6482/


1
Ciao Amit Bera (@ amit-bera), dove posso trovare la patch SUPEE-6482 sotto forma di una zip separata di Magento 1.9.2.1?
Andhi Irawan,

2
@ Andhi, magento 1.9.2.1 è già stato incluso il codice patch nella struttura del codice, quindi non è necessario applicare SUPEE-6482
Amit Bera

1
@ Amit Bera, se stai ancora usando Magento 1.9.1.0 se eseguire l'aggiornamento a 1.9.2.1? Voglio dire, posso installare solo la patch SUPEE-6428?
Andhi Irawan,

3
Si noti che la patch di intestazione non convalidata non si trova nelle patch CE, i seguenti file non vengono toccati => app/code/core/Mage/Core/Controller/Request/Http.phpe app/design/frontend/base/default/template/page/js/cookie.phtmlsono tra quelli mancanti. Forse dovremmo cambiare la domanda in alto per leggere: patch di sicurezza Magento SUPEE-6482, che cosa non è patchato?
Fiasco Labs

1
@ Amit Bera, scusa, è stato aggiunto da Magento il 4 agosto 2015 aggiunto in magentocommerce.com/download : Download -> Patch di Magento Community Edition -> SUPEE-6482
Andhi Irawan,

4

5
Mentre informativo prendere in considerazione la copia della sezione pertinente in questo thread. Una risposta di solo collegamento non è la migliore risposta poiché i collegamenti hanno l'abitudine di scomparire (in particolare i collegamenti di documentazione Magento!)
philwinkle

1
@philwinkle - Heh, sì, siamo stati tutti lì. MagEbayVaporation (x_x) collega a bizzeffe.
Fiasco Labs,

2

Questa patch, come altre patch recenti, contiene molte correzioni di copia, licenza e errore di battitura. Presenta anche alcuni errori di battitura da quello che ho visto.

La parte effettiva della patch di sicurezza sembra indirizzare la sanificazione dell'input dell'utente per 4 diversi potenziali attacchi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.