ฟีเจอร์ "รูท" ใน El Capitan คืออะไรจริงหรือ


242

ฉันเพิ่งเรียนรู้เกี่ยวกับคุณสมบัติ "รูต" ใน El Capitan และฉันได้ยินสิ่งต่าง ๆ เช่น "ไม่มีผู้ใช้รูท" "ไม่มีอะไรสามารถแก้ไขได้/System" และ "โลกจะสิ้นสุดลงเพราะเราไม่สามารถรูทได้"

ฟีเจอร์ "Rootless" ของ El Capitan ในระดับเทคนิคคืออะไร? จริง ๆ แล้วมันมีความหมายอย่างไรต่อประสบการณ์ของผู้ใช้และประสบการณ์ของนักพัฒนา จะsudo -sยังใช้งานได้และถ้าเป็นเช่นนั้นประสบการณ์การใช้เชลล์จะrootเปลี่ยนไปอย่างไร


8
"มันมีความหมายอย่างไรต่อประสบการณ์การใช้งานของผู้ใช้และประสบการณ์ของนักพัฒนา" ฉันใช้งานเบต้ามาแล้วและนี่เป็นครั้งแรกที่ฉันได้ยิน sudoและการถามรหัสผ่านได้ทำงานเป็นปกติ / ก่อนหน้านี้ / คาดว่าจะได้ ดังนั้นคำตอบคือ "ส่วนใหญ่คุณจะไม่สังเกตเห็นเมื่อคุณทำคุณจะสังเกตเห็นได้ยาก"
OJFord

3
ง่ายมาก - เป็นข้อผิดพลาดที่เลียนแบบคุณลักษณะ
Wolfgang Fahl

ถ้ามีคนที่เคยตั้งใจเอา/usr/localและพบว่าตัวเองไม่สามารถที่จะสร้างมันให้ดูคำตอบได้ที่นี่
Lloeki

คำตอบ:


280

ข้อแรก: ชื่อ "rootless" ทำให้เข้าใจผิดเนื่องจากยังมีบัญชีรูทอยู่และคุณยังสามารถเข้าถึงได้ (ชื่ออย่างเป็นทางการ "System Integrity Protection" นั้นมีความแม่นยำมากกว่า) สิ่งที่จริง ๆ แล้วเป็นการ จำกัด พลังของบัญชีรูทดังนั้นแม้ว่าคุณจะเป็นรูท แต่คุณไม่สามารถควบคุมระบบได้ทั้งหมด โดยพื้นฐานแล้วแนวคิดก็คือมัลแวร์นั้นง่ายเกินไปที่จะเข้าถึงรูท (เช่นโดยการแสดงข้อความยืนยันผู้ใช้ซึ่งจะทำให้ผู้ใช้ป้อนรหัสผ่านของผู้ดูแลระบบอย่างละเอียด) SIP เพิ่มการปกป้องอีกชั้นหนึ่งซึ่งมัลแวร์ไม่สามารถเจาะได้แม้ว่าจะได้รับรูทก็ตาม ส่วนที่ไม่ดีของเรื่องนี้แน่นอนว่ามันจะต้องนำไปใช้กับสิ่งที่คุณทำโดยเจตนา แต่ข้อ จำกัด ที่วางไว้บนรากนั้นไม่เลว พวกเขาไม่ได้ป้องกัน "ปกติ" ส่วนใหญ่

