แอปพลิเคชันบนแอนดรอยด์ปลอดภัยมากน้อยแค่ไหน?
ในทุกวันนี้ต้องยอมรับครับว่ามีแอปพลิเคชันใหม่ๆเกิดขึ้นบน Play Store เยอะขึ้นมากในแต่ละวัน และก็มีอยู่บ่อยๆที่เป็นแอปพลิเคชันใหม่มาแรงเป็นกระแสฮิตในบางช่วงหรือผู้ใช้บางกลุ่ม
แต่เราเคยสงสัยกันมั้ยว่าแอปพลิเคชันแต่ละตัวนั้นมีความปลอดภัยมากน้อยแค่ไหน? ดังนั้นผมจึงอยากจะแชร์ประสบการณ์เกี่ยวกับความปลอดภัยของแอปพลิเคชันแอนดรอยด์ในมุมมองของนักพัฒนากันบ้าง
ติดตั้ง Antivirus ไว้ในเครื่องสิ
แต่ว่ามันจะช่วยได้จริงๆหรือป่าว?
ผมเชื่อว่าหลายๆคนที่เคยใช้แอปพวกนี้ก็จะพบว่ามันก็มีการแจ้งเตือนแอปที่ไม่ปลอดภัยนะ แต่บ่อยครั้งมันก็ทำให้รำคาญซะมากกว่า และทำให้เครื่องทำงานได้ช้าลง ซึ่งการทำงานของ Antivirus บนแอนดรอยด์นั้นไม่ได้เหมือนกับบน Windows ที่จะสั่งให้สแกนไฟล์ทุกไฟล์ในเครื่องเพื่อหาว่าไฟล์ไหนอันตราย
เพราะระบบของแอนดรอยด์ (ที่ไม่ได้รูท) จะไม่ยอมให้แอปไปยุ่งกับข้อมูลหรือการทำงานแอปตัวอื่นๆโดยตรงอยู่แล้ว หรือจะไปดักข้อมูลที่รับส่งผ่านอินเตอร์เน็ตมันก็ทำไม่ได้ (เพราะถ้ามันทำได้ ผมว่า Antivirus ตัวนั้นแหละที่น่ากลัวกว่า)
ถ้าลองเปลี่ยนจากมุมมองผู้ใช้แอนดรอยด์มาเป็นนักพัฒนาแอนดรอยด์ด้านมืด อยู่ๆวันหนึ่งผมเกิดอยากจะสร้างแอปที่อันตรายขึ้นมาซักตัว ผมก็จะสร้างแอปดักข้อมูลผู้ใช้งานเป็นหลัก เพราะว่ามันตรวจสอบยากและไม่ทำให้เกิดอันตรายกับระบบและผู้ใช้งานโดยตรง ดังนั้นกว่าจะตรวจพบจึงไม่ใช่เรื่องง่าย (หรือตรวจสอบไม่เจอด้วยซ้ำ)
เพราะทุกวันนี้แอปที่อันตรายส่วนใหญ่จะเป็นพวกแอปแอบดักข้อมูลแล้วส่งกลับไปที่เซิฟเวอร์ของนักพัฒนา ถ้ายังเคยจำได้ในกรณีของพี่เนย NuuNeoi ที่เคยทำวีดีโอเกี่ยวกับแอปดักข้อมูลผู้ใช้ว่ามันทำกันได้ง่ายแค่ไหน และเป็นวิธีที่ Simple มากๆ
และที่ผมชอบสุดเกี่ยวกับ Antivirus คือแอปตัวหนึ่งที่หลอกว่าตัวเองเป็น Antivirus ที่ทำงานเร็วและปลอดภัย และอยู่ในอันดับท็อปของหน้าดาวน์โหลด จนโดนนักพัฒนาคุ้ยโค๊ดออกมาดูก็พบว่าแอปตัวนี้ไม่ได้ทำอะไรเลย (และแอปนี้ตัวขายจนทำเงินไปได้มากพอสมควร ก่อนที่จะโดนแบนออกไป)
ก็ดู Permission ทุกครั้งก่อนติดตั้งสิ
หลายๆคนก็ใช้วิธีนี้ก่อนที่จะติดตั้งแอปใหม่ๆทุกครั้ง แต่สิ่งที่ผู้ใช้หลายๆคนยังไม่รู้คือ Permission ที่แสดงให้ผู้ใช้เห็นนั้นมันคลุมเครือมาก เพราะ Permission หนึ่งตัว ถ้าคิดในแง่ร้าย มันก็จะกลายเป็นแอปที่อันตรายมากๆ แต่ถ้าคิดในแง่ดีมันก็จะเป็นแอปธรรมดาที่ไม่มีอันตรายอะไร แต่แท้จริงแล้วเอาไปใช้งานอย่างไรบ้าง ผู้ใช้ก็ไม่มีทางรู้เลย
ถ้ายังจำกันได้เคยมีกรณีที่สมาชิกรายหนึ่งในพันทิปที่เกิดความระแวงกับแอป Messenger ของ Facebook จนเกินเหตุ เพียงเพราะขอ Permission เยอะจนเกินไป ซึ่งในความเป็นจริงแล้ว Permission ที่แอปตัวนั้นใช้มันก็ไม่ได้น่าสงสัยอะไร การขอ Permission เยอะๆบนแอนดรอยด์นั้นมันอันตรายจริงๆหรือ? [Case Study จาก Pantip]
เพราะนักพัฒนาทุกคนนั้นรู้ดีครับว่าเวลาที่ขอ Permission ทีไร มันโคตรจะคลุมเครือมากๆ ถ้าผมอยากจะทำแอปกล้องซักตัว ผมก็ต้องขอ Permission สำหรับกล้อง แต่ในขณะเดียวกันถ้าผมจะเขียนให้กล้องแอบถ่ายในเวลาที่ผู้ใช้ไม่รู้ตัว ก็ย่อมทำได้เช่นกัน
เช่นเดียวกับกรณีล่าสุดของแอป MakeupPlus ที่โหลดไปเล่นแต่งภาพกันสนุกสนาน ซึ่งก็มีผู้ใช้หลายๆคนที่แอบสงสัยเรื่อง Permission เหมือนกันว่าทำไมขออะไรเยอะแยะ แต่เมื่อลองแงะไฟล์ออกมาดูจริงๆแล้วก็พบว่า Permission แต่ละตัวที่ขอนั้นก็ไม่ได้มีอะไรน่าเป็นห่วง เป็นเรื่องธรรมดาของแอปหนึ่งตัวที่จะขอ Permission แบบนี้
แต่จนสุดท้ายก็มีนักพัฒนาที่ลองแงะโค๊ดออกมาดูและดักข้อมูลที่ส่งออกมา (ก็พี่เนยอีกนั่นแหละ) จนพบว่าแอปตัวนี้มีการอัปโหลดรูปภาพก่อนจะแต่งเก็บไว้ที่ Cloud Storage Server ของจีน จนเป็นข่าวใหญ่ขึ้นมา ซึ่งกรณีนี้ทำให้เห็นได้ชัดเลยว่าการดูแค่ Permission ไม่ได้บอกอะไรซักเท่าไรเลย เพราะสิ่งที่ตัวแอปขอตอนแอบอัปโหลดภาพไปเก็บไว้ก็จะมีแค่ Internet Permission เท่านั้นเอง
สำหรับรายละเอียดของแอปตัวนี้อ่านต่อกันได้ที่ กรณีศึกษา แอพฯ MakeupPlus กับการแอบอัพโหลดภาพขึ้น Cloud จีน
การทำแอปแบบนี้ซักตัวมันยากแค่ไหน?
เนื่องจากเรื่องความปลอดภัยจากแอปพลิเคชันเป็นเรื่องน่าสนใจ ที่ผู้ใช้ทั่วไปรู้ตัวได้ยาก และทุกสิ่งอย่างก็ขึ้นอยู่กับจรรยาบรรณของนักพัฒนาเท่านั้น ดังนั้นผมจึงลองนั่งเขียนแอปตัวอย่างขึ้นมาอีกตัวหนึ่งดูบ้าง เพื่อเป็นอีกหนึ่งกรณีศึกษาว่ามันทำไม่ยากจริงๆนะ
ผมก็เลยลองเขียนแอปคีย์บอร์ดแบบง่ายๆขึ้นมา โดยโค๊ดส่วนใหญ่เอามาจากอินเตอร์เน็ตแล้วมาเขียนเพิ่มเติมเล็กน้อยเพื่อให้บรรลุเป้าหมายด้านมืด จึงได้ออกมาเป็นแอปแบบในวีดีโอตัวนี้
เริ่มดูน่ากลัวขึ้นมาแล้วเนอะ? เพราะว่าในแอปตัวอย่างนี้มีการขอแค่ Internet Permission ตัวเดียวเท่านั้น และสามารถดักข้อมูลได้แทบทั้งหมดที่เราพิมพ์ผ่านคีย์บอร์ดตัวนี้เลย และถ้าดูดีๆจะมีการดึง Device ID ไปเก็บไว้ด้วยนะเออ แต่กลับไม่ต้องขอ Permission อะไรเลย
ขอ Internet Permission กันโต้งๆแบบนี้คิดว่าผู้ใช้จะไม่รู้หรอ?
ไม่รู้หรอกครับ ถ้าผมเขียนฟีเจอร์เพิ่มเข้าไปอย่างเช่นเปลี่ยนธีมเปลี่ยนสีคีย์บอร์ดได้ โดยที่ธีมนั้นจะต้องดาวน์โหลดจากอินเตอร์เน็ต เพียงเท่านี้แอปของผมก็มีเหตุผลในการขอใช้งานอินเตอร์เน็ตแล้วล่ะ
ถ้าดักข้อมูลที่ส่งไปบนอินเตอร์เน็ตก็รู้แล้วนี่?
ถูกต้องนะคร้าบ แต่จะเกิดอะไรขึ้นถ้าผมยังไม่ใส่โค๊ดดักข้อมูลลงไปล่ะ? ก็ตรวจสอบแล้วไม่เจออะไรใช่มั้ยล่ะ? แล้วผมก็รอเวลาผ่านไปประมาณหนึ่งจนมีคนใช้แอปมากพอสมควร ผมก็ค่อยใส่โค๊ดดักข้อมูลเข้าไปทีหลังก็ยังได้ (แล้วทำเนียนเป็นอัปเดตแก้บั๊กอะไรทำนองนี้) ดังนั้นแอป MakeupPlus จะแอบใส่โค๊ดเก็บภาพถ่ายผู้ใช้ส่งขึ้นเซิฟเวอร์ใหม่ก็ทำได้เช่นกัน ถึงแม้ว่าจะเอาออกไปก่อนหน้านี้แล้วเพราะโดนจับได้
เพิ่มเติม - แต่ที่แน่ๆคือแอป ManMan Keyboard ของนักพัฒนาคนไทยปลอดภัยนะจ๊ะ ไม่ต้องตกใจกลัวเกินไปล่ะ
แต่แอนดรอยด์บางรุ่นบางยี่ห้อก็กำหนดการเข้าถึง Permission ได้นะ
ถ้าใครใช้แอนดรอยด์ที่เป็นยี่ห้อของจีน ก็จะเห็นว่าหลายๆยี่ห้อก็ได้ใส่ฟีเจอร์จำกัด Permission ให้กับแต่ละแอปได้มานานแล้ว (เหมือนเค้ารู้อยู่แล้วว่ามันไม่ปลอดภัย ฮาๆ) โดยเฉพาะ Xiaomi ที่มีฟีเจอร์นี้มาตั้งแต่แรก และ Huawei กับ Oppo ก็มีแล้วเช่นกัน จึงทำให้เลือกได้ว่าอยากให้แอปนั้นๆเข้าถึง Permission ตัวไหนบ้าง หรือกำหนดเลยว่าแอปตัวไหนใช้งานอินเตอร์เน็ตได้/ไม่ได้บ้าง
ในกรณีของ Android 6.0 ก็พึ่งได้เพิ่มฟีเจอร์นี้เข้ามา และจะแสดงหน้าต่างขออนุญาตทุกครั้งก่อนจะใช้งาน Permission แต่ละตัว จึงทำให้ปลอดภัยมากขึ้น แต่ทว่าก็ยังมีจุดด้อยตรงที่ Internet Permission ถูกมองข้ามไป ไม่แสดงให้เห็นในข้อมูลของแอปแต่ละตัว และตั้งค่าห้ามให้แอปใช้อินเตอร์เน็ตไม่ได้ แต่อย่างน้อยก็แสดงการใช้งานอินเตอร์เน็ตให้เห็นอยู่บ้าง
ภาพตัวอย่างของแอปดักคีย์บอร์ดที่ผมเขียนขึ้น
และถึงแม้ว่าจะปิดไม่ให้ใช้อินเตอร์เน็ตได้ แต่ถ้าแอปตัวไหนมีฟีเจอร์หรือลูกเล่นที่ต้องต่อกับอินเตอร์เน็ต สุดท้ายแล้วผู้ใช้ก็จะต้องยอมอยู่ดี
อันตรายแบบนี้เปลี่ยนไปใช้ iOS หรือ Windows Phone ดีกว่า
ถึงจุดนี้แล้วผู้ใช้แอนดรอยด์หลายๆคนคงคิดกันแบบนี้กัน แต่ก็อย่าลืมว่าวิธีดักข้อมูลที่ยกตัวอย่างขึ้นมาเหล่านี้ ก็ยังคงสามารถใช้งานได้บน iOS และ Windows Phone เหมือนอย่างกรณีของ MakeupPlus ที่บน iOS ก็โดนเอารูปไปเช่นกัน แต่เป็นข่าวดีสำหรับ Windows Phone คือไม่เจอปัญหานี้ เพราะว่านักพัฒนาเค้าไม่ทำแอปนี้บน Windows Phone (จะเรียกว่าข่าวดีมั้ยนี่...)
แต่กรณีของ iOS กับ 3rd-party Keyboard ที่พึ่งจะมีได้ไม่นาน จึงทำให้ดูหวั่นๆพอสมควรว่าจะไม่ปลอดภัย แต่อย่างน้อยของ iOS ก็ออกแบบมาว่าเวลาพิมพ์พวกรหัสผ่านจะเปลี่ยนไปเป็นคีย์บอร์ดของระบบให้อัตโนมัติ ส่วนของ Windows Phone เปลี่ยนคีย์บอร์ดไม่ได้จึงทำให้หายห่วง
และถ้าบอกว่า OS ตัวไหนปลอดภัยน้อยสุดก็คงต้องบอกว่าเป็นแอนดรอยด์นี่แหละครับ เพราะเปิดกว้างมากแม้กระทั่งให้ผู้ใช้ทั่วไปเอา APK มาลงเองได้ ซึ่งมันก็ทำให้มีทั้งข้อดีและข้อเสียทั้งคู่
แล้วผู้ใช้จะมีวิธีไหนในการตรวจสอบด้วยตัวเองมั้ย?
ในเมื่อ Antivirus ก็ตรวจสอบไม่ได้ทั้งหมด และการดู Permission ก่อนติดตั้งก็ทำอะไรได้ไม่มาก ก็คงไม่เหลือวิธีไหนแล้วล่ะที่ผู้ใช้ทั่วไปจะตรวจสอบได้ด้วยตัวเอง เพราะวิธีที่ใช้ตรวจสอบกันก็จะเป็นการดักข้อมูลที่ส่งออกมาหรือ Decompile แอปตัวนั้นแล้วมานั่งดูโค๊ดกันอีกที ซึ่งบอกเลยว่าดูยากมากและต้องใช้ประสบการณ์มากพอสมควร (คือการจะดักโจรได้ก็ต้องคิดแบบโจรให้ได้ก่อนน่ะนะ)
และในทุกวันนี้ก็มีกลุ่มนักพัฒนากลุ่มหนึ่งที่คอยตรวจสอบการทำงานของแอปแอนดรอยด์และคอยเปิดโปงแอบที่ลักลอบทำอะไรผิดๆอยู่แล้ว ดังนั้นผู้ใช้งานทั่วจึงไม่จำเป็นต้องมานั่งแงะโค๊ดไล่สอดส่องเอง
สรุปว่าแอปในทุกวันนี้มันไม่ปลอดภัย?
ผมก็ไม่อยากให้เหมารวมแบบนั้นนะครับ เพราะไม่งั้นเราก็จะกลายเป็นกระต่ายตื่นตูมไปซะหมด เพราะยังมีแอปดีๆอีกหลายแอปที่ปลอดภัยให้ได้ใช้งานกัน ทั้งนี้ก็ขึ้นอยู่กับจรรยาบรรณของนักพัฒนาเป็นหลักเลย ว่าสร้างแอปนั้นขึ้นมาเพื่ออะไร และหวังผลประโยชน์อะไรจากผู้ใช้งาน ดังนั้นสิ่งที่สำคัญสำหรับผู้ใช้ก็คือความน่าเชื่อถือของนักพัฒนาทีมนั้นๆหรือนักพัฒนาคนนั้นๆนั่นเอง