content-image
ARTICLES | 02 March 2021

ทำความรู้จักกับ Application Sandboxing บน Mobile Platform

author-image

Incognito Lab

เมื่อพูดถึงกลไกการรักษาความปลอดภัยของ Smartphone ในปัจจุบัน ไม่ว่าจะ iOS, Android หรือ Windows Phone ล้วนมีกลไกการรักษาความปลอดภัยพื้นฐานมาอยู่แล้วซึ่งช่วยให้ผู้ใช้งานทั่วไปสามารถใช้งาน Smartphone ได้อย่างมั่นคงปลอดภัยในระดับหนึ่ง

วันนี้ผมขอยก 1 ใน feature การรักษาความปลอดภัยของ Smartphone ที่เรียกว่า Application Sandboxing มาอธิบายให้ฟัง ว่า Application Sandboxing คืออะไร และมีดีอย่างไร

Application Sandboxing คืออะไร

Sandbox ในทาง Computer Security ก็คือการรันโปรแกรมหรือแอปพลิเคชัน ในสภาพแวดล้อมที่ถูกแยกออกจาก Host OS (เหมือนรันโปรแกรมบน Virtual Machine) เพื่อจำกัดไม่ให้โปรแกรมดังกล่าวเข้าถึงไฟล์ของระบบ หรือไฟล์ของโปรแกรมอื่น ๆ โดยไม่ได้รับอนุญาต และเพื่อให้ง่ายต่อการควบคุมสิทธิในการเข้าถึงของ โปรแกรมที่อยู่ใน Sandbox ด้วย โดยทั่วไปเมื่อพูดถึง Sandbox หลายคนจะคุ้นเคยกับการนำไปใช้เพื่อทดสอบพฤติกรรมของโปรแกรมที่น่าสงสัยว่าอาจมี Malware แอบแฝงอยู่ ทั้งนี้เพื่อจำกัดการแพร่กระจายของ Malware ไม่ให้ออกมานอก Sandbox ในทางกลับกัน เมื่อ Sandbox สามารถป้องกันไม่ให้โปรแกรมที่รันอยู่ภายในไปทำอันตรายโปรแกรมอื่น ๆ หรือระบบที่อยู่ภายนอก ดังนั้น Sandbox ก็สามารถป้องกันไม่ให้โปรแกรมอื่นที่อยู่นอก Sandbox เข้าถึงข้อมูล เปลี่ยนแปลง/แก้ไข หรือลบข้อมูลของโปรแกรมที่อยู่ใน Sandbox ได้เช่นเดียวกัน

หลักการของ Mobile Application Sandboxing

คือการใช้ Sandbox ในการแยกการทำงานของแต่ละแอปพลิเคชันบนมือถือแบบ 1 แอปพลิเคชัน ต่อ 1 Sandbox และมีการกำหนดสิทธิในการเข้าถึงข้อมูลและทรัพยากรของระบบไว้อย่างชัดเจน ทำให้แอปพลิเคชันไม่สามารถเข้าถึงข้อมูลข้ามกันได้ แต่ในกรณีที่แอปพลิเคชันจำเป็นต้องแชร์ข้อมูล เข้าถึงข้อมูลของแอปพลิเคชันอื่น หรือข้อมูลของระบบ ก็ยังคงสามารถทำได้ผ่าน API ของระบบที่แต่ละเจ้าได้ทำรองรับไว้ให้ เพื่อร้องขอสิทธิเพิ่มเติมในการเข้าถึงข้อมูลที่จำเป็นอีกที

ที่ได้อธิบายไปข้างต้นนั้นคือทฤษฎีล้วน ๆ แต่เมื่อนำมาใช้จริงในทางปฏิบัติ บนระบบปฏิบัติการที่มีโครงสร้างต่างกัน แน่นอนว่านิยามของ Application Sandboxing ของแต่ละเจ้าก็จะต่างกันออกไป แต่ว่าก็ยังคงคุณสมบัติตามที่กล่าวไปข้างต้นได้เหมือนเดิม ต่อไปจะขอพูดถึง Application Sandboxing บนแต่ละระบบปฏิบัติการว่าแท้จริงแล้วเป็นอย่างไร