นี่คือสิ่งที่ จำกัด แม้จะมาจากรูท:

  • คุณไม่สามารถแก้ไขอะไรใน/System, /bin, /sbinหรือ/usr(ยกเว้น/usr/local); หรือแอพและยูทิลิตี้ในตัวใด ๆ เฉพาะตัวติดตั้งและการอัปเดตซอฟต์แวร์เท่านั้นที่สามารถแก้ไขพื้นที่เหล่านี้และแม้พวกเขาจะทำเมื่อติดตั้งแพ็คเกจที่ลงนามโดย Apple เท่านั้น แต่เนื่องจากการปรับแต่งสไตล์ OS X ปกติเข้า/Library(หรือ~/Libraryหรือ/Applications) และการปรับแต่งสไตล์ยูนิกซ์ (เช่น Homebrew) เข้า/usr/local((หรือบางครั้ง/etcหรือ/opt)) สิ่งนี้ไม่ควรเป็นเรื่องใหญ่ นอกจากนี้ยังป้องกันการเขียนระดับบล็อกไปยังดิสก์เริ่มต้นดังนั้นคุณจึงไม่สามารถเลี่ยงได้

    รายการเต็มรูปแบบของไดเรกทอรี จำกัด (และข้อยกเว้นเช่น/usr/localและอื่น ๆ น้อย) /System/Library/Sandbox/rootless.confอยู่ใน แน่นอนไฟล์นี้อยู่ในพื้นที่ จำกัด

    เมื่อคุณอัปเกรดเป็น El Capitan ไฟล์จะย้ายไฟล์ "ไม่ได้รับอนุญาต" จากพื้นที่ที่ถูก จำกัด ไป/Library/SystemMigration/History/Migration-(some UUID)/QuarantineRoot/เป็น

  • คุณไม่สามารถแนบกับกระบวนการของระบบ (เช่นที่ทำงานจากตำแหน่งระบบเหล่านั้น) สำหรับสิ่งต่าง ๆ เช่นการดีบัก (หรือเปลี่ยนแปลงโหลดไลบรารีแบบไดนามิกหรือสิ่งอื่น ๆ ) อีกครั้งไม่มากเกินไป นักพัฒนายังสามารถดีบักโปรแกรมของตัวเอง

    สิ่งนี้จะบล็อกบางสิ่งที่สำคัญเช่นการใส่รหัสลงในแอพ Apple ในตัว (โดยเฉพาะ Finder) นอกจากนี้ยังหมายความว่าdtraceเครื่องมือที่ใช้สำหรับการตรวจสอบระบบ (เช่นopensnoop) จะไม่สามารถตรวจสอบและรายงานเกี่ยวกับกระบวนการของระบบได้หลายอย่าง

  • คุณไม่สามารถโหลดส่วนขยายเคอร์เนล (kexts) เว้นแต่ว่าจะได้ลงนามอย่างถูกต้อง (เช่นโดย Apple หรือนักพัฒนาที่ได้รับการอนุมัติจาก Apple) โปรดทราบว่าสิ่งนี้จะแทนที่ระบบเก่าสำหรับการบังคับใช้การลงนาม kext (และวิธีเก่า ๆ ของการเลี่ยงผ่าน) แต่เนื่องจาก v10.10.4 Apple มีวิธีเปิดใช้งานการสนับสนุนการตัดแต่งสำหรับ SSD ของบุคคลที่สามเหตุผล # 1 ในการใช้ kexts ที่ไม่ได้ลงชื่อได้หายไปแล้ว

  • การเริ่มต้นใน Sierra (10.12) การตั้งค่าคอนฟิเกอเรชันบางอย่างไม่สามารถเปลี่ยนแปลงได้ (ตัวอย่างเช่นบาง daemons เรียกใช้ไม่สามารถยกเลิกการโหลด)

  • เริ่มต้นใน Mojave (10.14) การเข้าถึงข้อมูลส่วนบุคคลของผู้ใช้ (อีเมลผู้ติดต่อ ฯลฯ ) ถูก จำกัด เฉพาะแอพที่ผู้ใช้ได้อนุมัติให้เข้าถึงข้อมูลนั้น โดยทั่วไปถือว่าเป็นคุณสมบัติแยกต่างหาก (เรียกว่าการปกป้องข้อมูลส่วนบุคคลหรือ TCC) แต่ขึ้นอยู่กับ SIP และการปิดใช้งาน SIP จะปิดใช้งานด้วยเช่นกัน ดู: "MacOS Mojave นำไปใช้เพื่อ จำกัด การเข้าถึงแอปพลิเคชันในข้อมูลส่วนบุคคลได้อย่างไรและอย่างไร"

หากคุณไม่ต้องการข้อ จำกัด เหล่านี้ - เนื่องจากคุณต้องการแก้ไขระบบของคุณเกินกว่าที่จะอนุญาตหรือเพราะคุณกำลังพัฒนาและแก้ไขข้อบกพร่องบางอย่างเช่น kexts ที่ไม่สามารถใช้งานได้ภายใต้ข้อ จำกัด เหล่านี้คุณสามารถปิด SIP ได้ ในปัจจุบันสิ่งนี้ต้องทำการรีบูตในโหมดการกู้คืนและเรียกใช้คำสั่งcsrutil disable(และคุณสามารถเปิดใช้งานได้อีกครั้งในทำนองเดียวกันcsrutil enable)

