Magento安全补丁SUPEE-6482,已修补了什么?


28

今天04.08.2015,有一个新的安全补丁发布,我和一些同事正在检查该补丁,很高兴就更改内容进行讨论,有人知道什么可能会影响和未打补丁的攻击吗?可能发生的最坏情况是什么?

更新:我只想添加今天发送的magento电子邮件以完成帖子。 Magento电子邮件更新


1
我相信这几天会有总结。但是,如果您已选中它并希望进行讨论,请继续!分享您的想法和发现!
mam08ixo 2015年

2
补丁本身,不。必须检查1.9.2.1的完整安装是否有这些更改,此时,它似乎仅解决了4个安全问题
Fiasco Labs'Aug

2
您将必须进行全面升级,或回传1.9.2.0 => CMS块和小部件的缓存,magento-1921/app/code/core/Mage/Cms/Block/Block.php以及magento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs

2
merch.docs.magento.com/ce/user_guide/…-我只是想知道在过去几天对标头的大量关注之后,何时会发布下一个补丁。在那里!
hakre

2
@hakre-在包含标题之前,我会阅读补丁内容,除非这些标题实际上在API中。完整下载的http控制器和javascript cookie模板中有一些补丁,但6482补丁没有。
Fiasco Labs 2015年

Answers:


13

实际的安全补丁(SUPEE-6482)仅影响以下两个文件,并且是API补丁。

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

完整的1.9.2.1安装完全是另一回事。我将在1.9.2.0和1.9.2.1之间比较源代码,以找出另外两个被修补的项目。

发行说明适用于完整安装程序,您必须检查该修补程序以查看其是否实际上包括发行说明中记录的所有项目。

运行未打补丁的服务器的含义:

  1. 使用无效标题的跨站点脚本=> 缓存中毒
  2. Magento SOAP API中自动加载的文件包含=> 远程代码自动加载
  3. Gift Registry Search中的XSS => Cookie盗窃和用户假冒
  4. WSDL文件中的SSRF漏洞=> 内部服务器信息泄漏和远程文件包含

注意:在完整安装档案文件中修补但未使用修补程序修补的文件,是吗?

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
我认为丢失的文件解决了最关键的“使用未经验证的标题进行跨站点脚本编写”问题。由于Gift Registry是仅EE的功能,“ Gift Registry Seaerch中的XSS”问题似乎被错误地添加到了CE版本的补丁文档中。
Aad Mathijssen,2015年

1
是的,我认为无论如何都应将遗漏的更改应用于我的CE安装就足够重要了,而不必等到Magento弄清楚了并在遇到问题时向我们发送V2补丁。Cookie组件中使用的缓存中毒和未经过滤的用户输入似乎是一个大问题。
Fiasco Labs

1
Magento已更新文档:“使用未验证标题的跨站点脚本”和“ Gift Registry Search中的XSS”问题均标记为“仅适用于Magento Enterprise Edition”。但是与此同时,Magento CE 1.9.2.1确实包含针对“使用未验证标头的跨站点脚本”问题的修补程序,或者至少包含其中一部分。
Aad Mathijssen,2015年

1
呵呵,CE行动上的捷径。CE没有心愿单,但肯定需要通过补丁(而不是文档更改)解决“ Unvalidated Headers”问题。哦,嗯...更多我们所期待的。
Fiasco Labs

3
作为记录-根据我们的测试- 使用未经验证的标头的跨站点脚本不是CE漏洞。如果任何人都可以提供存在CE漏洞的POC,请访问magento.com/security并进行报告。
2015年

9

我详细了解了这些变化以及预期的副作用。

在EE 1.13.1.0的版本中,更改了以下文件:

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
  • 在中Adapter/Soap.php,将urlencoding添加到身份验证数据中。这应该没有负面影响。它确保结果wsdlUrl是有效的。如果不进行此更改,则可能会影响网址
  • Product/Api/V2.php:这是一些检查传递的数据是否是对象。在正常情况下不应发生这种情况。
  • Request/Http.phpPageCache/Model/Processor.php获取HTTP主机时添加了检查。这似乎涵盖了提到的标头注入。该检查仅在HTTP主机中存在;,HTTP主机时适用,因此这在现实生活的系统中应该不重要/没有负面影响。
  • cookie.phtml转义中添加。因此,如果您覆盖该文件,则必须将其转发到您的主题
  • 类似 giftregistry/search/form.phtml

