OK、誰かがこれを尋ねなければなりません:今日、2015年7月7日、Magento <1.9.2の新しいセキュリティパッチがリリースされました。
お店をできるだけ早く更新してください!
しかし、何が変更されましたか?対象のセキュリティ問題の既知のエクスプロイトはありますか?起こりうる最悪の事態は何ですか?
そして、破ることができるものはありますか?ダウンローダーのディレクトリが欠落している場合、パッチを適用することができなかったSUPEE-5994のように...
OK、誰かがこれを尋ねなければなりません:今日、2015年7月7日、Magento <1.9.2の新しいセキュリティパッチがリリースされました。
お店をできるだけ早く更新してください!
しかし、何が変更されましたか?対象のセキュリティ問題の既知のエクスプロイトはありますか?起こりうる最悪の事態は何ですか?
そして、破ることができるものはありますか?ダウンローダーのディレクトリが欠落している場合、パッチを適用することができなかったSUPEE-5994のように...
回答:
既に述べたように、パッチが適用された脆弱性については、この公式ページ(新しい販売者ドキュメント)で詳細に説明されています:http : //merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
このバンドルには、次のセキュリティ関連の問題に対する保護が含まれています。
- RSSおよび特権エスカレーションによる顧客情報の漏洩
- Magento Connectのリクエストフォージェリがコード実行につながる
- ウィッシュリストのクロスサイトスクリプティング
- カート内のクロスサイトスクリプティング
- ストアパスの開示
- ログファイルの権限が広すぎる
- Adminのクロスサイトスクリプティング
- Orders RSSのクロスサイトスクリプティング
いくつかのショップにパッチを適用した後、これが私が集めたものです。
一部のテーマファイルには、XSS攻撃の可能性を防ぐためにエスケープが追加されたパッチが適用されています。
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
テーマにこれらのテンプレートのいずれかが含まれている場合、または直接変更を加えた場合base/default
(幸運なことに、手間がかかります)、手動でパッチを適用する必要があります。
チェックアウトテンプレートで、すべての出現を置き換えます
$this->getContinueShoppingUrl()
と
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
でwishlist/email/rss.phtml
、交換
$this->helper('wishlist')->getCustomerName()
と
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
でrss/order/details.phtml
、置換
<?php echo $this->__('Customer Name: %s', $_order->getCustomerFirstname()?$_order->getCustomerName():$_order->getBillingAddress()->getName()) ?><br />
<?php echo $this->__('Purchased From: %s', $_order->getStore()->getGroup()->getName()) ?><br />
と
<?php $customerName = $_order->getCustomerFirstname() ? $_order->getCustomerName() : $_order->getBillingAddress()->getName(); ?>
<?php echo $this->__('Customer Name: %s', Mage::helper('core')->escapeHtml($customerName)) ?><br />
<?php echo $this->__('Purchased From: %s', Mage::helper('core')->escapeHtml($_order->getStore()->getGroup()->getName())) ?><br />
.htaccess
ファイルが追加されdownloader/Maged
、downloader/lib
ソースファイルへの直接アクセスが禁止されています。nginxを使用する場合は、同じことを実現するためにこれらのルールを追加する必要があります(この1つについてBen Lessaniに送ってください)。
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
ただしdownloader
、とにかくライブシステムシステムへの展開から除外することをお勧めします。この場合、アクションを実行する必要はありません。
制限された管理者アカウントを使用する場合、サードパーティの拡張機能の一部のメニューは、それらに対して機能しなくなる場合があります。のデフォルトの戻り値Mage_Adminhtml_Controller_Action::_isAllowed()
がからに変更されたtrue
ためMage::getSingleton('admin/session')->isAllowed('admin')
です。管理コントローラーでこのメソッドをオーバーライドしない拡張機能は、ACLを使用しないため、「ALL」特権が必要になりました。
唯一の解決策は、拡張機能にパッチを適用し、このメソッドをすべての管理コントローラーに追加することです。
protected function _isAllowed()
{
return true;
}
または、実際にACLリソースが定義されている場合etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(Phoenix_Moneybookers
この拡張機能が含まれていた1.7などの古いMagentoバージョンでも同じパッチが適用されることがわかります)
この問題の詳細な視点と、欠落しているACLリソースを定義する方法の説明については、「SUPEE-6285のインストール後のアクセス拒否エラー」を参照してください。
メッセージ:
can't find file to patch at input line 899
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/design/frontend/default/modern/template/checkout/cart.phtml app/design/frontend/default/modern/template/checkout/cart.phtml
|index 982ad5a..2bf6b37 100644
|--- app/design/frontend/default/modern/template/checkout/cart.phtml
|+++ app/design/frontend/default/modern/template/checkout/cart.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
理由:default/modern
テーマはインストールから削除されました
解決策:app/design/frontend/default/modern
新しいMagentoダウンロードから追加します(お店と同じバージョンでなければなりません)。:また、このミラーを使用することができますhttps://github.com/firegento/magentoを。その後、パッチを正常に適用した後、テーマを再度削除できます。
メッセージ
patching file downloader/Maged/.htaccess
can't find file to patch at input line 915
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Controller.php downloader/Maged/Controller.php
|index aa9d705..32755d7 100644
|--- downloader/Maged/Controller.php
|+++ downloader/Maged/Controller.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
5 out of 5 hunks ignored
can't find file to patch at input line 976
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Model/Session.php downloader/Maged/Model/Session.php
|index 18020eb..7013c94 100644
|--- downloader/Maged/Model/Session.php
|+++ downloader/Maged/Model/Session.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
patching file downloader/lib/.htaccess
can't find file to patch at input line 1020
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages.phtml downloader/template/connect/packages.phtml
|index 9cca5a6..f42e74e 100644
|--- downloader/template/connect/packages.phtml
|+++ downloader/template/connect/packages.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 1049
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages_prepare.phtml downloader/template/connect/packages_prepare.phtml
|index f74c3df..86aa51b 100644
|--- downloader/template/connect/packages_prepare.phtml
|+++ downloader/template/connect/packages_prepare.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1061
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/login.phtml downloader/template/login.phtml
|index 6e4cd2c..dbbeda8 100644
|--- downloader/template/login.phtml
|+++ downloader/template/login.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1073
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/settings.phtml downloader/template/settings.phtml
|index 13551ac..47ab411 100644
|--- downloader/template/settings.phtml
|+++ downloader/template/settings.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
理由:downloader
ディレクトリがインストールから削除されました
解決策:downloader
新しいMagentoダウンロードから追加します(お店と同じバージョンでなければなりません)。:また、このミラーを使用することができますhttps://github.com/firegento/magentoを。次に、パッチを正常に適用した後、ディレクトリを再度削除できます。
メッセージ:次のようなもの
checking file app/design/frontend/base/default/template/checkout/cart.phtml
Hunk #1 FAILED at 97 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/cart/noItems.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/onepage/failure.phtml
Hunk #1 FAILED at 29 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/rss/order/details.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/wishlist/email/rss.phtml
Hunk #1 FAILED at 25 (different line endings).
1 out of 1 hunk FAILED
理由:ファイルは(LF、Unix 改行)ではなく\r\n
(CRLF、Windows改行)または\r
(CR、Mac 改行)で保存されます\n
。
解決策:単に改行を変換するだけで、テキストエディターまたはIDEでこれが可能になります。
_isAllowed
メソッドを実装していないことに気付きました。幸いなことに、モジュールにACLがあり、メソッドを追加する以外に追加のアクションは必要ありませんでした。また、default/modern
移動されたテーマで最初のエラーメッセージが表示されました(Gitのおかげで犯人も見つかりました)。そのための+1
@ http://blog.philwinkle.com/supee-6285-broken-down/経由
通常、これにはブール値を返す_isAllowed保護メソッドを追加する必要があります。Adminhtml / controllers / Catalog / Category / WidgetControllerへの更新と同様に、このブール値はACLチェックの結果である場合があります。Adminhtml / controllers / AjaxController.phpのように、これはtrueにハードコードされる場合があります
追加した後:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('system/config');
}
サードパーティのコントローラーの1つに、管理セクションが再び「機能」し始めました...
それでは、もう1つのMagentoパッチを入手しますか?これはより大きな問題のようです...
コミュニティ/ローカル拡張機能がたくさんあるapp/code/core/Mage/Adminhtml/Controller/Action.php
場合は、パッチバージョンに応じて666行に影響するSUPEE-6285のこの変更に特に注意を払う必要があります(これはEE 1.14.0.1パッチファイルです)。
protected function _isAllowed()
{
- return true;
+ return Mage::getSingleton('admin/session')->isAllowed('admin');
}
独自の管理リソースを実装しないすべてのカスタムモジュールは上記の変更の影響を受け、問題の管理ユーザーが完全な管理者権限を持たない限り、アクセスは拒否されます。
パッチの別の場所を見ると、含まれているコアモジュールの多くが更新されていることがわかりますが、これは多くのサードパーティモジュールに影響する可能性が高いため、パッチのチェック後、サイト内のサードパーティの拡張機能をテストすることに特に注意を払ってくださいあなたはまだそれらにアクセスできます!
と思われるパッチリリースページは、それが影響を与えるかについての情報で更新されました。
私はまだ本番サイトにインストールしてテストしていません