SUPEE-9767, modman และ symlink


16

ฉันต้องการติดตั้งร้าน Magento ด้วย SUPEE-9767 เอกสารสุภี-9767บอกให้ผมปิดการใช้งานการตั้งค่าก่อนที่จะใช้แพทช์ symlinks:

ก่อนที่จะใช้โปรแกรมแก้ไขหรืออัปเกรดเป็นรุ่นล่าสุดตรวจสอบให้แน่ใจว่าได้ปิดใช้งานการตั้งค่า Symlinks ... การตั้งค่าหากเปิดใช้งานจะแทนที่การตั้งค่าไฟล์การกำหนดค่าและการเปลี่ยนแปลงจะต้องแก้ไขฐานข้อมูลโดยตรง

แต่ฉันใช้modmanเพื่อจัดการโมดูลและเนื่องจากบางโมดูลกำลังใช้ไฟล์เทมเพลตการตั้งค่า Symlinks จะเปิดใช้งานตามคำแนะนำใน README ของ modman การเปิดใช้งานการตั้งค่า Symlinks เป็นหนึ่งในโพสต์ใน Security Patch SUPEE-9767 - เป็นไปได้หรือไม่ แนะนำ (ฉันไม่สามารถแสดงความคิดเห็นในโพสต์ได้เนื่องจากฉันเป็นผู้ใช้ใหม่)?

ผู้ใช้ที่ใช้ modman เพื่อจัดการโมดูล Magento 1.x ควรตรวจสอบให้แน่ใจว่าพวกเขาไม่ได้ปิดการใช้งาน symlink เพราะจะเป็นการปิดการใช้งานโมดูล modman

หากฉันเปิดใช้งานการตั้งค่า Symlinks ไว้ร้านค้าจะไม่ปรากฏ APPSEC-1281: การเรียกใช้โค้ดจากระยะไกลผ่าน symlinkภัยคุกคามความปลอดภัยที่แพตช์นี้มีไว้เพื่อแก้ไขหรือไม่