คุณยังสามารถเลือกปิดใช้งานส่วนต่างๆของ SIP ได้ด้วย ตัวอย่างเช่นcsrutil enable --without kextจะปิดใช้งานข้อ จำกัด ส่วนขยายเคอร์เนลของ SIP แต่จะคงการป้องกันอื่นไว้

แต่โปรดหยุดและคิดก่อนปิดการใช้งาน SIP ไม่ว่าจะเป็นการชั่วคราวหรือเพียงบางส่วน: คุณจำเป็นต้องปิดการใช้งานจริงหรือมีวิธีที่ดีกว่า (สอดคล้องกับ SIP) ในการทำสิ่งที่คุณต้องการหรือไม่? คุณจำเป็นต้องปรับเปลี่ยนบางสิ่งบางอย่างใน/System/Libraryหรือ/binอะไรก็ตามหรือมันจะไปในสถานที่ที่ดีกว่าเช่น/Libraryหรือ/usr/local/binอื่น ๆ ? SIP อาจ "รู้สึก" จำกัด หากคุณไม่คุ้นเคยและมีเหตุผลที่ถูกต้องในการปิดการใช้งาน แต่มีหลายสิ่งที่บังคับให้ใช้จริง ๆ

เพื่อเน้นย้ำถึงความสำคัญของการออกเท่าของ SIP เปิดการใช้งานเท่าของเวลาที่เป็นไปได้ให้พิจารณาเหตุการณ์วันที่ 23 กันยายน 2019 Google เปิดตัวการปรับปรุงไปยัง Chrome ที่พยายามจะเข้ามาแทนที่การเชื่อมโยงสัญลักษณ์จากไป/var /private/varในระบบส่วนใหญ่ SIP บล็อกสิ่งนี้และไม่มีผลเสีย บนระบบที่ปิดใช้งาน SIP จะทำให้ macOS แสดงผลเสียหายและไม่สามารถบูตได้ สาเหตุที่พบบ่อยที่สุดสำหรับการปิดใช้งาน SIP คือการโหลดส่วนขยายเคอร์เนลที่ไม่ได้รับการอนุมัติ (/ ลงนามไม่ถูกต้อง) (เฉพาะไดรเวอร์วิดีโอ) หากพวกเขาต้องการปิดใช้งานข้อ จำกัด kext เท่านั้นพวกเขาจะไม่ได้รับผลกระทบ ดูด้ายอย่างเป็นทางการของ Google สนับสนุน , superuser Q & A กับมันและบทความ Ars Technica

อ้างอิงและเพิ่มเติมข้อมูล: นำเสนอ WWDC ที่ "การรักษาความปลอดภัยและปพลิเคชันของคุณ"เป็นคำอธิบายที่ดีโดย Eldad Eilam บน quora.comที่รีวิว Ars Technica ของ El Capitanและบทความสนับสนุนของแอปเปิ้ลใน SIPและการดำน้ำลึกที่อุดมไปด้วย Trouton ( ใครโพสต์คำตอบสำหรับคำถามนี้ด้วย )


1
ขอบคุณมาก ผมถามคำถามนี้เพราะผมเป็นเรื่องเกี่ยวกับการเชื่อมโยงไปยังบทความ Quora ว่าอีกคำถามกอง Exchange และตระหนักแล้วที่ไม่ได้ย้ายที่ถูกต้อง ;-)
Josh

15
... นอกจากนี้ทั้งหมดทำให้ฉันต้องการเขียนkextหรือบางสิ่งบางอย่างเพื่อให้ตัวเองเพื่อสร้างไบนารีซึ่งฉันสามารถเรียกใช้ในบรรทัดคำสั่งเพื่อกลับไปที่การเข้าถึงไม่ จำกัด !
Josh

1
@ วลาดิเมียร์ขออภัยฉันไม่มีข้อมูลภายในเกี่ยวกับแผนของ Apple ฉันเดาว่ามันคงติดอยู่ในอนาคตอันใกล้แม้ว่าฉันจะไม่แปลกใจถ้ามัน (และ SIP เอง) เปลี่ยนแปลงอย่างมีนัยสำคัญในรุ่นต่อ ๆ ไป
Gordon Davisson

