ตามที่ได้กล่าวไปแล้วช่องโหว่ที่ได้รับการแก้ไขมีการอธิบายรายละเอียดในหน้าอย่างเป็นทางการนี้ (เอกสารสำหรับผู้ค้าใหม่): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
สรุป
บันเดิลนี้มีการป้องกันปัญหาด้านความปลอดภัยดังต่อไปนี้:
- ข้อมูลลูกค้ารั่วไหลผ่าน RSS และการยกระดับสิทธิ์
- ร้องขอการปลอมแปลงใน Magento Connect นำไปสู่การเรียกใช้งานโค้ด
- การเขียนสคริปต์ข้ามไซต์ในรายการโปรด
- การเขียนสคริปต์ข้ามไซต์ในรถเข็น
- การเปิดเผยเส้นทางร้านค้า
- การอนุญาตในไฟล์ล็อกกว้างเกินไป
- การเขียนสคริปต์ข้ามไซต์ในผู้ดูแลระบบ
- การเขียนสคริปต์ข้ามไซต์ในคำสั่ง 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 คุณจะต้องเพิ่มกฎเหล่านี้เพื่อให้ได้เหมือนกัน (ขอบคุณ thx to Ben Lessaniสำหรับอันนี้):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
แต่ฉันแนะนำให้แยกdownloader
ออกจากการปรับใช้กับระบบสดในกรณีนี้คุณไม่จำเป็นต้องดำเนินการใด ๆ
สิทธิ์ของผู้ดูแลระบบ (ACL)
หากคุณใช้บัญชีผู้ดูแลระบบที่ถูก จำกัด บางเมนูของส่วนขยายของบุคคลที่สามอาจไม่ทำงานสำหรับพวกเขาอีกต่อไป เหตุผลก็คือว่าค่าตอบแทนเริ่มต้น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
ใน Magento เวอร์ชั่นที่เก่ากว่าเช่น 1.7 ซึ่งส่วนขยายนี้รวมอยู่ด้วย)
สำหรับมุมมองรายละเอียดเพิ่มเติมเกี่ยวกับปัญหานี้และคำอธิบายวิธีกำหนดทรัพยากร 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
สาเหตุ:ไฟล์ถูกจัดเก็บด้วย\r\n
(CRLF, ตัวแบ่งบรรทัด Windows) หรือ\r
(CR, ตัวแบ่งบรรทัด Mac) แทน\n
(LF, ตัวแบ่งบรรทัด Unix)
วิธีแก้ไข:เพียงแปลงตัวแบ่งบรรทัดตัวแก้ไขข้อความหรือ IDE ของคุณควรมีความสามารถในสิ่งนี้