- ระบบสิทธิ์ TCC ของ macOS เคยมีช่องโหว่ที่ทำให้แสดง ป๊อปอัปขอสิทธิ์ที่ทำให้ผู้ใช้เข้าใจผิด ได้
- ช่องโหว่นี้ถูกลงทะเบียนเป็น CVE-2025-31250 และมีปัญหาที่ ความยินยอมของผู้ใช้ถูกนำไปใช้กับแอปอื่น
- มีความเป็นไปได้ของ การโจมตีแบบสปูฟ ที่แอปอันตรายสามารถแสดงหน้าต่างขอสิทธิ์โดยใช้ชื่อของแอปที่น่าเชื่อถือเพื่อหลอกให้ผู้ใช้กดยินยอม
- ได้รับการแพตช์แล้วใน Apple macOS Sequoia 15.5 แต่เวอร์ชันอื่นยังคง ไม่ได้รับการแพตช์
- นอกจากนี้ยังมีปัญหาเรื่อง ความยากในการตรวจสอบและเพิกถอนประวัติการให้สิทธิ์ และยังมีความเป็นไปได้ที่จะพบช่องโหว่ลักษณะคล้ายกันอีกในอนาคต
การแก้ไขสำคัญ
- ช่องโหว่นี้ได้รับการแพตช์ใน macOS Sequoia 15.5 แล้ว แต่ใน macOS Ventura 13.7.6 และ macOS Sonoma 14.7.6 ยังไม่ได้รับการแพตช์
- ยืนยันแล้วว่าในบันทึกการออกรุ่นด้านความปลอดภัยของ Apple ไม่มีการระบุชื่อผู้รายงาน
- ได้ทดสอบ macOS Sonoma 14.7.6 บนเครื่องเสมือนด้วยตนเอง และยืนยันได้ว่าช่องโหว่นี้ยังคงถูกใช้โจมตีได้
- คาดว่า Ventura 13.7.6 ก็น่าจะอยู่ในสถานะเดียวกัน
- ขณะนี้กำลังรอคำตอบอย่างเป็นทางการจาก Apple
บทนำ
- ช่องโหว่ CVE-2025-31250 เป็นปัญหาที่ทำให้แอปพลิเคชันสามารถ แสดงป๊อปอัปขอสิทธิ์ปลอมบน macOS ได้
- เมื่อ "Application A" แสดงป๊อปอัป ตัวป๊อปอัปอาจแสดงเป็น "Application B" แต่ผลลัพธ์คือความยินยอมของผู้ใช้ถูกนำไปใช้กับ "Application C"
- โดยปกติแล้วทั้งสามแอปพลิเคชันนี้จะเป็นแอปเดียวกัน แต่ช่องโหว่นี้ทำให้สามารถกำหนดให้เป็นคนละแอปกันได้
- ส่งผลให้เกิดปัญหาใหญ่ด้าน ความน่าเชื่อถือของหน้าต่างขอสิทธิ์
- ก่อนหน้านี้ก็เคยมีการแนะนำวิธี "สปูฟ" คล้ายกันใน HackTricks เป็นต้น แต่ช่องโหว่นี้ใช้วิธีที่ง่ายกว่ามาก
TCC
- TCC คือ ระบบจัดการสิทธิ์หลักที่ฝังอยู่ในระบบปฏิบัติการของ Apple
- สิทธิ์ต่าง ๆ ถูกจัดการผ่านการส่งข้อความไปยังดีมอน "tccd" โดย Public API จะเรียกใช้ฟังก์ชันของเฟรมเวิร์ก TCC แบบ Private
- ดีมอนนี้สื่อสารข้อความผ่าน XPC API ของ Apple
- ก่อนที่ช่องโหว่นี้จะถูกแพตช์ หากส่งข้อความที่สร้างขึ้นเอง ก็สามารถกำหนดให้แอปที่แสดงป๊อปอัปขอสิทธิ์กับแอปที่ได้รับสิทธิ์จริงเป็นคนละแอปกันได้
- เพื่อจะเข้าใจว่าช่องโหว่นี้เกิดขึ้นได้อย่างไร จำเป็นต้องรู้จัก Apple Events ก่อน
Apple Events
Apple Events คืออะไร
- Apple Events คือ วิธีสื่อสารระหว่างโปรเซสของแอปบน macOS
- เป็นโปรโตคอลที่สืบทอดมาตั้งแต่ยุคหนังสือคลาสสิกที่ตีพิมพ์ในปี 1993
- หลังการมาของ macOS X ก็ยังถูกออกแบบใหม่ให้เข้ากับโครงสร้างระบบและใช้งานต่อมา
- ปัจจุบันมักใช้เพื่อ งานอัตโนมัติ (Automation) โดยสคริปต์ด้วย AppleScript และ JavaScript
- คล้ายกับ Script Host ของ Windows และก็เคยถูกใช้เป็น ช่องทางของมัลแวร์ เช่นกัน
Apple Events กับ TCC
- ตั้งแต่ macOS Mojave 10.14 เป็นต้นมา การ ส่ง Apple Events ต้องได้รับความยินยอมจากผู้ใช้
- ในฐานข้อมูลเก็บสิทธิ์ของ TCC (TCC.db) จะมีการบันทึกแอปผู้ร้องขอ บริการ และข้อมูลการตอบยินยอม
- เนื่องจาก Apple Events ต้องแยกจัดการสิทธิ์ตามแอปรับแต่ละตัว จึงมีการใช้ คอลัมน์ indirect object ใน TCC.db
- ฟังก์ชัน TCCAccessRequestIndirect ของดีมอน TCC จะประมวลผลข้อความที่ใช้คอลัมน์นี้
- ฟังก์ชันดังกล่าวมี บั๊กเชิงตรรกะ ที่ทำให้แอปที่แสดงต่อผู้ใช้กับแอปที่ได้รับสิทธิ์จริงสามารถเป็นคนละตัวกันได้
แนวคิดพิสูจน์การทำงาน (Proof-of-Concept)
- ตัวอย่างโค้ด Swift มีการปรับแต่งข้อความขอสิทธิ์ดังนี้
- เปิดเผยชื่อแอปจากพาธ "spoofedBundle" ในป๊อปอัปขอความยินยอมของผู้ใช้
- กำหนด bundle ID ของ "actualBundle" ให้เป็นเป้าหมายที่ได้รับสิทธิ์จริง
- ผลลัพธ์คือผู้ใช้จะเห็นเหมือนมีแอปที่น่าเชื่อถือเป็นผู้ขอสิทธิ์ แต่ สิทธิ์จริงกลับตกไปอยู่กับแอปอันตราย
- แม้จะปล่อยค่า "indirect_object" ว่างไว้ ก็ยังสามารถโจมตีบริการ TCC ได้หลายประเภท
- ส่งผลให้เกิด การพังทลายของความน่าเชื่อถือในการยินยอมให้สิทธิ์ของผู้ใช้
- ผู้โจมตีสามารถหลอกผู้ใช้เพื่อ ชักจูงให้แอปใดก็ได้ได้รับสิทธิ์
การใช้ช่องโหว่โจมตี
ข้อจำกัดและลักษณะเฉพาะ
- มีเพียงบริการ TCC บางประเภทเท่านั้นที่ตกเป็นเป้าหมายได้ แต่บริการสำคัญอย่าง Microphone และ Camera อยู่ในข่ายโจมตี
- สำหรับสิทธิ์ไฟล์/โฟลเดอร์ ผลกระทบไม่มากนักเพราะมีมาตรการป้องกันเพิ่มเติม
- แอปอันตรายสามารถใช้ร่วมกับ เทคนิควิศวกรรมสังคม เพื่อให้ผู้ใช้กดยินยอมแทนแอปอื่นที่ควรเป็นผู้ขอสิทธิ์จริงได้
ความสำคัญของจังหวะเวลา
- ช่วงเวลา ที่ใช้แสดงป๊อปอัปมีความสำคัญ
- แอปอันตรายสามารถตรวจจับได้ว่ามีแอปใดกำลังทำงานอยู่และแอปใดอยู่ด้านหน้า จากนั้นจึงแสดงป๊อปอัปในจังหวะที่เหมาะสมเพื่อทำให้ผู้ใช้สับสน
- ตัวอย่างเช่น หากแสดงป๊อปอัปขอสิทธิ์ Camera ระหว่างที่ FaceTime กำลังเปิดอยู่ ผู้ใช้อาจเข้าใจผิดว่าเป็นคำขอสิทธิ์ตามปกติ
- ยังสามารถสร้างสถานการณ์สปูฟคำขอสิทธิ์ Microphone ตอนเปิด Voice Memos ได้เช่นกัน
- หากเลือกใช้ใน จังหวะที่สอดคล้องกับบริบท ก็จะเพิ่มโอกาสสำเร็จของการโจมตีได้มาก
การกลับมาทบทวนช่องโหว่ในอดีต
- เคยมีช่องโหว่ที่อาศัยข้อเท็จจริงว่าพาธของ TCC.db ถูกกำหนดตาม โฮมโฟลเดอร์ของผู้ใช้
- จนถึงปี 2020 หากเปลี่ยนแค่ตัวแปรสภาพแวดล้อม
HOME ก็สามารถใช้ TCC.db ปลอมได้ ($HOMERun)
- แม้หลังแพตช์จะยังต้องมี สิทธิ์ root และความยินยอมจากผู้ใช้ แต่หากนำมารวมกับการสปูฟเชิงวิศวกรรมสังคมก็ยังอาจใช้ข้ามข้อจำกัดสิทธิ์ได้
- แอปอันตรายสามารถ ล่อให้ผู้ใช้กดยินยอม แล้วเปลี่ยนโฮมโฟลเดอร์พร้อมเพิ่มฐานข้อมูลที่ลงทะเบียนไว้ เพื่ออ้อมไปใช้ TCC.db ปลอมได้
- มีการทดสอบจริงและยืนยันได้ว่าวิธีนี้สามารถส่งผลต่อการทำงานของ TCC ได้
ไทม์ไลน์
1.
- 2024-05-02 : รายงานเบื้องต้นไปยัง Apple Product Security และส่งข้อความเพิ่มเติม
2.
- 2024-05-03 : Apple Product Security ขอคำอธิบายเพิ่มเติมและได้รับคำตอบ
- ในวันเดียวกัน มีการค้นพบความเป็นไปได้ในการข้าม TCC ทั้งระบบ และรายงานเพิ่มเติมให้ Apple อีกครั้ง
3.
- 2024-05-04 : ดำเนินการทดสอบ PoC ต่อเนื่องและฝากข้อความอัปเดตเพิ่มเติม
4.
- 2024-05-06 : Apple Product Security กล่าวขอบคุณสำหรับข้อมูลที่ให้มา
5.
- หลังจากนั้นก็มีการสอบถามสถานะแพตช์และติดตามผลเป็นระยะ โดยมีการสื่อสารกับ Apple อย่างต่อเนื่องตั้งแต่ 2024-06 ถึง 2025-02 แต่ก็ยังไม่ได้รับการแก้ไขอยู่เป็นเวลานาน
6.
- 2025-05-12 : มีการออกรุ่นแพตช์สำหรับบั๊กนี้
บทสรุป
หมายเหตุเพิ่มเติม
- TCC แสดงอยู่ในหัวข้อ Privacy & Security (เดิมคือ Security & Privacy) ของแอป System Settings รวมถึงใน ส่วน Automation ที่เกี่ยวข้อง
- แต่ ประวัติการยินยอมที่เกี่ยวกับ Apple Events ไม่แสดงใน GUI ทำให้ผู้ใช้ยกเลิกเองได้ยาก
- แม้จะยกเลิกได้ผ่านเครื่องมือ CLI อย่าง
tccutil แต่แทบไม่มีใครรู้จัก
- เมื่อไม่นานมานี้ Apple ได้เพิ่มความสามารถในการเฝ้าติดตามการเปลี่ยนแปลงฐานข้อมูล TCC ในเฟรมเวิร์ก Endpoint Security
- หากทำงานได้ตามปกติ ก็อาจช่วยแจ้งผู้ใช้ได้ว่าแอปใดคือแอปที่ได้รับสิทธิ์จริง และช่วยลดการนำไปใช้โจมตีได้
แพตช์ของ Apple
- รายละเอียดของแพตช์จริงค่อนข้างซับซ้อน แต่จากภายนอกเห็นได้ว่าข้อความที่ระบุ indirect object แบบกำหนดเองจากภายนอกจะถูก tccd เพิกเฉยอย่างเงียบ ๆ
- จากการตรวจสอบพฤติกรรม พบว่าไม่สามารถทำการสปูฟได้อีกต่อไป
- หากแพตช์ยังไม่สมบูรณ์ ก็อาจจำเป็นต้องมีมาตรการเพิ่มเติมในอัปเดตครั้งถัดไป
ความเห็นส่งท้าย
- ช่องโหว่นี้ถูกตั้งชื่อว่า "TCC, Who?"
- มุมมองของนักวิจัยด้านความปลอดภัยได้ตอกย้ำอีกครั้งถึงความสำคัญของ ความน่าเชื่อถือในระบบสิทธิ์
- ยังเป็นการส่งสัญญาณว่าในอนาคตอาจพบช่องโหว่ลักษณะคล้ายกันได้อีก
- ผู้ใช้จึงไม่ควร เชื่อป๊อปอัปสิทธิ์ของ macOS แบบไม่มีข้อสงสัย
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ด้วยความหวังเล็กน้อยมากว่าอาจมีใครจาก Apple มาเห็นโพสต์นี้ ฉันขอพูดสิ่งที่อยากขอมาตลอดอีกครั้ง—อยากให้ Apple เลิกแสดงกล่องโต้ตอบ "กรอกรหัสผ่าน (ผู้ดูแลระบบภายในเครื่อง) ตอนนี้" แบบสุ่มได้แล้ว เพียงเพราะคอมพิวเตอร์เกิดอยากอัปเดตหรือติดตั้งอะไรสักอย่างขึ้นมา คนที่มีทักษะพื้นฐานนิดหน่อยก็ทำป๊อปอัปปลอมที่หน้าตาแทบเหมือนกันบนเว็บได้ง่ายมาก และผู้ใช้ส่วนใหญ่ที่ไม่ใช่กลุ่มท็อปด้านเทคนิคสักประมาณ 20% แรก แทบไม่คิดจะสังเกตเลยว่านี่เป็นของจริงหรือเป็นของปลอมที่สร้างในเบราว์เซอร์ ถ้าจะป้องกันปัญหานี้ตั้งแต่ต้นทาง ก็ต้องปลูกฝังให้ผู้ใช้คุ้นชินว่าซอฟต์แวร์ปกติจะไม่เด้งกล่องขอรหัสผ่านขึ้นมากลางงานแบบไม่มีปี่มีขลุ่ย แต่ UI ด้านความปลอดภัยของ macOS ตอนนี้กลับทำตรงกันข้ามอย่างสิ้นเชิง น่าจะเปลี่ยนเป็นอะไรอย่างการแสดงไอคอนสีสดที่เด่นชัดบนแถบเมนู หรือขึ้นหน้าจอความปลอดภัยแยกชั่วคราวแบบ Windows ดีไซน์ UI ตอนนี้มีปัญหามากจริงๆ
สิ่งที่ฉันเกลียดที่สุดในป๊อปอัปแบบนี้คือ เราไม่รู้เลยว่าทำไมมันถึงขอสิ่งนี้ ถ้าปฏิเสธแล้วจะเกิดอะไรขึ้น หรือถ้าภายหลังอยากเปลี่ยนการตั้งค่านี้ต้องทำยังไง วิธีที่แอปบอกว่า "เปิดแผงการตั้งค่าแล้วให้สิทธิ์ XXX" อย่างน้อยก็ทำให้เห็นชัดว่าเป็นแอปไหน สิทธิ์อะไร และต้องเปิดสวิตช์ตรงไหน แต่ป๊อปอัปรหัสผ่านไม่ให้ UX แบบนั้น เลยทำให้ฉันไม่ค่อยชอบแนวคิดเรื่อง
capabilitiesเท่าไรนัก เพราะ UX มันแย่มากและแทบเลี่ยงไม่ได้ เดี๋ยวมันก็จะกลายเป็นแนว "ถ้าจะใช้แอปนี้ให้สมบูรณ์ โปรดอนุญาตให้ <root my computer>" และถ้าปล่อยให้ผู้ขายเป็นคนกำหนดข้อความ มันก็ต้องออกมาแบบนี้แหละ เป็น UX ที่ไม่ช่วยอะไรเลยถ้า macOS ยังแสดงหน้าต่างโมดัลแบบแนบกับหน้าต่างเดิมอยู่ ก็น่าจะลดปัญหานี้ลงได้บ้าง ถึงจะไม่แก้ได้หมดแต่ก็น่าจะดีกว่า ตอนนี้พอโมดัลลอยมาทับเหนือทูลบาร์ มันให้ความรู้สึกแบบ "อยู่ในแอปนี้" อย่างชัดเจน ตอนที่ Steve Jobs เดโม Aqua ก็ยังเคยเน้นเลยว่าโมดัลแบบลอยแยกทำให้การใช้งานแย่ลง แต่ตอนนี้กลายเป็นแบบนี้เพราะ Apple มีความยึดติดแปลกๆ ที่อยากใช้ UI แบบมือถือกับทุกหน้าจอ
คนในครอบครัวของฉันที่ไม่ถนัดเทคโนโลยีแยกไม่ออกด้วยซ้ำว่ารหัสผ่านเครื่องในเครื่องกับรหัสผ่าน iCloud/Apple ID ต่างกันยังไง สุดท้ายก็กรอกมั่วไปเรื่อยจนกว่าจะผ่านได้เอง (ซึ่งเป็นผลจาก UI ที่ไม่ชัดเจนและไม่สม่ำเสมอ) เมื่อก่อน Apple เคยล้อ UAC ของ Vista แต่ตอนนี้ตัวเองก็มีทั้งการแจ้งเตือนโผล่พรวดพราดและ UI ครึ่งๆ กลางๆ เต็มไปหมด
เพิ่งย้ายจากลินุกซ์มาใช้ Mac ไม่นาน และสับสนมากกับป๊อปอัปรหัสผ่าน root ที่เด้งขึ้นมาแบบสุ่ม ไม่มีคำอธิบายเลยว่าแอปหรือคำสั่งไหนกำลังขอสิทธิ์ root และขอไปทำไม ตอนแรกก็อนุญาตไปสองสามครั้ง แล้วสุดท้ายก็เปลี่ยนเป็นกดปฏิเสธ ตั้งแต่นั้นมาก็ไม่มีป๊อปอัปอีก แต่จนถึงตอนนี้ก็ยังไม่รู้เลยว่ามันขึ้นมาเพื่ออะไร และทำไมถึงไม่ขึ้นแล้ว
ขอแนะนำบทความคลาสสิกนี้อีกครั้ง: The Line of Death https://textslashplain.com/2017/01/14/the-line-of-death/
ป๊อปอัป Passkey แยกไม่ออกจากป๊อปอัป JavaScript เลย ซึ่งเป็นความผิดพลาดด้านความปลอดภัยที่ร้ายแรงเป็นพิเศษ
ในสถานการณ์แบบนี้ เซ็นเซอร์ลายนิ้วมือในตัวช่วยได้ดีจริงๆ ปกติฉันจะปิดฝาโน้ตบุ๊กแล้วใช้แค่มอนิเตอร์ภายนอก แต่ถ้าต้องยืนยันตัวตนกับระบบก็จะเปิดขึ้นมาเพื่อใช้ลายนิ้วมือโดยเฉพาะ
หักมุม: จริงๆ แล้วไม่เคยมีกล่องโต้ตอบแบบนั้นตั้งแต่แรก! คุณโดนหลอกไปแล้ว
ขออาศัยคอมเมนต์ยอดนิยมตอนนี้บอกข้อมูลไว้ตรงนี้—บทความนี้มีอัปเดตสำคัญ: https://news.ycombinator.com/item?id=43969087
สงสัยว่า threat model ของการคลิกป๊อปอัปปลอมในกรณีนี้คืออะไร ถ้าไม่ใช่ของระบบจริง มันจะไม่ใช่แค่การหลอกกดที่ไม่มีความหมายหรือ
ตอนล็อกอินเข้า iCloud จะมีป๊อปอัปขอรหัสผ่านในเครื่อง และถ้ากรอกเข้าไป รหัสผ่านนั้นจะถูกอัปโหลดไปยังเซิร์ฟเวอร์ iCloud
เพิ่งรู้ไม่นานมานี้ว่าควรติดตั้งแอป mac ไว้ใน Applications ของโฮมไดเรกทอรีตัวเอง (~/Applications) แทนที่จะเป็น Applications ของระบบ แน่นอนว่าวิธีนี้มีความหมายเฉพาะกับคอมพิวเตอร์ที่ใช้คนเดียวเท่านั้น หากลดสิทธิ์ตัวเองลงเป็นผู้ใช้ non-admin และติดตั้งแอปไว้ใน Applications ของโฮมไดเรกทอรี ก็จะไม่โดนคำขอสิทธิ์เวลาอัปเดตมากวนใจ แอปส่วนใหญ่จะอัปเดตเองได้แม้ไม่ใช่ผู้ดูแลระบบ ยกเว้นแอปอย่าง Tailscale ที่ต้องผสานกับ OS เป็นพิเศษจึงต้องใช้สิทธิ์เพิ่ม วิธีนี้ฉันได้มาจากแอปชื่อ Pareto Security
น่าเสียดายที่นักพัฒนาแอปแทบทั้งหมดก็ไม่รู้วิธีนี้เหมือนกัน และแอปจำนวนมากบังคับให้ติดตั้งที่
/Applicationsเท่านั้น จึงใช้งานจากตำแหน่งอื่นไม่ได้เลยถ้าติดตั้งแอปไว้ใน
~/Applicationsจะอัปเดตอัตโนมัติได้โดยไม่ต้องใช้ root แต่ในขณะเดียวกันโค้ดที่น่าสงสัยก็สามารถเขียนทับได้ง่ายขึ้นโดยไม่ต้องใช้ root เช่นกันฉันใช้ macOS 15.4.1 อยู่ แต่ไม่มีโฟลเดอร์
~/Applicationsเลยฟังดูน่าสนใจดี! ปกติฉันต้องมีบัญชี admin ไว้ใช้งานประจำ เลยใช้วิธีนี้ได้ยาก แต่สำหรับคนที่เข้าเงื่อนไขก็น่าจะเป็นวิธีที่ดีมาก
เนื้อหาในบทความนี้ต้องมีการแก้ไขสำคัญ ก่อนหน้านี้ระบุว่า CVE นี้ถูกแพตช์แล้วใน macOS Sequoia 15.5 แต่ความจริงคือแพตช์ไม่ได้ถูกใส่มาใน macOS Ventura 13.7.6 และ macOS Sonoma 14.7.6 ที่ออกวันเดียวกัน ฉันเขียนแบบนั้นเพราะคิดไปเองว่า Apple คงใส่แพตช์ให้ทุกเวอร์ชันอยู่แล้ว แต่พอตรวจดูบันทึกประจำรุ่นด้านความปลอดภัยแล้วเห็นว่าชื่อของฉันไม่อยู่ในอีกสองเวอร์ชันนั้น ก็เลยติดต่อ Apple ไปโดยตรง ตอนนี้ยังไม่ได้รับคำตอบ เพื่อทดสอบเอง ฉันเปิด VM ขึ้นมา แพตช์ macOS Sonoma 14.7.6 แล้วรัน PoC ของตัวเอง ปรากฏว่าช่องโหว่ยังใช้ได้อยู่ คิดว่า Ventura 13.7.6 ก็น่าจะเหมือนกัน ฉันไม่เข้าใจเลยว่าทำไม Apple ถึงไม่ใส่แพตช์ ถ้ามีข้อมูลเพิ่มเติมจะอัปเดตบทความอีกครั้ง
ระบบ TCC ของ macOS มีชื่อเสียงว่าเป็นกลไกคุ้มครองความเป็นส่วนตัวที่แข็งแกร่ง แต่พอนึกว่าจริงๆ แล้วมันถูกเลี่ยงได้ง่ายด้วยการเพิ่มข้อมูลในฐานข้อมูลเพียงรายการเดียว ก็ให้ความรู้สึกขมขื่น ป๊อปอัปขอความยินยอมของผู้ใช้แทบไม่มีความหมายเมื่อเทียบกับการจัดการฐานข้อมูลโดยตรง โดยเฉพาะในสภาพแวดล้อมนักพัฒนาที่ปิด SIP ไว้ สุดท้ายมันคือเรื่องของความเชื่อใจ ทำให้น่าตั้งคำถามว่าความยินยอมในระดับ UX ยังเป็นเส้นเขตความปลอดภัยที่มีความหมายจริงหรือไม่ ตอนนี้เรายิ่งพึ่งพาป๊อปอัปสิทธิ์ระดับ OS มากขึ้นเรื่อยๆ แต่ถ้าขอบเขตนั้นแท้จริงเป็นเพียงภาพลวงตา (หรือแค่การแสดง) เราก็ควรกลับมาคิดใหม่ว่าจะรักษาความเชื่อถือของสิทธิ์อย่างไรในทางปฏิบัติ แทนที่จะเอาแต่ "แสดงให้เห็น" ว่ามีมันอยู่
capabilitiesจริงๆ ก็น่าจะดีกว่ามาก แต่ถ้ามันยังเป็นฐานข้อมูลอยู่ ก็จะเจอภาวะกลืนไม่เข้าคายไม่ออกว่าจะเก็บไว้ใน user space หรือในเคอร์เนล ซึ่งเอาเข้าจริงก็ไม่มีตัวเลือกไหนที่ชอบนักจำได้ว่าเมื่อก่อนโฆษณา "I'm a Mac and I'm a PC" เคยล้อองค์ประกอบแบบนี้ของ Vista แต่ตอนนี้ Mac ของฉันกลับแย่กว่า Vista เสียอีก น่าหงุดหงิดมาก
ดูเหมือนการประนีประนอมระหว่างความปลอดภัยกับความขยายได้จะเป็นชะตาที่เลี่ยงไม่พ้น แต่ก็จริงที่เส้นฐานมันขยับไปจากเดิมบ้าง อย่างน้อย macOS ก็ไม่ได้มีโปรเซสอันตรายวิ่งกันเกลื่อนแบบ Windows สมัยก่อน หรืออาจเป็นเพราะฉันโชคดีและระวังตัวมากก็ได้
ถามด้วยความอยากรู้ล้วนๆ ว่ามีเรื่องไหนเป็นพิเศษที่ทำให้คุณรำคาญขนาดนั้น
ระบบ TCC ตั้งแต่แรกก็เป็นโครงสร้างที่หละหลวมมาก มันมีไว้กวนใจนักพัฒนาที่ทำถูกต้องตามกฎหมาย และทำให้ผู้ใช้ต้องทนกับป๊อปอัปขอสิทธิ์ ขณะที่แอปอันตรายก็ยังหาทางเลี่ยง "ความปลอดภัย(โชว์)" นี้ได้หลายทางตามที่นักวิจัยเปิดเผยเรื่อยๆ ฉันไม่ใช่นักวิจัยด้านความปลอดภัย แต่ในฐานะนักพัฒนา Mac ฉันเองก็เคยหาวิธีเลี่ยงได้หลายแบบเหมือนกัน ถึงขั้นสงสัยด้วยซ้ำว่าวิศวกร Apple เข้าใจเทคโนโลยีที่ตัวเองใช้อยู่จริงหรือเปล่า ไม่รู้ว่านักพัฒนา Mac สายดั้งเดิมเหลืออยู่สักกี่คนแล้ว
ฉันใช้ Mac ของบริษัท และจะมีการแจ้งเตือนว่า "Slack กำลังพยายามติดตั้ง helper tool ใหม่" โผล่มาเป็นระยะ ไม่รู้เลยว่ามันคืออะไรและทำไมถึงขึ้นไปถามทีมไอทีแล้วเขาก็ไม่รู้วิธีเช็กเหมือนกัน ฉันคิดบ่อยๆ ว่ามันน่าจะถูกนำไปใช้ในทางที่ผิดได้ เพราะมันถามหารหัสผ่านซ้ำๆ และถึงจะกดยกเลิกทุกครั้งก็ยังเด้งมาอีก
กล่องโต้ตอบนี้มาจากเฟรมเวิร์ก System Management เป็นกระบวนการติดตั้ง helper tool ที่มีสิทธิ์สูงกว่าเพื่อให้ Slack อัปเดตตัวเองได้ ไม่ว่าจะติดตั้งอยู่ที่ไหนหรือผู้ใช้คนไหนเป็นคนติดตั้งก็ตาม
ทุกครั้งที่ป๊อปอัปแบบนี้ขึ้นมา ไม่มีทางรู้เลยว่าควรดูข้อมูลอะไรเพื่อตัดสินใจว่าจะอนุญาตหรือปฏิเสธ สุดท้ายก็เลยกด Cancel ตลอด
ฉันใช้ Slack แบบเว็บแอป (แต่ไม่ใช่ในเบราว์เซอร์ตรงๆ เป็นหน้าต่างแยก) https://support.apple.com/en-us/104996 และ Discord ก็ใช้แบบเดียวกันได้ จากประสบการณ์รู้สึกว่าใช้งานสบายกว่าแอป Electron มาก แอป Electron ส่วนใหญ่เหมาะกับวิธีนี้มากกว่า
ฉันไม่เคยเห็นป๊อปอัป "helper tool" โดยตรง แต่ก็ไม่เข้าใจว่าทำไมแอปรับส่งข้อความธรรมดาอย่าง Slack ถึงต้องใช้สิทธิ์แบบนั้น น่าจะลองถามฝ่ายซัพพอร์ตของ Slack ดู (และหวังว่าจะได้คำตอบที่จริงจังจริงๆ)
เช่นเดียวกับแอปที่ต้องใช้รหัสผ่านอย่างแอปที่รันเป็น root บนลินุกซ์ มันมีโอกาสถูกใช้ในทางที่ผิดได้แน่นอน สุดท้ายก็ขึ้นอยู่กับว่าคุณเชื่อใจนักพัฒนาและเชื่อได้ไหมว่าแอปนั้นเป็นของจริง วันที่ Apple ห้ามแอปภายนอกใช้สิทธิ์ root โดยสิ้นเชิงก็คงเป็นวันที่ Mac กลายเป็นระบบปิดเต็มตัว และที่นี่ (HN) ก็คงเต็มไปด้วยคอมเมนต์บ่น สรุปคือควรมี "ความไม่ไว้ใจที่ดี" กับแอปอย่าง Slack ที่ไม่ได้เห็นความจำเป็นชัดเจนว่าจะต้องได้สิทธิ์ root
มันแย่งโฟกัสการพิมพ์ไปแบบบังคับ ทำให้ข้อความที่กำลังพิมพ์อยู่ถูกส่งไปลงในช่องกรอกรหัสผ่านทันที เป็นประสบการณ์ที่น่ารำคาญมาก
ป๊อปอัปพวกนี้ชอบสะสมเป็นคิว พอเปิดคอมหลังสุดสัปดาห์ก็เด้งซ้ำแล้วซ้ำอีก สุดท้ายฉันเลยปิด Slack ไปเลย เป็นแบบนี้มาหนึ่งปีแล้ว และก็ไม่รู้จะเพิกถอนสิทธิ์นี้จาก Slack ยังไง ให้ความรู้สึกค่อนข้างมุ่งร้าย
เครื่องมือปิดกั้นแบบ "ความปลอดภัย" ลักษณะนี้โง่มากจริงๆ มันกลับฝึกให้คนโง่ลง วันนี้อาจเป็นของจริง แต่พรุ่งนี้อาจไม่ใช่ ฉันยังโดนโทรจากธนาคารที่ขอข้อมูลส่วนตัวโดยอ้างเรื่อง "ปกป้องตัวตน" อยู่เรื่อยๆ เครื่องมือพวกนี้ล้วนฝึกให้คนยอมส่งข้อมูลส่วนตัวให้คนแปลกหน้า
ฉันไม่ใช่นักพัฒนา macOS แต่สงสัยว่ามีทางไหมที่แอปใดๆ ก็ตาม (รวมถึงแอปอันตราย) จะเลียนแบบสไตล์หน้าต่างป๊อปอัปของระบบเพื่อขโมยรหัสผ่านผู้ใช้
VSCode ก็ขึ้นป๊อปอัปแบบเดียวกันบน Mac ที่บริษัทให้มา ฉันเมินมันมาหลายปีแล้ว
ถ้าใช้หลายบัญชีผู้ใช้ของ OS กับแอปที่พัฒนาด้วย Electron จะเจอป๊อปอัปแบบนี้ทุกตัว
nordVPN ก็เป็นเหมือนกัน
Apple ใช้เวลาถึง 1 ปีเต็มกว่าจะออกแพตช์ให้ รู้สึกว่านานพอสมควร <i>2024-05-04 ฝากข้อความอัปเดตไว้หลายรายการ กำลังทดสอบ PoC ต่อเนื่อง</i> <i>2025-05-12 ปล่อยแพตช์แล้ว</i>
Adobe Creative Cloud ยังรันหลายโปรเซสอยู่เบื้องหลังต่อไป แม้จะปิดการทำงานพื้นหลังอย่างชัดเจนแล้วในค่าตั้งของระบบปฏิบัติการ
ฉันชอบงานวิจัยของคนนี้มาก และรู้สึกว่าเขาพรีเซนต์เก่งมากด้วย