5
มีช่วงเวลาที่ฉันเกลียด Apple ฉันขอบคุณที่ทำให้มันยากที่จะยิงตัวคุณเอง (หลายปีที่ผ่านมาฉันเคยตบไฟล์ข้อความโดยไม่ตั้งใจลงใน MBR ของฉันบน Linux) แต่มีบางครั้งที่คุณจำเป็นต้องใส่ลิงก์เพิ่มเติมใน / usr / bin และมี หากต้องการผ่านขั้นตอนการปิดใช้งานการป้องกันที่ดีเป็นอย่างอื่นเพียงเพื่อจุดประสงค์นั้นก็เป็นบิดาและน่ารำคาญเกินไป บทสนทนาพิเศษพร้อมคำเตือนน่าจะเพียงพอแล้ว
ดาวอังคาร

2
ดูเหมือนว่าวิธีที่ล่วงล้ำน้อยกว่าคือปิดการใช้งาน SIP แก้ไขไฟล์ต้นแบบเพื่อลบข้อ จำกัด เฉพาะกับไบนารีที่คุณต้องการแทนที่และเปิดใช้งาน SIP อีกครั้ง
Joshua

92

สำหรับฉันมันหมายถึง DTrace ไม่ทำงานอีกต่อไป

DTrace คล้ายกับ ptrace / strace ใน Linux ซึ่งช่วยให้คุณเห็นว่ากระบวนการพูดกับเคอร์เนลอย่างไร ทุกครั้งที่กระบวนการต้องการเปิดไฟล์เขียนไฟล์หรือเปิดพอร์ต ฯลฯ จำเป็นต้องถามเคอร์เนล ใน Linux กระบวนการตรวจสอบนี้เกิดขึ้นนอกเคอร์เนลใน "userland" ดังนั้นการอนุญาตจึงค่อนข้างละเอียด ผู้ใช้สามารถตรวจสอบแอปพลิเคชันของตนเอง (เพื่อแก้ไขข้อบกพร่องค้นหาการรั่วไหลของหน่วยความจำ ฯลฯ ) แต่จะต้องเป็นรูทเพื่อตรวจสอบกระบวนการของผู้ใช้รายอื่น

DTrace บน OSX สามารถทำงานได้ในระดับเคอร์เนลทำให้มีประสิทธิภาพและประสิทธิภาพมากขึ้น แต่ต้องการการเข้าถึงรูทเพื่อเพิ่มโพรบเข้าไปในเคอร์เนลและทำทุกอย่าง ผู้ใช้ไม่สามารถติดตามกระบวนการของตัวเองโดยไม่ต้องเป็นรูท แต่ในฐานะที่เป็นรูทพวกเขาไม่เพียงสามารถเฝ้าดูกระบวนการของตนเอง แต่ในความเป็นจริงกระบวนการทั้งหมดในระบบพร้อมกัน ตัวอย่างเช่นคุณสามารถดูไฟล์ (ด้วย iosnoop) และดูกระบวนการที่อ่านได้ นี่เป็นหนึ่งในคุณสมบัติที่มีประโยชน์ที่สุดในการตรวจจับมัลแวร์ เนื่องจากเคอร์เนลยังเกี่ยวข้องกับเครือข่าย IO เหมือนกันที่นั่น Wireshark ตรวจพบกิจกรรมเครือข่ายที่ผิดปกติ DTrace จะบอกคุณถึงกระบวนการส่งข้อมูลแม้ว่ามันจะถูกฝังอยู่ในระบบเช่นเดียวกับเคอร์เนลก็ตาม

อย่างไรก็ตามในฐานะของ El Capitan แอปเปิ้ลได้ป้องกันไม่ให้ DTrace ทำงานอย่างตั้งใจ - เนื่องจากมีการกำหนดเป้าหมายเฉพาะและแยกออกมาเป็นสิ่งที่ จำกัด SIP ทำไมพวกเขาถึงทำเช่นนี้? ก่อนหน้านี้ Apple ได้ปรับเปลี่ยนเคอร์เนลและ DTrace เพื่อให้กระบวนการบางอย่างยกเลิกการติดตามผ่าน DTrace (ซึ่งทำให้นักวิจัยด้านความปลอดภัยจำนวนมากเสียเวลาเพราะกระบวนการบางอย่างไม่ได้รับการ จำกัด แม้ในขณะที่รูทรวมมัลแวร์) เหตุผลของพวกเขาคือเพื่อปกป้อง DRM ในแอปเช่น iTunes เนื่องจากในทางทฤษฎีใครบางคนสามารถ DTrace และดึงข้อมูลที่ไม่ได้ DRM ออกจากหน่วยความจำของกระบวนการ

