SUPEE-6285は、Magento Community Edition 1.9.2.0より前のバージョン全てに対するセキュリティパッチです。
Community Edition 1.6.0.0〜1.9.1.1までのバージョンについては、適用することが強く推奨されています。

ところが、このパッチを適用しても、対応が不十分になる箇所が出てくる恐れがあります。
このエントリではどの箇所が対応不十分になるのかを解説し、対処法をご説明します。

SUPEE−6285で変更を受けるファイル

SUPEE-6285を適用すると、以下のファイルが更新されます。 

  • app/Mage.php
  • app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php
  • app/code/core/Mage/Adminhtml/Controller/Action.php
  • app/code/core/Mage/Adminhtml/controllers/AjaxController.php
  • app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php
  • app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php
  • app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
  • app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php
  • app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php
  • app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php
  • app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php
  • app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
  • app/code/core/Mage/Adminhtml/controllers/Customer/System/Config/ValidatevatController.php
  • app/code/core/Mage/Adminhtml/controllers/JsonController.php
  • app/code/core/Mage/Adminhtml/controllers/NotificationController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php
  • app/code/core/Mage/Adminhtml/controllers/Report/TagController.php
  • app/code/core/Mage/Adminhtml/controllers/ReportController.php
  • app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php
  • app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php
  • app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php
  • app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php
  • app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php
  • app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php
  • app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php
  • app/code/core/Mage/Adminhtml/controllers/TagController.php
  • app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php
  • app/code/core/Mage/Api2/controllers/Adminhtml/Api2/AttributeController.php
  • app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php
  • app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php
  • app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php
  • app/code/core/Mage/Checkout/controllers/MultishippingController.php
  • app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php
  • app/code/core/Mage/Core/Block/Abstract.php
  • app/code/core/Mage/ImportExport/Model/Abstract.php
  • app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php
  • app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php
  • app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php
  • app/code/core/Mage/Rss/controllers/CatalogController.php
  • app/code/core/Mage/Rss/controllers/OrderController.php
  • app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php
  • app/code/core/Mage/Widget/controllers/Adminhtml/WidgetController.php
  • app/design/frontend/base/default/template/checkout/cart.phtml
  • app/design/frontend/base/default/template/checkout/cart/noItems.phtml
  • app/design/frontend/base/default/template/checkout/onepage/failure.phtml
  • app/design/frontend/base/default/template/rss/order/details.phtml
  • app/design/frontend/base/default/template/wishlist/email/rss.phtml
  • app/design/frontend/default/modern/template/checkout/cart.phtml
  • app/design/frontend/rwd/default/template/checkout/cart.phtml
  • downloader/Maged/.htaccess
  • downloader/lib/.htaccess
  • errors/processor.php

このうち、フロントエンド側に影響するのは以下のファイルです。 

  • app/design/frontend/base/default/template/checkout/cart.phtml
  • app/design/frontend/base/default/template/checkout/cart/noItems.phtml
  • app/design/frontend/base/default/template/checkout/onepage/failure.phtml
  • app/design/frontend/base/default/template/rss/order/details.phtml
  • app/design/frontend/base/default/template/wishlist/email/rss.phtml
  • app/design/frontend/default/modern/template/checkout/cart.phtml
  • app/design/frontend/rwd/default/template/checkout/cart.phtml

これらのファイルがサードパーティ製のテーマや、カスタムテーマの側で改変されている場合は、個別に調整が必要になります。

どのような対応が必要なのか

先ほどのファイルのどれかを開いて内容を確認すると、以下のように相違があると思います。 

適用前: 

echo $this->__('Click here to continue shopping.', $this->getContinueShoppingUrl())

適用後:

echo $this->__('Click here to continue shopping.', Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl()))

つまり、”$this->getContinueShoppingUrl()”を Mage::helper('core')->quoteEscape() で囲い、URLがHTMLとして出力される際にエスケープする必要性がある、というわけです。

対応が漏れるとどうなるのか

対応が漏れたまま放置すると、以下の問題が発生する恐れがあります。

  • 「お買い物を続ける」リンクに対するXSS(クロス・サイト・スクリプティング)

脆弱性を放置し続けると、顧客情報の漏洩や、コンテンツの改竄などの危険性があるため、早めに対処することが望ましいといえます。

直し方がわからない場合は

有償サポートにはなりますが、弊社にて調整を承ることが可能です。
ご不安な方はお問い合わせください。