2 คะแนน โดย GN⁺ 2025-04-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แนะนำกรณีที่สามารถ ทำให้ iPhone ใช้งานไม่ได้จนกลายเป็นก้อนอิฐ ได้ โดยอาศัยคุณลักษณะและช่องโหว่ของระบบ Darwin Notification
  • ช่องโหว่นี้ถูกลงทะเบียนเป็น CVE-2025-24091 และผู้รายงานได้รับเงิน bug bounty $17,500 (25 ล้านบาทวอนเกาหลี)
  • มีการนำจุดที่สามารถส่งการแจ้งเตือนระดับระบบได้ โดยไม่ต้องมีสิทธิพิเศษ มาใช้โจมตีจนทำให้ อุปกรณ์ iOS ทั้งเครื่องเป็นอัมพาต ได้
  • ยืนยันความเป็นไปได้ของการโจมตีแบบ ปฏิเสธการให้บริการ (DoS) ที่ใช้โค้ดเพียงบรรทัดเดียวเพื่อบังคับให้เข้าสู่โหมด "Restore in Progress" และทำให้ รีบูตซ้ำไม่สิ้นสุด
  • ช่องโหว่นี้ถูกแก้ไขแล้วผ่าน อัปเดต iOS 18.3 โดยกำหนดให้การส่ง Darwin Notification ที่สำคัญต้องใช้ สิทธิแบบจำกัด (entitlement)

Darwin Notifications

  • Darwin Notifications เป็นกลไกระดับ CoreOS สำหรับส่งข้อความอย่างง่ายระหว่างโปรเซสใน iOS และ macOS
  • ใช้ notify_post เพื่อประกาศเหตุการณ์ และ notify_register_dispatch เพื่อรับเหตุการณ์ โดยมีโครงสร้างที่สามารถอ่านหรือเขียน ค่าสถานะ (state) ได้
  • สามารถรับและส่งได้ โดยไม่ต้องมีสิทธิพิเศษ และ ไม่มีขั้นตอนตรวจสอบความปลอดภัย
  • คอมโพเนนต์หลายส่วนของระบบยังคงพึ่งพา legacy API นี้อยู่

ภาพรวมของช่องโหว่

  • ทุกโปรเซสในระบบปฏิบัติการของ Apple สามารถรับ Darwin Notifications ได้ โดยไม่ต้องใช้สิทธิพิเศษ
  • มีช่องโหว่เชิงโครงสร้างที่ทำให้แม้แต่ แอปที่อยู่ใน sandbox ก็ยัง ส่ง Darwin Notification ได้
  • เนื่องจากปริมาณข้อมูลที่ส่งได้มีจำกัด ความเสี่ยงด้านการรั่วไหลของข้อมูลสำคัญจึงไม่สูงมาก
  • แต่หากส่งการแจ้งเตือนระบบที่สำคัญบางรายการ (เช่น การแจ้งเริ่มการกู้คืนระบบ) ก็อาจ ส่งผลกระทบต่อทั้งระบบ ได้
  • จากจุดนี้จึงค้นพบความเป็นไปได้ของการโจมตีแบบ ปฏิเสธการให้บริการ (DoS)

EvilNotify และ VeryEvilNotify

  • แอป EvilNotify สามารถบังคับให้ระบบตอบสนองหลายรูปแบบได้
    • แสดง ไอคอนตรวจพบน้ำหรือของเหลว
    • บล็อก Wi‑Fi และบังคับใช้เครือข่ายเซลลูลาร์
    • ปิดกั้นท่าทางบนหน้าจอล็อกและ Control Center
    • เข้าสู่ Find My Lost Mode เป็นต้น
  • โดยเฉพาะอย่างยิ่ง เพียง notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") บรรทัดเดียว ก็ทำให้อุปกรณ์เข้าสู่สถานะ Restore in Progress ได้
  • โหมดนี้จะล้มเหลวเพราะตัวอุปกรณ์ไม่ได้กำลังกู้คืนจริง และวิธีแก้เพียงอย่างเดียวคือกดปุ่ม "รีสตาร์ต"
  • แอป VeryEvilNotify ใช้ส่วนขยายวิดเจ็ตเพื่อให้ เริ่มการโจมตีใหม่อัตโนมัติได้แม้หลังรีบูต
  • ส่วนขยายวิดเจ็ตจะถูกระบบเรียกทำงานเป็นระยะในพื้นหลัง และเรียกฟังก์ชัน notify_post เพื่อกระตุ้นโหมด "กำลังกู้คืน" ซ้ำๆ
  • ผลลัพธ์คือสามารถทำให้อุปกรณ์ กลายเป็นก้อนอิฐโดยสมบูรณ์ ได้

