สวัสดีผู้อ่านทุกท่านครับ กลับมาพบกับบทความในเรื่องของ Mobile Application Security กันต่อนะครับ หลังจากที่ห่างหายกันไปนานเลยทีเดียว ในบทความความตอนนี้จะเป็นเรื่องของ Device Rooting นะครับ แอดคิดว่าผู้อ่านหลายๆท่านคงจะเคยได้ยินหรือรู้มาบ้างแล้วว่ามันคืออะไร ส่วนใหญ่แล้วเค้า Root โทรศัพท์กันไปเพื่ออะไร แล้วมันเกี่ยวข้องอะไรกับ Security กันล่ะ เพื่อไม่ให้เป็นการเสียเวลาเราไปเข้าสู่เนื้อหากันเลยดีกว่าครับ
What is Rooting
ในหัวข้อแรกเราจะมาพูดถึงเรื่องของการ Rooting กันครับว่ามันคืออะไรกันแน่ ซึ่งถ้าจะอธิบายแบบให้เข้าใจง่ายๆเลยการ Root คือการที่ทำให้เราหรือผู้ใช้งานได้รับสิทธิ์ของ “root” หรือสิทธิ์สูงสุดสำหรับอุปกรณ์ Android ซึ่งสิทธิ์สูงสุดนี้ก็เหมือนกับสิทธิ์ root บนระบบปฏิบัติการ Linux นั่นเองครับ
โดยปกติแล้วทางผู้ผลิตอุปกรณ์ Android โดยส่วนใหญ่จะไม่ให้ผู้ใช้งานเข้าถึงสิทธิ์ของ root ได้เพื่อความปลอดภัยจากการใช้งานของผู้ใช้งานเอง ซึ่งการที่เราจะสามารถเข้าถึงสิทธิ์ของ Root ได้โดยส่วนใหญ่เราต้อง Exploit ช่องโหว่บนอุปกรณ์ Android ของเราและยกสิทธิ์ให้สามารถเข้าถึงหรือใช้งานสิทธิ์ของ Root ได้ ซึ่งช่องโหว่ดังกล่าวจะเกี่ยวข้องกับอุปกรณ์, เวอร์ชัน และ Source Code นั่นเองครับ นั่นไม่ได้หมายความว่าต่อให้เป็นอุปกรณ์ยี่ห้อเดียวกัน รุ่นเดียวกัน จะมีช่องโหว่เหมือนกันนะครับ ทั้งนี้ขึ้นอยู่กับ Generation ของอุปกรณ์นั้นๆด้วย หลังจากที่เรา Exploit ช่องโหว่นั้นๆสำเร็จ ขั้นตอนต่อมาคือการนำ Linux su binary เพิ่มเข้ามาใน User Path ของตัวอุปกรณ์ของเราครับ เช่นที่ /system/xbin โดย “su” หรือ “substitute user” ทำให้เราสามารถใช้งาน user อื่นได้ซึ่งก็รวมไปถึงสิทธิ์ของ Root ด้วยนั่นเอง หลังจากที่เพิ่ม su binary เข้าไปที่ User Path แล้ว แอปพลิเคชันอื่นๆบนอุปกรณ์ Android สามารถที่จะร้องขอใช้งานสิทธิ์ของ Root ได้
ปัญหาที่อาจเกิดขึ้นจากการ Root
อย่างที่ได้อธิบายในหัวข้อก่อนหน้าไปแล้วนะครับ การ Root ทำให้เราสามารถทดสอบด้าน Security ของแอปพลิเคชันบนระบบ Android ได้สะดวกมากขึ้นก็จริง แต่การ Root ก็มีความเสี่ยงเช่นกันครับ เรามาลองนึกภาพดูนะครับ ถ้าผู้ใช้งานได้สิทธิ์ Root บนระบบ Android แล้วอุปกรณ์ดังกล่าวดันไปติดตั้งแอปพลิเคชันที่เป็นอันตรายหรือเป็นแอปพลิเคชันจาก Hacker ขึ้นมาไม่ว่าจะด้วยวิธีใดก็ตาม แอปพลิเคชันตัวนั้นอาจจะได้สิทธิ์ Root ด้วย ซึ่งทำให้สามารถเข้าถึงข้อมูลต่างๆของอุปกรณ์เราได้ ไม่ว่าจะเป็นข้อมูลของแอปพลิเคชันอื่นที่ได้ติดตั้งไว้บนอุปกรณ์ ข้อมูลที่เก็บอยู่บน Local Storage ของตัวอุปกรณ์เอง
โดยปกติแล้ว Android มีระบบการรักษาความปลอดภัยหลักๆเลยคือ UID ครับ ซึ่งเหมือนกันกับ Linux นั่นเอง ตัว UID จะมีความแตกต่างกันไปตามแอปพลิเคชันที่เราติดตั้งไว้บนเครื่อง เมื่อ UID แตกต่างกันทำให้แอปพลิเคชันไม่สามารถเข้าถึงหรือแก้ไขข้อมูลของแอปพลิเคชันอื่นได้ อย่างไรก็ตามหากแอปพลิเคชันได้รับสิทธิ์ของ Root ซึ่งเป็นสิทธิ์สูงสุดของระบบจะทำให้แอปพลิเคชันนั้นสามารถเข้าถึงข้อมูลของแอปพลิเคชันอื่นได้นั่นเอง
ดังนั้นแล้วการจะ Root อุปกรณ์ Android ใดๆก็ตามควรพิจารณาให้รอบคอบถึงข้อดีรวมถึงผลกระทบก่อนนะครับ
Custom ROMs
Custom ROMs หรือ Custom ROM Firmware หรือเราอาจจะเคยได้ยินคำว่า ROM โมกันมาบ้างแล้วแต่สำหรับใครที่ยังไม่รู้จักแอดขออธิบายโดยเริ่มจาก ROM ก่อนนะครับ ROM ก็คือหน่วยความจำที่มีระบบปฏิบัติการ Android อยู่ โดยทั่วไปแล้วจะแบ่งออกเป็น 2 ประเภทคือ ROM ที่มาจากผู้ผลิตอุปกรณ์นั้นๆและ Custom ROM นั่นเองครับ
OEM ROM หรือที่เรารู้จักกันในชื่อ ROM ศูนย์ เป็น ROM ที่พัฒนาโดยผู้ผลิตอุปกรณ์ Android ยี่ห้อนั้นๆ ซึ่งก็มีความแตกต่างกันไปตามแต่ละยี่ห้อ ไม่ว่าจะเป็นเรื่องของ Feature, UI หรือส่วนของ User Interface ซึ่งผู้ผลิตได้พัฒนาบนระบบ Android ทำให้แม้ว่าจะเป็น Android เวอร์ชันเดียวกัน แต่ก็มี Feature และ User Interface ที่แตกต่างกันไปตามแต่ละผู้ผลิตอุปกรณ์นั้นๆ
Custom ROM หรือที่เราเรียกกันว่า ROM โม เกิดจากการที่มีกลุ่มผู้พัฒนานำระบบ Android เดิมมาพัฒนาต่อ ดัดแปลง แก้ไข ให้มีคุณสมบัติหรือ Feature ที่ต้องการ โดยจุดเด่นหลักๆของ ROM ประเภทนี้คือมีความยืดหยุ่นในการใช้งานสูง ผู้ใช้งานสามารถปรับแต่งได้มากกว่า OEM ROM นอกจากนี้แล้วยังปลดล็อกข้อจำกัดต่างๆของ OEM ROM ด้วยความยืดหยุ่นในการปรับแต่งนี้เอง ทำให้ Custom ROM เป็นที่นิยมและมีผู้ใช้หลายคนนำมาติดตั้งใช้งาน
ผู้ใช้บางคนเลือกที่จะติดตั้ง Custom ROM แทนที่ระบบปฏิบัติการเดิมสำหรับอุปกรณ์รุ่นเก่าๆเพื่อให้สามารถใช้งาน Feature ใหม่ๆได้ หรือเพื่อข้ามข้อจำกัดต่างๆของ ROM เดิมที่มาจากผู้ผลิต, เพื่อให้สามารถเข้าถึงหรือใช้งาน Android เวอร์ชันใหม่ๆได้โดยไม่ต้องรออัปเดตจากทางผู้พัฒนา ซึ่ง Custom ROM ที่เป็นที่รู้จักกันดีเช่น OmniROM และ LineageOS ในบางครั้งการจะติดตั้ง Custom ROM ดังกล่าวอาจจะต้อง Rooting อุปกรณ์เพื่อปลดล็อก Bootloader ก่อนถึงจะสามารถติดตั้ง Custom ROM ได้ซึ่งก็จะทำให้ประกันสิ้นสุดทันที แต่ก็มีผู้ผลิตบางค่ายที่ไม่ได้มีการล็อก Bootloader มาทำให้ผู้ใช้สามารถปลดล็อก Bootloader และติดตั้ง ROM เองได้ง่ายมาก เช่น Google Nexus ครับ
Rooting for Testing
มาถึงหัวข้อสุดท้ายของบทความในตอนนี้แล้วนะครับซึ่งเป็นเรื่องของการ Root อุปกรณ์เพื่อนำมาทดสอบด้านความปลอดภัยของแอปพลิเคชัน ซึ่งในการทดสอบดังกล่าวหลายๆครั้งจำเป็นต้อง Root อุปกรณ์เพื่อให้สามารถทดสอบแอปพลิเคชันได้สะดวกขึ้นหรือเพื่อ Bypass Security ของแอปพลิเคชัน ผู้ทดสอบจะสามารถวิเคราะห์ความเสี่ยงหรือช่องโหว่ของแอปพลิเคชันได้ภายใต้เงื่อนไขที่กำหนด เช่น สามารถที่จะเข้าถึงหรือวิเคราะห์ข้อมูลที่ถูกป้องกันไว้โดยผู้พัฒนาแอปพลิเคชันนั้นๆ
ในการทดสอบบางครั้งก็สามารถทำได้บน Emulator ก็เพียงพอต่อการทดสอบ เพราะ Emulator อนุญาตให้เราเข้าถึงหรือใช้งานด้วยสิทธิ์ของ Root ทำให้การทดสอบความปลอดภัยบนแอปพลิเคชันของเราสามารถทำได้โดยง่าย อย่างไรก็ตามการทดสอบบน Emulator ในบางครั้งก็อาจจะติดขัดหรือไม่สะดวกในบางเรื่อง เพราะก็มี Emulator บางตัวที่ใช้ทรัพยากรค่อนข้างสูง ทำให้การทดสอบทำได้ค่อนข้างช้า
ดังนั้นแล้วเพื่อความรวดเร็วในการทดสอบแอดแนะนำว่าควรจะมีอุปกรณ์ Android ที่ได้ Root แล้วติดตัวไว้สักเครื่องซึ่ง Nexus ก็เป็นอุปกรณ์หนึ่งที่เราสามารถปลดล็อก Bootloader และ Root ได้ง่ายจึงเป็นทางเลือกที่ดีในการนำมาทดสอบ อย่างไรก็ตามอุปกรณ์ที่เราใช้ในการทดสอบถ้าเป็นไปได้ก็ไม่ควรนำมาใช้งานส่วนตัวหรือหากมีการใช้ก็ควรระวังในเรื่องของการติดตั้งแอปพลิเคชันต่างๆด้วยนะครับ