Application Sandboxing ของ iOS

สำหรับ Application Sandboxing ของ iOS จะเรียกได้ว่ามีความคล้ายกับคอนเซ็ปต์มากที่สุด คือ แอปพลิเคชันจะถูกรันด้วย user เดียวกันคือ "mobile" แต่ละแอปพลิเคชันก็จะถูกรันอยู่บน Sandbox อีกที

สำหรับ iOS ตั้งแต่ที่แอปพลิเคชันถูกติดตั้งลงบนเครื่อง แอปพลิเคชันจะถูกกำหนดสิทธิในการเข้าถึงแบบต่ำที่สุด คือสามารถอ่าน/เขียนข้อมูลที่อยู่ใน Directory ของตัวแอปพลิเคชันเองเท่านั้น แทบจะเข้าถึงทรัพยากรหรือข้อมูลอื่น ๆ ของระบบไม่ได้เลย จึงถือเป็นข้อดีสำหรับผู้ใช้งานทั่วไปที่แอปพลิเคชันจะไม่สามารถเข้าถึงข้อมูลบนมือถือโดยไม่ได้รับอนุญาต เมื่อแอปพลิเคชันถูกรัน หากมีสิทธิใดที่แอปพลิเคชันดังกล่าวจำเป็นต้องใช้ แต่ยังไม่ได้รับอนุญาตให้เข้าถึง แอปพลิเคชันสามารถใช้ API ของระบบเพื่อร้องขอให้ผู้ใช้งานอนุญาตให้แอปพลิเคชันสามารถเข้าถึงทรัพยากรที่จำเป็นต่อการทำงานได้ ที่มักเห็นบ่อย ๆ ก็คือการขอสิทธิในเข้าถึงการแจ้งเตือน หรือการขอเข้าถึงกล้องและไมโครโฟน เป็นต้น

การอนุญาตสิทธิให้กับแอปพลิเคชันจะทำเพียงครั้งแรกครั้งเดียวเท่านั้น ไม่ต้องอนุญาตทุกครั้งที่แอปพลิเคชันต้องการเข้าถึงส่วนดังกล่าว แต่ก็แลกมาด้วยข้อเสียด้านความเป็นส่วนตัวคือแอปพลิเคชันจะสามารถเข้าถึงสิ่งที่เราได้อนุญาตไปแล้วได้ตลอดเวลา สำหรับการจัดการกับสิทธิที่เราเคยอนุญาตให้กับแต่ละแอปพลิเคชัน สามารถทำได้ 2 วิธี คือ

  1. ไปที่ Setting -> [ชื่อแอปพลิเคชัน] สำหรับจัดการสิทธิแบบเจาะจงแอปพลิเคชัน
  2. ไปที่ Setting -> Privacy -> [ชื่อทรัพยากร] สำหรับจัดการสิทธิแบบเจาะจงทรัพยากรแทน เช่น ต้องการดูว่ามีแอปพลิเคชันใดที่สามารถเข้าถึงไมโครโฟนได้บ้าง ก็ให้ไปที่ Setting -> Privacy -> Microphone เป็นต้น

ถ้าต้องการเข้าถึงข้อมูลที่อยู่ใน Sandbox แน่นอนว่า วิธีที่ชัวร์ที่สุดคือการ jailbreak เครื่องให้ได้สิทธิ root ก็จะสามารถเข้าถึงข้อมูลทุกอย่างบน iOS ได้ แต่ก็ไม่ใช่ทุกคนที่จะอยาก jailbreak เครื่องตัวเองแน่นอน