อย่างไรก็ตามมีการทำงานที่สำคัญที่อนุญาตให้นักวิจัยทำงานต่อไปและนั่นคือการปรับเปลี่ยนเคอร์เนลเพื่อเพิกเฉยต่อสถานะการเลือกไม่ใช้ดังนั้น DTrace จึงยังสามารถใช้กับกระบวนการเหล่านี้ได้ นี่เป็นสิ่งที่ดีจริงๆเพราะโปรแกรมที่พยายามหลบการตรวจจับซึ่งตอนนี้สว่างขึ้นด้วยการตั้งค่าสถานะแบบไม่มีการติดตาม ทุกสิ่งที่ Apple หรือผู้ร้ายต้องการซ่อนอยู่ในสายตาที่ชัดเจน ...

แต่ตอนนี้มันไม่ทำงานดังนั้นสิ่งนี้มีผลกับคุณอย่างไร มันจะส่งผลต่อคุณทั้งทางตรงและทางอ้อม โดยตรงมันจะจำกัดความสามารถของคุณในการตรวจสอบระบบของคุณ เครื่องมือการดูแลระบบและการตรวจสอบระดับต่ำจำนวนมาก (ซึ่งเครื่องมือระดับสูงสร้างขึ้น) จะไม่ทำงานอีกต่อไป อย่างไรก็ตามผลกระทบทางอ้อมจะมีขนาดใหญ่ขึ้น - ผู้เชี่ยวชาญด้านความปลอดภัยต้องพึ่งพาการเข้าถึงระบบที่ลึกเพื่อตรวจจับภัยคุกคามที่เลวร้ายที่สุด เราไม่สามารถทำเช่นนั้นได้อีก เป็นสิ่งสำคัญเมื่อวิเคราะห์มัลแวร์ที่ไม่ทราบว่ากำลังทำงานอยู่ในดีบักเกอร์หรือ honeypot การปิดใช้งาน SIP จะบอกซอฟต์แวร์ทั้งหมดทั้งจากคนเลวและ Apple ว่ามีการเฝ้าดูระบบนี้ ไม่มีคนดูอีกต่อไป หาก SIP เกี่ยวกับความปลอดภัยผู้ใช้สามารถให้การศึกษาแก่ผู้ใช้เกี่ยวกับรูท - แทนที่จะลบออก ท้ายที่สุดนี่หมายความว่า Apple ได้เปลี่ยน 'ความปลอดภัย' เป็นทั้งหมดและสิ้นสุดทั้งหมด 'ของรหัสผ่านรูทด้วยกลไกการป้องกัน SIP แบบ' เป็นทั้งหมดและปิดทั้งหมด ' หรือถ้าคุณเก่งด้านวิศวกรรมสังคมรหัสผ่านรูทพร้อมรีบูต ...

นอกจากนี้ยังมี: ป้อนคำอธิบายรูปภาพที่นี่


3
อีกทั้งฉันได้ลดคำตอบลงเนื่องจากไม่ตอบคำถามคือ: อะไรคือคุณสมบัติ "รูต" ของ El Capitan ในระดับเทคนิค? sudo-s จะยังใช้งานได้และถ้าเป็นเช่นนั้นประสบการณ์การใช้เชลล์เป็นรูตจะเปลี่ยนไปอย่างไร . ดูเหมือนว่าคำตอบนี้จะพูดเกี่ยวกับ DTrace
Josh

24
ฉันคิดว่าคำตอบนั้นพูดอย่างชัดเจนและแม่นยำในส่วนที่ดีของคำถามซึ่งเป็นวิธีที่ประสบการณ์การใช้เชลล์ในฐานะที่เป็นรูตจะเปลี่ยนไป Sudo ตอนนี้หลอก sudo ในความเป็นจริงมีการเพิ่มเลเยอร์ของสถาปัตยกรรม ดูเหมือนจะเกี่ยวข้องกับฉัน และสำหรับการทำมาหากินของชายคนนี้ ทำไมต้องลงคะแนนนั่น
sas08

