เหตุใดจึงไม่อาจเชื่อถือการตั้งค่า Privacy & Security ของ macOS ได้
(eclecticlight.co)- มีการยืนยันปัญหาที่ การตั้งค่า Privacy & Security ของ macOS ไม่สามารถสะท้อนสถานะสิทธิ์การเข้าถึงจริงได้
- แม้อยู่ในสถานะที่บล็อกการเข้าถึงโฟลเดอร์ Documents ก็ยังเกิดปรากฏการณ์ที่ แอป Insent ยังคงอ่านไฟล์ได้
- เมื่อผู้ใช้เลือกโฟลเดอร์ด้วยตนเอง ระบบ TCC จะถือว่านี่คือการเข้าถึงที่ผู้ใช้ตั้งใจ และยกเลิกข้อจำกัด
- แม้ในหน้าการตั้งค่าจะแสดงว่าเป็นการบล็อกอยู่ แต่ในความเป็นจริง ข้อจำกัดของแซนด์บ็อกซ์ถูกปลดออก ทำให้ยังคงอนุญาตการเข้าถึงต่อไป
- หากต้องการบล็อกสิทธิ์การเข้าถึงอย่างสมบูรณ์ จำเป็นต้องใช้คำสั่งในเทอร์มินัลและรีสตาร์ตเครื่อง ซึ่งอาจนำไปสู่ความเสี่ยงที่ผู้ใช้สูญเสียการควบคุม
ปัญหาความน่าเชื่อถือของการตั้งค่า Privacy & Security บน macOS
- พบกรณีที่ การตั้งค่า Privacy & Security ของ macOS ไม่สามารถสะท้อนสถานะสิทธิ์การเข้าถึงจริงได้อย่างถูกต้อง
- โดยใช้แอปง่าย ๆ ชื่อ Insent พบปรากฏการณ์ที่ สิทธิ์เข้าถึงโฟลเดอร์ Documents สามารถใช้งานได้จริง แม้ในการตั้งค่าจะแสดงว่าโดนบล็อก
- ปัญหานี้สามารถทำซ้ำได้เหมือนกันใน macOS เวอร์ชัน 13.5 ขึ้นไป
-
วิธีการทำงานของแอป Insent
- ปุ่ม Open by consent จะเปิดและแสดงไฟล์ข้อความใดก็ได้ในโฟลเดอร์ Documents หลังจากได้รับความยินยอมจากผู้ใช้
- ปุ่ม Open from folder จะเปิดและแสดงไฟล์ภายในโฟลเดอร์ที่ผู้ใช้เลือกเอง
- ในกรณีหลังนี้ เจตนา(intent) ของผู้ใช้จะถูกมองว่าเป็นการอนุญาตการเข้าถึง ทำให้ระบบ TCC (Transparency, Consent, and Control) อนุญาตให้เข้าถึงได้โดยไม่ต้องมีการยินยอมเพิ่มเติม
-
ขั้นตอนการทดลองและผลลัพธ์
- อนุญาตการเข้าถึง Documents ก่อน แล้วตรวจสอบว่า Insent สามารถอ่านไฟล์ได้ตามปกติ
- จากนั้นปิดการเข้าถึง Documents ของ Insent ในการตั้งค่า Privacy & Security แล้วจะถูกบล็อกการเข้าถึง
- แต่เมื่อเลือก Documents ผ่าน Open from folder ก็จะกลับมาเข้าถึงได้อีก และหลังจากนั้น Open by consent ก็ทำงานได้โดยไม่มีข้อจำกัด
- แม้ในหน้าการตั้งค่าจะแสดงว่าการเข้าถึงยังถูกบล็อกอยู่ แต่ในความเป็นจริง Insent ยังเข้าถึงโฟลเดอร์ Documents ได้ต่อเนื่อง
- หากต้องการบล็อกการเข้าถึงอย่างสมบูรณ์ ต้องรันคำสั่ง
tccutil reset All co.eclecticlight.Insentและ รีสตาร์ต Mac
-
การวิเคราะห์การทำงานภายใน
- Insent เป็นแอป notarized ทั่วไป และไม่ได้ใช้แซนด์บ็อกซ์หรือสิทธิ์พิเศษ
- เมื่อ System Integrity Protection(SIP) เปิดใช้งานอยู่ บางการทำงานจะถูกจัดการในรูปแบบแซนด์บ็อกซ์
sandboxdจะดักจับคำขอเข้าถึงไฟล์และส่งคำขออนุมัติไปยัง TCC ซึ่งหากผู้ใช้ยินยอมก็จะอนุญาตการเข้าถึง- หลังจากปิดสิทธิ์การเข้าถึงแล้ว TCC จะปฏิเสธการเข้าถึง แต่ถ้าผู้ใช้เลือกโฟลเดอร์ผ่านแผง Open/Save sandboxd จะไม่ดักจับคำขอนี้อีกต่อไป
- ส่งผลให้ TCC ไม่สามารถควบคุมการเข้าถึงได้ และ สามารถเข้าถึงโฟลเดอร์ได้ในสถานะที่ข้อจำกัดของแซนด์บ็อกซ์ถูกปลดออกแล้ว
-
สาเหตุของปัญหา
- เมื่อเกิดการเข้าถึงตามเจตนาของผู้ใช้ ข้อจำกัดแซนด์บ็อกซ์สำหรับโฟลเดอร์นั้นจะถูกลบออก
- การเปลี่ยนแปลงนี้ ไม่ถูกสะท้อนใน UI ของการตั้งค่า Privacy & Security ดังนั้นจึงดูเหมือนถูกบล็อกอยู่ แต่จริง ๆ แล้วสถานะยังคงอนุญาตการเข้าถึง
- โฟลเดอร์ที่ได้รับการปกป้องอื่น ๆ (เช่น Desktop, Downloads) ทำงานได้ตามปกติ และปัญหานี้เกิดแยกกันเป็นรายโฟลเดอร์
-
บทสรุป
-
การแสดงสถานะการจำกัดสิทธิ์เข้าถึงในรายการ Files & Folders ไม่สามารถเชื่อถือได้ว่าเป็นสถานะที่ถูกใช้งานจริง
- แม้แอปจะไม่แสดงอยู่ในรายการหรือดูเหมือนถูกบล็อก แต่ในความเป็นจริงอาจยังเข้าถึงโฟลเดอร์ที่ได้รับการปกป้องได้
- เมื่อให้สิทธิ์การเข้าถึงไปแล้วหนึ่งครั้ง จะไม่สามารถเพิกถอนได้หากไม่มีคำสั่งเทอร์มินัลและการรีสตาร์ต ซึ่งเสี่ยงต่อการที่ผู้ใช้สูญเสียการควบคุมสิทธิ์การเข้าถึง
-
-
การอภิปรายเพิ่มเติม (สรุปความคิดเห็น)
- หลังการทดลอง มีการคาดว่าแอตทริบิวต์ส่วนขยาย
com.apple.maclถูกเพิ่มเข้าไปในโฟลเดอร์ Documents และมีบทบาทในการอนุญาตให้ Insent เข้าถึง - คำสั่ง
tccutil resetจะลบรายการ macl ออกจากฐานข้อมูล แต่ xattr (แอตทริบิวต์ส่วนขยาย) อาจยังคงอยู่ ทำให้การเข้าถึงยังดำเนินต่อไปได้ - เมื่อ SIP เปิดใช้งานอยู่ จะลบแอตทริบิวต์นี้ได้ยาก และสามารถลบได้จากโหมดกู้คืนด้วยคำสั่ง
xattr -d com.apple.macl path/to/Documentsเท่านั้น - ด้วยเหตุนี้ ผู้ใช้จึงตกอยู่ในสถานการณ์ที่ ตรวจสอบหรือควบคุมสถานะการเข้าถึงจริงของแอปได้ยาก
- หลังการทดลอง มีการคาดว่าแอตทริบิวต์ส่วนขยาย
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สำหรับผมมันดูเหมือนปัญหาง่าย ๆ มาก ถ้าให้สิทธิ์แอปเข้าถึงโฟลเดอร์ ก็ควรคาดหมายได้ตามปกติว่าแอปจะเข้าถึงไฟล์ในโฟลเดอร์นั้นได้ด้วย
หลังอ่านจบผมลองปิดสิทธิ์ทุกโฟลเดอร์แล้วทดสอบดู Insent ยังอ่าน Documents ได้ทั้งที่ใน UI แสดงว่า “None” ดูเหมือนเป็น ความล้มเหลวด้านความโปร่งใส
นี่คือความย้อนแย้งของ OS ที่ยึด GUI เป็นหลัก ถ้าจะบล็อกการเข้าถึงโฟลเดอร์ Documents แบบสมบูรณ์ ต้องไปสั่งในเทอร์มินัล
tccutil reset All co.eclecticlight.Insentแล้วรีบูต
ถ้าจะตั้งชื่อให้ตรงกว่าเดิม น่าจะเป็น “แอปบน macOS ยังรักษาการเข้าถึงโฟลเดอร์ไว้ได้แม้ผู้ใช้จะปิดการเข้าถึงแล้ว”
ระบบ sandbox ของ Mac ทำให้นึกถึง Windows UAC มันเป็นโครงสร้างที่มีแต่เพิ่มความเหนื่อยล้าให้ผู้ใช้
ผมคิดว่าแนวทางคอนเทนเนอร์แบบเลือกใช้ของ *nix ดีกว่ามาก
การที่โปรเซสเบื้องหลังที่รันจาก Terminal ยัง คงสิทธิ์ไว้ได้ แม้ parent process จะตายไปแล้ว ยิ่งดูประหลาด ทำให้ทั้งระบบสิทธิ์ดูเป็นพิธีกรรมเสียมากกว่า
นอกจาก
tccutil resetแล้ว ยังรีเซ็ตได้โดยเปิดแล้วปิดสิทธิ์ใหม่ในหน้าตั้งค่าความปลอดภัยปัญหาคือ UI มีบั๊กจนแสดงสถานะผิด แต่สิทธิ์จริงยังทำงานปกติ
สีของเช็กบ็อกซ์ก็เปลี่ยนตามการโฟกัส เลยยิ่งชวนให้สับสน เรื่องนี้ยังเป็นอยู่ใน Sequoia เวอร์ชัน ด้วย
และก็น่าสนใจที่เกมซึ่งติดตั้งบนไดรฟ์ภายนอกจะขอสิทธิ์เข้าถึง “removable volumes” จนขึ้นเต็มรายการไปหมด
แยกไม่ออกว่านี่เป็นบั๊ก เป็นช่องโหว่ความปลอดภัย หรือแค่ความผิดพลาดธรรมดา เลยลังเลว่าควรรันคำสั่ง reset กับทุกแอปดีไหม
ใน macOS รุ่นล่าสุดก็ยังมี ความสับสนของ security UI คล้ายกัน
ในรายการ “Full Disk Access” มีบางแอปที่แสดงเป็นสีเทา ซึ่งแยกไม่ออกว่าเป็นสถานะเปิดหรือปิด
เลยไม่รู้ว่านี่คือบั๊กหรือว่าแอปมีสิทธิ์อยู่จริง
Full Disk Access ต่อให้ปิดอยู่ ก็ยังปกป้องได้แค่บางโฟลเดอร์ที่อ่อนไหว ส่วนโฟลเดอร์ทั่วไปอย่าง Desktop, Documents ฯลฯ ก็ยังเข้าถึงได้อยู่ (เอกสารของ Apple)
ต้นเหตุของปัญหาคือแอตทริบิวต์ส่วนขยาย com.apple.macl ที่ถูกตั้งไว้บนโฟลเดอร์ Documents และลบออกไม่ได้เพราะ SIP
ชวนสงสัยว่าใน iOS จะมีอาการแบบเดียวกันไหม