มีวิธีอื่นในการใช้ modman กับไฟล์เทมเพลตหลังจากแพทช์นี้หรือไม่? (ฉันรู้ว่าตัวเลือก "Mage / Core / Block / Template.php" รุ่นแพตช์ "ที่ README ของ modman กล่าวถึง แต่การปะแก้ไฟล์หลักดูเหมือนจะเป็นอันตราย)


1
ฉันใช้ Modman และนักแต่งเพลงในโครงการของฉัน ฉันไม่อยากจะเชื่อมานานหลายปีแล้วว่าตัวเลือก Symlinks ใน Magento ไม่ถือเป็นระเบิด ทันใดนั้นมันก็เป็นระเบิด! การเปลี่ยนแปลงนี้โดยไม่มีการแจ้งเตือนและคำอธิบายใด ๆ จะสร้างปัญหาให้กับคนจำนวนมาก น่าเศร้าเกี่ยวกับ Modman และนักแต่งเพลงในอนาคตใน Magento
ADDISON74

1
นั่นเป็นความท้าทาย หากคุณยินดีที่จะทำการลงทุนการสร้างกระบวนการสร้างที่สร้างสิ่งประดิษฐ์ที่ผสาน (ไม่มีสัญลักษณ์) เป็นวิธีที่ดีมาก
โจเซฟที่ SwiftOtter

บทความที่ดีเกี่ยวกับเรื่องนี้สามารถพบได้ที่tomlankhorst.nl/ …ซึ่งเขายังอธิบายถึงวิธีการกำจัด "เปิดใช้งาน Symlinks" - คำแนะนำที่ได้รับใน Magento 1.9.3.4
ehannes

คำตอบ:


14

นี่คือคำชี้แจงบางอย่างเกี่ยวกับการเปลี่ยนแปลงนี้:

ก่อนอื่นให้อ่านคำอธิบายของ Peter O'Callaghan สิ่งนี้จะทำให้คุณเข้าใจมากขึ้น: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

อีกหนึ่งการอ่านที่น่าสนใจคือการโพสต์นี้โดย Max Chadwick https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

การดัดแปลงนี้เป็นการเรียกเนื้อหาที่อัปโหลดได้ (เช่นภาพ) ผ่านคำสั่งเทมเพลต

ปัญหาที่เกี่ยวข้องกับ symlink นั้นจะใช้ประโยชน์ได้เฉพาะกับการเข้าถึงของผู้ดูแลระบบและ Magento ได้เพิ่มการป้องกันเพิ่มเติมเกี่ยวกับการอัพโหลดภาพ

โปรดทราบว่าพวกเขามีการป้องกันวิธีที่รู้จักในการใช้ประโยชน์นอกเหนือจากการตั้งค่าเอง

ดังนั้นหากคุณเข้าใจความเสี่ยงที่เกี่ยวข้องคุณสามารถเปิดใช้งาน symlink ได้

หากคุณต้องการเปิดใช้งานพวกเขาสำหรับการติดตั้งใหม่คุณสามารถเรียกใช้:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";

ถ้าฉันเปิดใช้งาน symlink ฉันจะป้องกันร้านค้าจาก "APPSEC-1281: การเรียกใช้โค้ดจากระยะไกลผ่าน symlinks" ได้อย่างไร
ehannes

@ehannes โดยปกป้อง acces ให้กับแบ็กเอนด์ของคุณเพื่อเริ่มต้นด้วยการหาประโยชน์ต้องใช้การเข้าถึงแบ็กเอนด์ ยิ่งไปกว่านั้นการอัปโหลดภาพตอนนี้มีการตรวจสอบการโทรกลับพิเศษ
Raphael ที่ Digital Pianism

3
การเข้าถึงแบบผู้ดูแลระบบหมายความว่าคุณสามารถเข้าถึงอินเทอร์เฟซแบ็กเอนด์ของ Magento ทั้งหมด ใครสนใจเกี่ยวกับการหาช่องโหว่ในขั้นตอนนี้ที่พบในสคริปต์รูปภาพที่อัปโหลด ผู้ใช้ที่เป็นอันตรายสามารถลบผลิตภัณฑ์ทั้งหมดของคุณสามารถทำสิ่งที่เป็นไปไม่ได้ การสนทนาควรเริ่มต้นด้วย "ถ้าผู้ใช้รายนี้ได้รับสิทธิ์ผู้ดูแลระบบเพราะผู้ดูแลระบบที่แท้จริงนั้นโง่ไม่ปกป้องแบ็กเอนด์ในหลาย ๆ ด้าน"
ADDISON74


2
Peter O'Callaghan เขียนว่า: "ดังนั้นหากใครบางคนจัดการเพื่อเข้าถึงแผงผู้ดูแลระบบของคุณพวกเขาสามารถทำการรวมที่เป็นอันตรายเพื่อให้ได้ RCE" นี่เป็นข้อสรุปทั่วไปในการสนทนานี้ ดังที่ได้กล่าวไว้ก่อนหน้านี้หากผู้ใช้ที่เป็นอันตรายมีสิทธิ์เข้าถึงแผงผู้ดูแลระบบของคุณมีสิ่งอื่นที่น่ากังวลกว่า RCE หากใครมีสิ่งที่จะเพิ่มในการสนทนาโปรดทำ อย่างไรก็ตามฉันคิดว่าคุณได้ทำสิ่งต่าง ๆ ให้ชัดเจนยิ่งขึ้น @RaphaelatDigitalPianism และฉันจะยอมรับคำตอบนี้
ehannes

6

ปัญหาไม่ได้ symlinks ../../../../../media/tmp/hahaha.pngปัญหาก็คือเส้นทางที่เข้าถึงได้ถึงระดับเช่น หากฉันผิดโปรดแจ้งให้ฉันทราบ "แก้ไขปัญหา" มีชื่อว่า "อนุญาตให้ symlinks" realpath()และช่วยให้คนพิการนี้การตรวจสอบซึ่งได้รับการดำเนินการโดยใช้ ในความคิดของฉันการแก้ไขที่ปลอดภัยมีประสิทธิภาพมากขึ้นและยังเข้ากันได้กับ symlink คือการใช้strpos($path, '..')และ / หรือเพื่อตรวจสอบว่าrealpath()ตรงกับไดเรกทอรีที่มีความเสี่ยงเช่นmediaและvarและหากมีการใช้งานเช่นนี้คุณไม่จำเป็นต้องกำหนดค่ามันสามารถเปิดใช้งานได้ตลอดเวลาและยังไม่ทำลายร้านค้านับพัน

ไม่ว่าผู้ใช้เว็บเซิร์ฟเวอร์ของคุณไม่ควรมีสิทธิ์เข้าถึงการเขียนไฟล์ในไดเรกทอรีซอร์สโค้ด (เช่น Magento Connect ทำ ... ) ดังนั้นจึงเป็นอีกวิธีหนึ่งในการป้องกันไม่ให้มีการเขียนโค้ดที่เป็นอันตรายและดำเนินการเป็นเทมเพลตบล็อก

ดังนั้นการโจมตีบน symlink นี้จึงผิดพลาดและมีการแก้ไขที่ดีกว่า ในความเป็นจริงฉันให้หนึ่งปีที่ผ่านมาและยังมีลิงก์ไปยัง modman github README


0

หากในไฟล์พิเศษของนักแต่งเพลงของคุณคุณตั้งค่า magento-deploystrategy เพื่อคัดลอกไฟล์ของคุณจะถูกคัดลอกจากโฟลเดอร์ผู้จัดจำหน่ายมากกว่า Symlinks

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

จากนั้นคุณสามารถแก้ไข core_config_data ของคุณเพื่อตั้งค่าของ dev / template / allow_symlink เป็น 0

ทรัพยากรสำหรับข้อมูล


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.