![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/th_TH/52d714626638d3391623c853be0c593b.png)
ความปลอดภัยของกระบวนการรันไทม์ใน iOS และ iPadOS
iOS และ iPadOS ช่วยรับรองความปลอดภัยของรันไทม์โดยการใช้ “Sandbox”, สิทธิ์ที่ประกาศ และการสุ่มเค้าโครงพื้นที่ที่อยู่ (ASLR)
การทำ Sandbox
แอปบุคคลหรือบริษัทอื่นทั้งหมดจะอยู่ใน “Sandbox” จึงถูกจำกัดจากการเข้าถึงไฟล์ที่จัดเก็บโดยแอปอื่นหรือจากการเปลี่ยนแปลงกับอุปกรณ์ การทำ Sandbox ได้รับการออกแอบบมาเพื่อป้องกันไม่ให้แอปเก็บข้อมูลหรือแก้ไขข้อมูลที่จัดเก็บโดยแอปอื่น แอปแต่ละตัวมีสารบบเริ่มต้นเฉพาะสำหรับไฟล์ของแอป ซึ่งจะมีการกำหนดแบบสุ่มเมื่อติดตั้งแอป ถ้าแอปของบริษัทอื่นต้องการเข้าถึงข้อมูลนอกเหนือจากข้อมูลของตนเอง แอปจะต้องใช้บริการที่ iOS และ iPadOS มีบริการให้อย่างชัดแจ้งเท่านั้น
ไฟล์ระบบและทรัพยากรยังถูกป้องกันจากแอปของผู้ใช้อีกด้วย โดยคุณสมบัติส่วนมากของไฟล์ระบบและทรัพยากร iOS และ iPadOS จะทำงานในฐานะ “mobile” ของผู้ใช้ที่ไม่ได้รับสิทธิพิเศษ และแอปของบุคคลหรือบริษัทอื่นทั้งหมดก็จะทำงานในฐานะนี้เช่นกัน ขณะที่พาร์ติชั่นระบบปฏิบัติการทั้งพาร์ติชั่นจะต่อเชื่อมเป็นแบบอ่านอย่างเดียว เครื่องมือที่ไม่จำเป็น เช่น บริการการเข้าสู่ระบบระยะไกลจะไม่รวมอยู่ในซอฟต์แวร์ระบบ และ API ไม่อนุญาตให้แอปยกระดับสิทธิ์ของตนเพื่อแก้ไขแอปอื่นหรือตัว iOS และ iPadOS เองได้
การใช้การให้สิทธิ์
การเข้าถึงข้อมูลผู้ใช้และคุณสมบัติ เช่น iCloud และความสามารถในการเพิ่มฟังก์ชั่นของแอปของบริษัทอื่นจะถูกควบคุมโดยใช้สิทธิ์ที่ประกาศ โดยสิทธิ์คือคู่ค่ากุญแจที่มีการลงชื่อเข้าแอปและอนุญาตการตรวจสอบสิทธิ์นอกเหนือไปจากปัจจัยรันไทม์ เช่น ID ผู้ใช้ของ UNIX เนื่องจากสิทธิ์มีการลงชื่อแบบดิจิทัล จึงไม่สามารถเปลี่ยนแปลงได้ สิทธิ์มีการใช้เป็นอย่างมากโดยแอประบบและดีมอนเพื่อทำงานที่ต้องได้รับสิทธิ์เฉพาะที่กระบวนการทำงานต้องทำงานในระดับราก สิ่งนี้ช่วยลดโอกาสของการยกระดับสิทธิ์โดยแอประบบหรือดีมอนที่มีพฤติกรรมที่กระทบต่อความมั่นคงปลอดภัยของข้อมูลได้เป็นอย่างมาก
นอกจากนี้ แอปจะสามารถทำการประมวลผลพื้นหลังผ่าน API ที่ระบบมีให้ได้เท่านั้น ซึ่งช่วยให้แอปทำงานต่อไปได้โดยไม่ลดทอนประสิทธิภาพการทำงาน หรือส่งผลกระทบอย่างมากต่ออายุการใช้งานแบตเตอรี่
การสุ่มเค้าโครงพื้นที่ที่อยู่
การสุ่มเค้าโครงพื้นที่ที่อยู่ (ASLR) จะช่วยปกป้องการแอบแฝงใช้ประโยชน์ของข้อผิดพลาดที่ทำให้หน่วยความจำเสียหาย แอปในตัวใช้ ASLR ซึ่งช่วยสุ่มพื้นที่หน่วยความจำทั้งหมดเมื่อเริ่มเปิดทำงาน นอกเหนือจากการทำงานเมื่อเปิดใช้งาน ASLR จะสุ่มจัดเรียงที่อยู่หน่วยความจำของรหัสประมวลผล คลังระบบ และโครงสร้างโปรแกรมที่เกี่ยวข้อง ซึ่งช่วยลดโอกาสของการแอบแฝงใช้ประโยชน์ต่างๆ ได้มากขึ้น ตัวอย่างเช่น ความพยายามโจมตี return-to-libc เพื่อหลอกอุปกรณ์ให้ใช้งานโค้ดที่เป็นอันตรายโดยการควบคุมที่อยู่หน่วยความจำของสแต็คและคลังระบบ การสุ่มตำแหน่งของสิ่งเหล่านี้ทำให้การโจมตียากขึ้นในการปฏิบัติการ โดยเฉพาะอย่างยิ่งบนอุปกรณ์หลายเครื่อง Xcode และสภาพแวดล้อมการพัฒนา iOS หรือ iPadOS จะผสานโปรแกรมของบริษัทอื่นเข้ากับการเปิดใช้การรองรับ ASLR โดยอัตโนมัติ
คุณสมบัติ Execute Never
iOS และ iPadOS มอบการปกป้องเพิ่มเติมโดยใช้คุณสมบัติ Execute Never (XN) ของ ARM ซึ่งจะทำเครื่องหมายหน้าหน่วยความจำเป็นไม่สามารถปฏิบัติงานได้ หน้าหน่วยความจำที่มีเครื่องหมายเป็นทั้งเขียนได้และปฏิบัติงานได้จะสามารถใช้ได้เฉพาะแอปที่อยู่ในเงื่อนไขที่ควบคุมเหล่านี้อย่างไม่ผิดเพี้ยนเท่านั้น: เคอร์เนลจะตรวจสอบตัวตนของสิทธิ์การเซ็นชื่อโค้ดไดนามิกของ Apple เท่านั้น แม้ในกรณีนั้น เฉพาะการเรียกใช้ mmap
แบบเดี่ยวเท่านั้นที่จะสามารถทำเพื่อร้องขอหน้าปฏิบัติงานได้และเขียนได้ซึ่งจะได้รับที่อยู่แบบสุ่ม Safari ใช้งานฟังก์ชั่นการทำงานนี้สำหรับคอมไพเลอร์ JavaScript Just-in-Time (JIT) ของ Safari