5
@patrix ฉันไม่เข้าใจความแตกต่างของญาณวิทยา สิ่งที่เป็นและสิ่งที่พวกเขาทำและทำไมพวกเขาอยู่มีความสัมพันธ์อย่างใกล้ชิด แน่นอนว่าโพสต์นี้เริ่มต้นด้วยสื่อกลางที่พูดถึงคุณลักษณะหนึ่ง แต่ก็สามารถสรุปได้ดี ถาม "สิ่งนี้จะเปลี่ยนประสบการณ์ของนักพัฒนาได้อย่างไร" ในความเป็นจริงแล้วคำเชิญเปิดกว้างและอัตนัยให้นักพัฒนาพูดคุยเกี่ยวกับประสบการณ์ของพวกเขา การวางคำถามเหล่านี้ในการตีข่าวไปสู่การคัดค้านที่คลุมเครือและพูดเกินจริง "โลกจะจบลงเพราะเราไม่สามารถหยั่งรากได้" ดูเหมือนจะยกเลิกแนวคิดเรื่องอันตราย; สิ่งนี้แสดงให้เห็นถึงอันตรายต่อประสบการณ์การพัฒนา
sas08

4
ฉันจะไม่เพิ่มข้อมูลใด ๆ อีกต่อไปเพราะฉันเพิ่งจะคัดลอกสิ่งที่คำตอบอื่น ๆ ได้พูดและไม่ได้เพิ่มอะไรเข้าไปในหน้า มันอาจจะดีกว่าถ้าคำตอบด้านบนมีข้อมูลเพิ่มเติมเกี่ยวกับ DTrace ไม่ทำงานอีกต่อไปแล้วฉันจะลบคำตอบนี้ซ้ำซ้อน :) คำตอบอื่น ๆ เป็นเพียงสำเนาคาร์บอนของ arstechnica.com/apple/2015/09/ os-x-10-11-el-capitan-the-ars-technica-review / 9 / เชื่อมโยงในความคิดเห็นด้านบนเพื่อที่จะไปด้วย แต่บางสิ่งในคำตอบนี้เช่น DTrace ไม่ทำงานแม้จะมี SIP เป็น sudo ไม่มีที่ไหนที่อื่นในเน็ต แต่ที่นี่
JJ

3
สิ่งเดียวที่ฉันได้คิดออกมาก็คือถ้าคุณปิดใช้งาน SIP สำหรับ DTrace คุณสามารถแนบกับกระบวนการที่ไม่ได้รับสิทธิ์ที่ จำกัด เนื่องจาก El Cap เป็นทุกสิ่งที่มาพร้อมกับระบบ (เช่น Safari) มีวิธี "โง่" ซึ่งเป็นการคัดลอกไบนารีระบบทั้งหมดไปยังไดเรกทอรีใหม่เช่น / rootless (ด้วยโครงสร้างไดเรกทอรีเดียวกัน) จากนั้นทำการ chroot สำหรับ / rootless ตอนนี้ทุกอย่างทำงานฟรีไม่มีสิทธิ์และสามารถแนบเกินไป วิธีที่ชาญฉลาดคือการติดตั้งระบบไฟล์ของคุณใหม่ แต่ฉันกลัวที่จะพูดว่าทำไมเพราะ Apple ไม่ต้องสงสัยเลยว่าล็อกประตูหนี ...
JJ

49

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 ส่วนขยายเคอร์เนลต้อง:

  1. ลงชื่อด้วยID ผู้พัฒนาสำหรับการลงนามใบรับรองKexts
  2. ติดตั้งลงใน/ Library / Extensions

หากติดตั้งส่วนขยายเคอร์เนลที่ไม่ได้ลงชื่อ SIP จะต้องปิดใช้งานก่อน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ SIP โปรดดูที่ลิงค์ด้านล่าง:

การป้องกันความสมบูรณ์ของระบบ - การเพิ่มเลเยอร์อื่นให้กับรูปแบบความปลอดภัยของ Apple


4
มันจะดีเมื่อหน้าจอสามารถถูกแทนที่ด้วยข้อความธรรมดาดู: ท้อหน้าจอของรหัสและ / หรือข้อผิดพลาด
kenorb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.