2015年4月8日、新しいセキュリティパッチがリリースされました。同僚と私はパッチをチェックしていましたが、何が変更されたかについて議論するのはいつでも嬉しいことです。起こりうる最悪のことは何ですか?
magento-1921/app/code/core/Mage/Cms/Block/Block.php
とmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
2015年4月8日、新しいセキュリティパッチがリリースされました。同僚と私はパッチをチェックしていましたが、何が変更されたかについて議論するのはいつでも嬉しいことです。起こりうる最悪のことは何ですか?
magento-1921/app/code/core/Mage/Cms/Block/Block.php
とmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
回答:
実際のセキュリティパッチ(SUPEE-6482)は、次の2つのファイルにのみ影響し、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の完全インストールはまったく別の問題です。パッチが適用された他の2つの項目を把握するために、1.9.2.0と1.9.2.1の間でソースコードを比較しました。
リリースノートはフルインストーラー用です。パッチをチェックして、リリースノートに記載されているすべてのアイテムが実際に含まれているかどうかを確認する必要があります。
パッチ未適用のサーバーを実行することの意味:
注:パッチが適用されていない完全インストールアーカイブにパッチが適用されたファイルは、うーん?
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()) ?>';
変更の詳細と、どのような副作用が予想されるかを見てみました。
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
が有効であることを確認します。この変更がなければ、URLに影響を与える可能性がありますProduct/Api/V2.php
:渡されたデータがオブジェクトである場合、いくつかのチェックがあります。これは通常の状況では発生しません。Request/Http.php
およびPageCache/Model/Processor.php
HTTPのHOSTを取得するときにチェックが追加されます。これは、前述のヘッダーインジェクションをカバーしているようです。このチェックは、HTTPホストがある;
場合または,
HTTPホストにある場合にのみ適用されるため、実際のシステムでは重要ではなく、悪影響はありません。cookie.phtml
エスケープ追加されます。そのため、ファイルを上書きする場合は、これをテーマに転送する必要がありますgiftregistry/search/form.phtml
まとめると、パッチを適用しても悪影響はないはずです。変更を.phtml
ファイルに転送することを忘れないでください。
奇妙なことに、EEパッチには次のファイルの変更が含まれています。
app/code/core/Mage/Core/Controller/Request/Http.php
app/design/frontend/base/default/template/page/js/cookie.phtml
CEが対応していない場合、同等のバージョン。
そのSUPEE-6482
CEバージョンには何か欠けているものがあり、V2が間もなくリリースされると思います。
Magento Community Editionの場合:
Magento Enterprise Editionの場合
ギフトレジストリ検索の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/をご覧ください。
app/code/core/Mage/Core/Controller/Request/Http.php
し、app/design/frontend/base/default/template/page/js/cookie.phtml
行方不明の一つです。上部の質問を変更して、MagentoセキュリティパッチSUPEE-6482、パッチを適用していないものを変更する必要があるかもしれません。
このリリースに関するMagentoのドキュメントをお読みください。答えは次のとおりです。http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html