อีกวิธีหนึ่งในการเข้าถึงข้อมูลที่อยู่ใน Sandbox โดยที่ไม่ต้อง jailbreak คือการใช้เครื่องมือที่ชื่อว่า iFunbox, iFunbox ใช้ AFC (Apple File Conduit) protocol ที่ iTunes ใช้ในการเข้าถึงข้อมูลที่อยู่ใน Sandbox **แต่น่าเสียดาย ตั้งแต่ iOS 8.3 ขึ้นไป Apple ได้ปิดช่องทางนี้เป็นที่เรียบร้อย โดยกำหนดให้แค่ iTunes เพียงโปรแกรมเดียวที่สามารถเข้าถึงข้อมูลใน Sandbox ได้ ทำให้ iFunbox สามารถเข้าถึงข้อมูลใน Sandbox ของ iOS nonjailbreak ที่เป็นเวอร์ชันต่ำกว่า 8.3 เท่านั้น** สำหรับ iOS 8.3+ เจ้าของแอปสามารถไปตั้งค่า UIFileSharingEnabled ให้เป็น True ได้ในไฟล์ iTunesMetadata.plist เพื่ออนุญาตให้ AFC สามารถเข้าถึงข้อมูลที่อยู่ใน Sandbox ได้ โดย default ค่านี้จะถูกกำหนดมาเป็น False

Application Sandboxing ของ Android

Sandbox บน Android จะต่างกับ iOS อย่างสิ้นเชิง คือแอปพลิเคชันจะไม่ได้รันบน Sandbox แต่ว่าแต่ละแอปพลิเคชันจะรันบน memory ที่เป็นแยกจากกันอย่างสิ้นเชิงแทน ไม่มีการแชร์ memory ทำให้แอปพลิเคชันไม่สามารถแทรกแซงการทำงานหรือแก้ไขค่าที่อยู่บน memory ของแอปพลิเคชันอื่น ๆ ได้ นอกจากนี้แต่ละแอปพลิเคชันจะถูกกำหนด user เฉพาะขึ้นมาสำหรับรันแอปพลิเคชันดังกล่าวเท่านั้น ทำให้ทุกแอปพลิเคชันจะถูกรันบน user ที่ไม่ซ้ำกัน

การรันบน Memory ที่แยกจากกัน และใช้ user ที่ไม่ซ้ำกัน แทนที่จะรันบน Sandbox ทำให้แอปพลิเคชันจะมีอิสระในการอ่าน/เขียน ข้อมูลใด ๆ บนระบบก็ได้ ที่ได้รับอนุญาต หมายความว่า ในขณะที่ iOS ใช้ Sandbox ในการจัดการและจำกัดสิทธิของแอปพลิเคชัน Android กลับเลือกที่จะใช้ OS ในการจัดการสิทธิของแอปพลิเคชันแทน ด้วยการกำหนด user ที่แตกต่างกันให้กับแต่ละแอปพลิเคชัน แต่ว่าก็ยังคงคุณสมบัติที่ว่าแต่ละแอปพลิเคชันจะไม่สามารถแทรกแซงหรือเข้าถึงข้อมูลของกันและกันได้อยู่

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

ช้าก่อน!…ตั้งแต่ API 23 ขึ้นไป (Android 6 ขึ้นไป) Android ได้ใช้งานการโมเดลในการกำหนดสิทธิให้กับแอปพลิเคชันแบบใหม่ ก็คือแทนที่ผู้ใช้จะต้องอนุญาตทั้งหมดตั้งแต่ตอนติดตั้ง เป็นอนุญาตเมื่อมีการใช้ของานแทน (แบบ iOS) ซึ่งอันนี้ขึ้นอยู่กับผู้พัฒนาแอปพลิเคชันนั้น ๆ ว่ากำหนดไว้แบบไหน นอกจากนี้แล้ว API 23 ขึ้นไปยังจำแนกประเภทของสิทธิออกเป็น 2 ระดับ คือสิทธิทั่วไป กับ สิทธิอันตราย ดูรายละเอียดเพิ่มเติมเกี่ยวกับการจำแนกสิทธิ

