System Integrity Protection (SIP) เป็นนโยบายความปลอดภัยโดยรวมโดยมีเป้าหมายเพื่อป้องกันไฟล์ระบบและกระบวนการไม่ให้ถูกแก้ไขโดยบุคคลที่สาม เพื่อให้บรรลุสิ่งนี้มันมีแนวคิดดังต่อไปนี้:
- การป้องกันระบบไฟล์
- การป้องกันส่วนขยายเคอร์เนล
- การป้องกันรันไทม์
การป้องกันระบบไฟล์
SIP ป้องกันไม่ให้บุคคลอื่นนอกเหนือจาก Apple เพิ่มลบหรือแก้ไขไดเรกทอรีและไฟล์ที่จัดเก็บในไดเรกทอรีบางตัว:
/bin
/sbin
/usr
/System
Apple ระบุว่าไดเรกทอรีดังต่อไปนี้พร้อมให้นักพัฒนาเข้าถึงได้:
/usr/local
/Applications
/Library
~/Library
ไดเร็กทอรีทั้งหมด/usr
ยกเว้น/usr/local
ถูกป้องกันโดย SIP
เป็นไปได้ที่จะเพิ่มลบหรือเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีการป้องกัน SIP ผ่านแพ็คเกจการติดตั้งซึ่งลงนามโดยหน่วยงานออกใบรับรองของ Apple เอง สิ่งนี้ทำให้ Apple สามารถเปลี่ยนแปลงส่วนที่ได้รับการป้องกัน SIP ของระบบปฏิบัติการโดยไม่จำเป็นต้องเปลี่ยนการป้องกัน SIP ที่มีอยู่
Apple มีการสงวนสิทธิ์ในการออกใบรับรองเพื่อใช้งานเอง แพ็คเกจตัวติดตั้งที่เซ็นชื่อ ID นักพัฒนาจะไม่สามารถแก้ไขไฟล์หรือไดเรกทอรีที่ป้องกันด้วย SIP
เพื่อกำหนดไดเรกทอรีที่ได้รับการป้องกัน Apple ได้กำหนดสองไฟล์กำหนดค่าบนระบบไฟล์ อุปกรณ์หลักจะอยู่ที่ตำแหน่งด้านล่าง:
/System/Library/Sandbox/rootless.conf
โดยที่rootless.conf
แสดงรายการแอ็พพลิเคชันทั้งหมดและไดเร็กทอรีระดับบนสุดที่ SIP กำลังปกป้อง
การประยุกต์ใช้งาน
SIP กำลังปกป้องแอปหลักที่ OS X ติดตั้งไว้ใน Applications and Applications Utilities ซึ่งหมายความว่าจะไม่สามารถลบแอปพลิเคชันที่ติดตั้ง OS X ได้อีกต่อไปแม้จะอยู่ในบรรทัดคำสั่งเมื่อใช้สิทธิ์พิเศษของรูท
ไดเรกทอรี
SIP ยังปกป้องจำนวนไดเรกทอรีและ symlink นอก/Applications
และระดับบนสุดของไดเรกทอรีเหล่านั้นจะแสดงรายการrootless.conf
ด้วย
นอกเหนือจากการป้องกัน Apple ยังได้กำหนดข้อยกเว้นบางประการสำหรับการป้องกันของ SIP ในไฟล์ rootless.conf และข้อยกเว้นเหล่านั้นจะถูกทำเครื่องหมายด้วยเครื่องหมายดอกจัน การยกเว้นจากการป้องกันของ SIP หมายความว่าสามารถเพิ่มลบหรือเปลี่ยนแปลงไฟล์และไดเรกทอรีภายในสถานที่เหล่านั้นได้
ท่ามกลางข้อยกเว้นเหล่านี้มีดังต่อไปนี้:
/System/Library/User Template
- ที่ OS X จัดเก็บไดเรกทอรีแม่แบบที่ใช้เมื่อสร้างโฟลเดอร์บ้านสำหรับบัญชีใหม่
/usr/libexec/cups
- ที่ OS X เก็บข้อมูลการกำหนดค่าเครื่องพิมพ์
Apple พิจารณาว่าไฟล์นี้เป็นของพวกเขาและการเปลี่ยนแปลงใด ๆ ของบุคคลที่สามจะถูกเขียนทับโดย Apple
หากต้องการดูว่าไฟล์ใดได้รับการคุ้มครองโดย SIP ให้ใช้ls
คำสั่งด้วยเครื่องหมายขีดกลาง O ในเทอร์มินัล:
ls -O
ไฟล์ SIP ที่มีการป้องกันจะถูกระบุว่าเป็นจำกัด
สิ่งหนึ่งที่สำคัญที่ควรทราบคือแม้ว่า symlink จะได้รับการคุ้มครองโดย SIP นั่นไม่ได้หมายความว่าไดเรกทอรีที่พวกเขากำลังเชื่อมโยงไปนั้นจะถูกป้องกันโดย SIP ในระดับรากของไดรฟ์บูต OS X El Capitan มีหลาย symlinks SIP private
ที่มีการป้องกันที่ชี้ไปยังไดเรกทอรีที่เก็บไว้ภายในไดเรกทอรีรากระดับที่มีชื่อ
อย่างไรก็ตามเมื่อprivate
มีการตรวจสอบเนื้อหาของไดเรกทอรีไดเรกทอรีที่ symlinks ชี้ไปที่ไม่ได้รับการคุ้มครองโดย SIP และทั้งคู่และเนื้อหาสามารถย้ายแก้ไขหรือเปลี่ยนแปลงโดยกระบวนการโดยใช้สิทธิ์รูท
นอกเหนือจากรายการข้อยกเว้น SIP ที่ Apple ตั้งไว้rootless.conf
แล้วมีรายการข้อยกเว้น SIP ที่สอง รายการนี้มีไดเรกทอรีและชื่อแอปพลิเคชันจำนวนมากสำหรับผลิตภัณฑ์ของบุคคลที่สาม คล้ายกับrootless.conf
รายการยกเว้นนี้เป็นแอปเปิ้ลและการเปลี่ยนแปลงบุคคลที่สามมันจะถูกเขียนทับโดยแอปเปิ้ล
/System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
การป้องกันรันไทม์
การป้องกันของ SIP ไม่ได้ จำกัด อยู่ที่การปกป้องระบบจากการเปลี่ยนแปลงระบบไฟล์ นอกจากนี้ยังมีการเรียกระบบซึ่งถูก จำกัด ในการทำงานของพวกเขา
- task_for_pid () / processor_set_tasks () ล้มเหลวด้วย EPERM
- พอร์ตพิเศษของ Mach ถูกรีเซ็ตเป็น exec (2)
- ตัวแปรสภาวะแวดล้อม dyld จะถูกละเว้น
- DTrace probes ไม่พร้อมใช้งาน
อย่างไรก็ตาม SIP ไม่ได้ปิดกั้นการตรวจสอบโดยผู้พัฒนาแอปพลิเคชันของตนเองในขณะที่กำลังพัฒนา เครื่องมือของ Xcode จะช่วยให้แอปสามารถตรวจสอบและแก้ไขจุดบกพร่องได้ในระหว่างกระบวนการพัฒนา
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ผมขอแนะนำให้ดูที่เอกสารของนักพัฒนาซอฟต์แวร์ของ Apple สำหรับ SIP
การป้องกันส่วนขยายเคอร์เนล
SIP บล็อกการติดตั้งส่วนขยายเคอร์เนลที่ไม่ได้ลงชื่อ ในการติดตั้งส่วนขยายเคอร์เนลใน OS X El Capitan ที่เปิดใช้งาน SIP ส่วนขยายเคอร์เนลต้อง:
- ลงชื่อด้วยID ผู้พัฒนาสำหรับการลงนามใบรับรองKexts
- ติดตั้งลงใน/ Library / Extensions
หากติดตั้งส่วนขยายเคอร์เนลที่ไม่ได้ลงชื่อ SIP จะต้องปิดใช้งานก่อน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ SIP โปรดดูที่ลิงค์ด้านล่าง:
การป้องกันความสมบูรณ์ของระบบ - การเพิ่มเลเยอร์อื่นให้กับรูปแบบความปลอดภัยของ Apple
sudo
และการถามรหัสผ่านได้ทำงานเป็นปกติ / ก่อนหน้านี้ / คาดว่าจะได้ ดังนั้นคำตอบคือ "ส่วนใหญ่คุณจะไม่สังเกตเห็นเมื่อคุณทำคุณจะสังเกตเห็นได้ยาก"