2 คะแนน โดย GN⁺ 2024-12-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

บทนำ

  • RyotaK วิศวกรความปลอดภัยจาก Flatt Security Inc. ค้นพบช่องโหว่ด้านความปลอดภัยในกระบวนการอัปเกรดเฟิร์มแวร์ของ OpenWrt
  • OpenWrt เป็นเฟิร์มแวร์บนพื้นฐาน Linux สำหรับอุปกรณ์ฝังตัว และได้รับความนิยมอย่างมากโดยเฉพาะกับเราเตอร์

sysupgrade.openwrt.org

  • sysupgrade.openwrt.org เป็นบริการออนไลน์ที่ช่วยให้ผู้ใช้เลือกแพ็กเกจที่ต้องการเพื่อสร้างอิมเมจเฟิร์มแวร์ใหม่ได้
  • กระบวนการสร้างอิมเมจจากซอร์สโค้ดที่ผู้ใช้ส่งเข้ามาอาจก่อให้เกิดปัญหาด้านความปลอดภัยได้

การแทรกคำสั่ง

  • เซิร์ฟเวอร์ sysupgrade.openwrt.org เป็นโครงการโอเพนซอร์ส โดยซอร์สโค้ดโฮสต์อยู่ที่ openwrt/asu
  • แม้เซิร์ฟเวอร์จะใช้คอนเทนเนอร์เพื่อแยกสภาพแวดล้อมการบิลด์ แต่ก็พบช่องโหว่ที่ทำให้สามารถรันคำสั่งตามอำเภอใจผ่านข้อมูลนำเข้าของผู้ใช้ได้

การชนกันของ SHA-256

  • ในกระบวนการสร้างแฮชของคำขอ มีการตัดแฮช SHA-256 ให้เหลือ 12 ตัวอักษรเพื่อนำไปใช้งาน
  • ผู้โจมตีสามารถหลอกเซิร์ฟเวอร์ให้ส่งคืนบิลด์อาร์ติแฟกต์ที่ไม่ถูกต้องได้ผ่านการชนกันของแฮช

การ brute-force SHA-256

  • มีการพัฒนาโปรแกรมสำหรับ brute-force แฮชบน GPU โดยใช้ OpenCL แต่ประสิทธิภาพไม่ดีนัก
  • จากนั้นจึงใช้ Hashcat และสามารถค้นหาการชนกันแบบ 12 ตัวอักษรได้สำเร็จ

การรวมสองการโจมตีเข้าด้วยกัน

  • การโจมตีเกิดขึ้นโดยหาคำสั่งแทรกเพย์โหลดที่มีแฮชตรงกับรายการแพ็กเกจที่ถูกต้องตามกฎหมาย
  • ผู้โจมตีสามารถบังคับให้ผู้ใช้อัปเกรดไปเป็นเฟิร์มแวร์อันตรายได้

การรายงานปัญหา

  • หลังจากรายงานปัญหาให้ทีม OpenWrt ทราบ บริการถูกระงับชั่วคราวและแก้ไขอย่างรวดเร็ว
  • มีการออกประกาศให้ผู้ใช้ตรวจสอบว่าอุปกรณ์ของตนไม่ได้รับความเสียหาย

บทสรุป

  • บริการ sysupgrade.openwrt.org สามารถถูกทำให้เสียหายได้ผ่านการแทรกคำสั่งและการชนกันของ SHA-256
  • ผู้เขียนขอบคุณทีม OpenWrt สำหรับการตอบสนองอย่างรวดเร็ว และการแจ้งปัญหาให้ผู้ใช้ทราบอย่างทันท่วงที

โฆษณา

  • Flatt Security ให้บริการประเมินความปลอดภัยและการทดสอบเจาะระบบ พร้อมมอบส่วนลดพิเศษเพื่อฉลองการอัปเดตหน้าเว็บใหม่
  • นอกจากนี้ยังมี Shisho Cloud ซึ่งเป็นเครื่องมือประเมินความปลอดภัยที่ทรงพลัง