นอกจากสิทธิทั่วไปกับสิทธิอันตรายแล้ว Android ยังมีสิทธิพิเศษอีกอันนีงในชื่อ BIND_DEVICE_ADMIN ซึ่งคือการขอสิทธิ root ของระบบนั่นเอง ซึ่งหากแอปพลิเคชันมีการร้องขอสิทธินี้ หน้าตาสำหรับการอนุญาตสิทธินี้จะแตกต่างกับการอนุญาตสิทธิแบบทั่วไป

สำหรับการเข้าถึงข้อมูลที่ถูกเก็บอยู่ในแอปพลิเคชัน Android จะกำหนดสิทธิให้เฉพาะผู้ใช้ที่เป็นเจ้าของ directory ดังกล่าวเท่านั้นในการอ่านและเขียนข้อมูลเหล่านั้นได้ ซึ่งก็แน่นอนว่า วิธีที่ชัวร์ที่สุดคือการ root เครื่องนั่นเอง แต่สำหรับ Android เราสามารถเปิด USB Debugging เพื่อใช้ adb root ในการ shell เข้าไปผ่าน USB แทนที่จะต้อง root เครื่องจริง ๆ

Application Sandboxing ของ Windows Phone

ต้องเกริ่นถึงโครงสร้างของตัว Windows Phone สักเล็กน้อยว่า Windows Phone ใช้ .NET Framework ในการรันแอปพลิเคชัน และแอปพลิเคชันจะถูกเขียนจาก 2 เครื่องมือหลัก ๆ อย่าง Silverlight และ XNA

ซึ่งตัว runtime ของทั้ง Siverlight และ XNA ล้วนมี Application Sandboxing feature อยู่แล้ว ทำให้แอปพลิเคชันที่รันบน Windows Phone จะถูกรันบน Sandbox เช่นเดียวกับ iOS นั่นเอง

ในขณะที่ platform อื่น ๆ ปล่อยให้แอปพลิเคชันเขียน หรือสร้างไฟล์ต่าง ๆ บน directory ของระบบ, Windows Phone มีทางเลือกในการเก็บข้อมูลของแอปพลิเคชันบนสิ่งที่เรียกว่า Windows Phone Isolated Storage ซึ่งมีรูปแบบคล้ายกับฐานข้อมูลทั่วไปที่ถูกออกแบบมาเพื่อป้องกันการเข้าถึงโดยแอปพลิเคชันอื่น

เรื่องการจัดการสิทธิของแอปพลิเคชันบน Windows Phone จะมีความคล้ายคลึงกับ Android แต่จะมีการจัดการเรื่อง Privacy ได้ดีกว่า ไม่ให้แอปเข้าถึงข้อมูลที่ sensitive เกินความจำเป็น

สำหรับการเข้าถึงไฟล์บน Windows Phone หากเป็นเวอร์ชัน 7 ลงไปสามารถเข้าถึงได้ผ่าน Windows PC หรือ Laptop เพียงเชื่อมต่อมือถือผ่าน USB แต่น่าเสียดายที่ตั้งแต่ Windows Phone 8 เป็นต้นไปมีการจำกัดสิทธิในการเข้าถึงไฟล์บนระบบให้เข้าถึงได้ยากขึ้น และไม่สามารถเข้าได้ตรง ๆ แบบ 7 อีกต่อไป โดยในปัจจุบันยังไม่มีเครื่องมือที่รองรับในการเข้าถึงข้อมูลของ Window Phone 8 ขึ้นไปอย่างเต็มที่

logologo

INCOGNITO LAB CO., LTD.

38 Soi Petchakasem 30, Petchakasem Road, Pak Khlong Phasi Charoen, Phasi Charoen, Bangkok 10160

©2025 Incognito Lab Co., Ltd. All rights reserved

Terms & Conditions Privacy Policy