综上所述,我想说应用补丁应该不会有任何负面影响。切记将更改转发到.phtml文件。


1
感谢您的确认,标头注入和cookie组件转义很容易回传到CE。
Fiasco Labs

1
无需移植。下载区域还提供CE的修补程序版本。
亚历克斯(Alex)

5

奇怪的是EE补丁包含对以下文件的修改:

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

如果没有CE,则为等效版本。

我认为该SUPEE-6482CE版本缺少某些内容,并且V2可能会很快发布。


我也这么想!
rob3000

2
是的,您注意到了。这就是我通过比较1.9.2.0和1.9.2.1安装档案得到的。由于这个原因,我安装了完整的CE安装程序,因此我继续手动修补了提到的两个文件。如果其中包含该文件,则还需要在自定义模板中修补js cookie文件。他们可能跳过了请求控制器的补丁程序,因为它必须修补以前修补的文件,而我们没有得到CE的热爱。
Fiasco Labs'Aug

1
在生产环境上进行部署之前需要“等待”几天的另一个原因(并利用这些天进行更好的检查后才能上线)。今天,Magento后端中又有一个更新通知(只是有关2安全漏洞而不是4安全漏洞的通知)。无论如何,我至少要等到星期一才能上线。
DarkCowboy

1
Magento已更新了其发行说明:merch.docs.magento.com/ce/user_guide/… 某些补丁实际上仅是EE。但是我仍然不明白为什么这两个基于核心的文件不在CE补丁中,因为它们已集成在CE 1.9.2.1中...
Antoine Kociuba 2015年

4

Magento发布补丁SUPEE-6482,用于修复CE和EE版本中的以下问题

对于Magento社区版:

  • Magento SOAP API中的自动加载文件包含
  • WSDL文件中的SSRF漏洞

对于Magento企业版

  • Magento SOAP API中的自动加载文件包含
  • WSDL文件中的SSRF漏洞
  • 使用无效标题的跨站点脚本

礼品注册表搜索中的XSS

在课堂上做改变

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

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,

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

详情请访问:http//www.amitbera.com/magento-security-patch-supee-6482/


1
嗨,阿米特·贝拉(@ amit-bera),在哪里可以获取Magento 1.9.2.1单独拉链形式的补丁SUPEE-6482?
Andhi Irawan

2
@ Andhi,magento 1.9.2.1已在其代码结构中包含补丁代码,因此您无需应用SUPEE-6482
Amit Bera

1
@ Amit Bera,如果仍然使用Magento 1.9.1.0是否升级到1.9.2.1?我的意思是,只能安装补丁SUPEE-6428吗?
2015年

3
请注意,未经验证的标头补丁程序不在CE补丁程序中,以下文件未触及=> app/code/core/Mage/Core/Controller/Request/Http.phpapp/design/frontend/base/default/template/page/js/cookie.phtml在丢失的文件中。也许我们应该将顶部的问题更改为:Magento安全补丁SUPEE-6482,修补的内容什么?
Fiasco Labs

1
@对不起,@ Amit Bera已由Magento于2015年8月4日在magentocommerce.com/download中添加:下载-> Magento社区版补丁-> SUPEE-6482
Andhi Irawan

4

5
在提供信息时,请考虑将相关部分复制到此线程中。仅链接的答案不是最佳答案,因为链接具有消失的习惯(尤其是Magento文档链接!)
philwinkle 2015年

1
@philwinkle-嘿,是的,我们都去过那里。MagEbayVaporation(x_x)链接丰富。
Fiasco Labs 2015年

2

与其他最近的补丁程序一样,此补丁程序包含许多副本,许可证和拼写错误修复程序。它还从我所看到的内容中介绍了一些错别字。

实际的安全补丁程序部分似乎解决了针对4种潜在攻击的用户输入清理操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.