1 ความคิดเห็น

 
GN⁺ 2024-12-10
ความเห็นจาก Hacker News
  • การทำให้การรันโค้ดที่ปรับเฉพาะผู้ใช้หรืออุปกรณ์แต่ละเครื่องเป็นเรื่องปกตินั้นมีปัญหา เพราะไม่สามารถตรวจสอบได้ และยืนยันไม่ได้ว่าไม่ได้สร้างบิลด์ที่มีแบ็กดอร์รวมอยู่

    • จึงสำคัญที่จะใช้บิลด์เดียวกันกับ xz-utils หรือใช้บิลด์ที่เปิดให้ผู้วิจัยด้านความปลอดภัยตรวจสอบได้ว่ามีการแทรกซึมห่วงโซ่อุปทานหรือไม่
    • Mozilla เคยพยายามบันทึกรีลีสบิลด์แบบสาธารณะลงใน Merkle tree แต่โครงการนี้ถูกยุติ
    • Google เขียนระบบรองรับสำหรับบิลด์เฟิร์มแวร์ของ Pixel แต่แอปที่เผยแพร่ผ่าน Google Play Store อาจยังมีความเสี่ยง
    • Apple แย่กว่า Google เพราะไม่ได้ให้ความโปร่งใสเกี่ยวกับบิลด์ที่ปรับเฉพาะสำหรับอุปกรณ์แต่ละเครื่อง
    • ที่เก็บ ebuild ของ Gentoo เป็นตัวอย่างของ binary transparency ที่ทำได้ดี และเป็นหนึ่งใน Merkle tree สำหรับซอฟต์แวร์โอเพนซอร์สที่ใหญ่และกระจายตัวมากที่สุด
  • การใช้ ".join" อาจมีความเสี่ยง

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

    • ปัญหาถูกแก้ภายใน 3 ชั่วโมง และไม่ปล่อยให้ลูกค้าต้องรอแพตช์นาน 6 เดือน
    • ไม่ฟ้องร้องคนที่รายงานปัญหา
    • ไม่บอกให้ผู้ใช้ทิ้งอุปกรณ์ที่ "ล้าสมัย" แต่ยังใช้งานได้สมบูรณ์
  • คำว่า "supply chain" ไม่ปรากฏในโพสต์บล็อก

    • "supply chain" คือระบบโลจิสติกส์ที่ซับซ้อนซึ่งเปลี่ยนวัตถุดิบให้เป็นสินค้าสำเร็จรูปและกระจายไปยังผู้บริโภคปลายทาง
    • มีคำถามว่านี่เป็นระบบสำหรับผู้ให้บริการเชิงพาณิชย์ของ OpenWRT หรือเป็นระบบสำหรับผู้บริโภคปลายทาง
  • เครื่องมือโอเพนซอร์สถูกดัดแปลงไปใช้นอกเหนือจากวัตถุประสงค์ดั้งเดิม

    • บริษัทใหญ่จะเลือกฟ้องร้องเพื่อจัดการปัญหา และจะไม่เผยแพร่แพตช์ออกมาเด็ดขาด
    • หลังได้รับข้อมูล OpenWRT ได้นำบริการที่ไม่ปลอดภัยออฟไลน์ และหลังยืนยันรายงานก็ปล่อยแพตช์ภายใน 3 ชั่วโมง
  • สงสัยว่าไอเดียการตัดแฮชให้สั้นลงเกิดขึ้นได้อย่างไร

    • ยากที่จะเข้าใจว่ามันมีเป้าหมายหรือข้อดีอะไร
  • แปลกใจที่การหา collision แบบสั้นต้องใช้พลัง GPU มากขนาดนั้น

    • มีคำถามว่าค่าใช้จ่าย 40k ต่อเดือนสำหรับการวิเคราะห์ความปลอดภัยถือว่าเหมาะสมหรือไม่
    • มีคำถามว่านักวิจัยด้านความปลอดภัยที่เก่งมากสามารถมีรายได้ราว 500k ต่อปีได้หรือไม่
  • สังเกตได้ทันทีว่าความยาวของแฮชถูกตัดจาก 64 อักขระเหลือ 12 อักขระ

  • มีคำถามว่าทำไมประสิทธิภาพของ hashcat ถึงต่างกันมากตามลำดับของอาร์กิวเมนต์

    • สงสัยว่ามันสแกนแพตเทิร์นเป้าหมายใหม่ทุกครั้งที่รันหรือไม่
  • เป็นบทความที่ยอดเยี่ยม ทั้งในแง่การอ่านโค้ดอย่างชาญฉลาดและการพัฒนา exploit