ไทม์ไลน์และการลงทะเบียน CVE

  • 26 มิถุนายน 2024: ส่งรายงานเหตุการณ์ฉบับแรกให้ Apple
  • 27 กันยายน 2024: ได้รับข้อความจาก Apple ว่ากำลังดำเนินมาตรการบรรเทาผลกระทบ
  • 28 มกราคม 2025: แก้ปัญหาเสร็จสมบูรณ์และยืนยันสิทธิ์รับ bug bounty
  • 11 มีนาคม 2025: ลงทะเบียนอย่างเป็นทางการเป็น CVE-2025-24091 และแก้ไขใน iOS/iPadOS 18.3
  • จำนวนเงิน bug bounty ที่จ่ายคือ 17,500 ดอลลาร์สหรัฐ

การรับมือและมาตรการบรรเทา

  • การส่ง Darwin Notification ที่มีความอ่อนไหวถูกเปลี่ยนให้ต้องใช้ สิทธิแบบจำกัด (entitlement)
  • ตัวอย่างเช่น การแจ้งเตือนเดิม com.apple.MobileBackup.BackupAgent.RestoreStarted ถูกเปลี่ยนเป็น com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted
  • โปรเซสที่รับการแจ้งเตือนก็ใช้ชื่อใหม่เช่นกัน เพื่อ ป้องกันการส่งโดยไม่ได้รับอนุญาตจากแอปที่ไม่ได้รับสิทธิ์
  • ระบบสิทธิแบบจำกัดนี้เริ่มถูกนำมาใช้ตั้งแต่ iOS 18.2 beta 2 และเสร็จสมบูรณ์ใน iOS 18.3

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

 
GN⁺ 2025-04-28
ความเห็นจาก Hacker News
  • น่าสนใจที่ API นี้ไม่ขอสิทธิ์สำหรับการใช้งานทั้งหมดที่เกี่ยวกับการตั้งค่าและการโพสต์การแจ้งเตือน

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

    • ต้องใช้การกู้คืนแบบ tethered เพื่อกู้กลับมา
  • $17,500 ถือว่าค่อนข้างดี

    • โพสต์บล็อกมักพูดถึงจำนวนเงินที่น้อยกว่านี้ หรือบางครั้งบริษัทก็แก้ช่องโหว่โดยไม่จ่ายรางวัล
    • Apple ปรับปรุงเรื่องนี้ดีขึ้นตั้งแต่ปี 2019
  • งานยอดเยี่ยมมาก

    • เป็นช่องโหว่ที่เรียบง่าย มีประสิทธิภาพ และทรงพลัง
    • ทำให้นึกถึงช่องโหว่เซิร์ฟเวอร์ในอุดมคติที่เคยตั้งทฤษฎีไว้กับเพื่อนสมัยมหาวิทยาลัยเมื่อ 20 ปีก่อน
    • ถูกค้นพบเมื่อ 2 ปีก่อนในชื่อ CVE-2022-23093
  • จินตนาการได้เลยว่าวันนั้นจะเป็นวันที่หนักหนาแค่ไหนในออฟฟิศ ตอนที่ทีมแกนหลักของ iOS เข้ามาตรวจสอบเรื่องนี้

  • โค้ดเพียงบรรทัดเดียวก็สามารถทำให้อุปกรณ์เข้าสู่โหมด "กำลังกู้คืน" ได้

    • โปรเซสใดก็ตามสามารถส่งการแจ้งเตือนเพื่อหลอกระบบให้เข้าใจว่าอยู่ในโหมดนั้นได้
  • คิดถึงยุค IRC สมัยก่อน

    • มันย้ำเตือนว่าการเปลี่ยนแปลงเล็ก ๆ อาจอันตรายต่อเทคโนโลยีได้มากแค่ไหน
    • ทำให้นึกสงสัยว่าความปลอดภัยกำลังเดินนำหน้าอยู่จริง หรือแค่คอยอุดรูรั่วไปเรื่อย ๆ
  • เป็นนัยว่าแอปของบุคคลที่สามที่มีระบบแจ้งเตือนของตัวเองก็อาจถูกปลอมแปลงในลักษณะคล้ายกันได้

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

    • อย่างไรก็ตาม กรอบเวลานั้นไม่ได้ทำให้รู้สึกมั่นใจนัก
  • บทความนี้อ่านสนุกมาก

    • แสดงให้เห็นว่า API ที่เก่าแก่มากนั้นทรงพลังแค่ไหน
    • เป็นเดโมที่ยอดเยี่ยมของการกระตุ้นสถานะระดับล่างทั้งหมดของ iOS
    • สงสัยว่า notify_post ตอนนี้เป็นอย่างไรบ้าง