กรณีศึกษา แอพพลิเคชั่น MakeupPlus กับการแอบอัพโหลดภาพขึ้น Cloud จีน
สวัสดีค่ะเพื่อน หากจะพูดถึงแอพพลิเคชั่นถ่ายรูป หรือตกแต่งรูปภาพแบบฮาๆ ไม่เหมือนใครแล้วล่ะก็ ช่วงเวลานี้คงไม่มีใครไม่รู้จัก แอพพลิเคชั่น MakeupPlus ซึ่งเป็นแอพฯ แต่งรูปแบบฮาๆ มีให้เลือกหลายโหมด และกำลังเป็นที่นิยมอยู่ในขณะนี้ แต่เจ้าแอพฯ ตัวนี้มันปลอดภัยไหมนะ? วันนี้เราเลยขอมานำเสนอบทความจาก nuuneoi.com ที่ออกมาให้ข้อมูลเกี่ยวกับแอพพลิเคชั่นนี้ ว่าปลอดภัยหรือไม่ เราไปติดตามบทความนี้กันเลยค่ะ
2 วันก่อนเปิด Facebook มา ถึงกับผงะเมื่อเห็นเพื่อนพ่อแม่พี่น้องกลายเป็นผู้หญิงแต่งหน้าหนาจัดกันอย่างครบถ้วน … แรกๆ ก็ดูสนุกดี พอเริ่มเยอะไปก็เลิกเล่นเฟสไปวันนึงเลยทีเดียว ~.~
ก็น่าจะได้เล่นกันหมดแล้วมั้งสำหรับแอพพลิเคชั่นตัวนี้ MakeupPlus จากค่าย Meitu, Inc. ในจีน และพอคนเริ่มใช้เยอะ ก็เริ่มมีคนพูดถึง Permission ที่เจ้าแอพพลิเคชั่นนี้ร้องขอ มันช่างเยอะและดูน่ากลัว ขอแต่ละอย่างนี่…
เช้าวันนี้ หลังจากฟื้นจากความเพลียในการสอนแอนดรอยด์เมื่อวาน ก็เลยใช้เวลานั่งแงะเจ้าโปรแกรมนี้ดู เลยเอามาเล่าให้ฟังว่าตกลงปลอดภัยหรือไม่อย่างไรครับ
โดยข้อมูลในบล็อกนี้จะไม่ใช้อารมณ์ใดๆ เราแค่ขอรายงาน “สิ่งที่เกิดขึ้นจริง” เราบอกได้แค่ว่า “แอพพลิเคชั่นทำอะไร” แต่บอกไม่ได้ว่า “ทำไปทำไม” ครับ
Permission ที่ร้องขอ
อันนี้เอา Permission ทั้งหมดที่แอพพลิเคชั่นใส่ไว้แต่ละตัวมาลิสต์ให้ดูครับ
Permission ที่ขอส่วนใหญ่เป็น Permission ที่ขอกันเป็นปกติ จะมีก็ที่วงไว้ที่แอพพลิเคชั่นนี้ไม่เข้าข่ายจะขอคือ
android.permission.GET_TASKS
เอาไว้ดูว่าตอนนี้เปิดแอพพลิเคชั่นอะไรไว้บ้าง (ทำนองนั้น) ปกติจะใช้กับแอพพลิเคชั่นจำพวก Task Manager แต่นี่แอพพลิเคชั่นแต่งรูป ใช้ทำไมหนอ
ก็เลยเข้าไปอ่านโค้ดดู นี่คือส่วนที่ใช้ GET_TASK Permission
paramContext = ((ActivityManager.RunningTaskInfo)((ActivityManager)paramContext.getSystemService(“activity”)).getRunningTasks(1).get(0)).topActivity.getPackageName();
return (!TextUtils.isEmpty(paramContext)) && (paramContext.equals(c()));
ได้ข้อสรุปว่าเอาไว้เช็คว่าแอพพลิเคชั่นที่รันอยู่ด้านหน้าสุด (Foreground) คือแอพพลิเคชั่น MakeupPlus หรือไม่ ไม่ได้ดูต่อว่าเช็คทำไม แต่เดาเอาว่าน่าจะเป็นเทคนิคการเช็คว่าถ้าแอพพลิเคชั่นอยู่ด้านหน้าจะทำอะไรหรือถ้าไม่อยู่จะทำอะไร เช่นถ้ามี Push มาแล้วแอพพลิเคชั่นอยู่ด้านหน้า ไม่ต้องแสดง Notification นะ
จริงๆ มีวิธีอื่นในการเขียนโปรแกรมที่ไม่ต้องเช็ค Task เอาแบบนี้ แต่เค้าก็แค่เลือกใช้วิธีนี้ สรุปคือไม่มีอะไรน่ากังวลครับ
android.permission.READ_LOGS
Permission นี้จริงๆ น่ากังวลไม่น้อย เพราะว่า เป็น Permission ที่เอาไว้ใช้อ่าน Log ของระบบ ก็คือหากมีแอพพลิเคชั่นไหนอุตริพ่น Log ที่มีข้อมูล Sensitive แอพพลิเคชั่นก็จะดักและขโมยไปได้ แต่ข่าวดีคือ Permission นี้ถูกยกเลิกไม่ให้ 3rd Party Application ใช้ได้ตั้งแต่ Android 4.1 Jelly Bean แล้ว แต่… ถ้าเครื่อง Root ก็จะยังเข้าถึงได้อยู่นะ อย่างไรก็ตาม เราไปไล่ดูโค้ดแล้ว ไม่มีการดึงข้อมูลจาก Log ที่ว่าในโค้ดแต่อย่างใด ดังนั้นถึงจะขอสิทธิ์ไปแต่ก็ไม่ได้เรียกใช้ในส่วนที่น่ากังวลครับ
มีการ Log ข้อมูลขึ้นบริการ Analytics ชื่อ Umeng และ Flurry
หลังจากอ่าน Permission และอ่านโค้ดแล้ว คราวนี้ก็มาถึงการนั่งเช็คว่ามีการส่งข้อมูลอะไรกลับไป Server บ้าง
ผลจากการนั่งดักทั้งผ่าน http และ https พบว่ามีการติดต่อกลับไปยัง Server 3 โดเมน (เป็นอย่างน้อย) ด้วยกันได้แก่ *.meitu.com, *.umeng.com และ *.flurry.com
สำหรับอันแรกก็ไม่มีอะไรมาก เป็นแค่การส่งข้อมูลที่ต้องโหลดแบบ Real Time เช่น โฆษณา และมีการ Register Device คาดว่าสำหรับการส่ง Push Notification โดยข้อมูลที่ส่งไปก็เป็นข้อมูลพื้นฐาน เช่น Device Model (Note 3 LTE ไรงี้) และ Device ID หรือรหัสประจำตัวเครื่อง ซึ่งไม่ต้องกังวลอะไร รหัสนี้ไม่ใช่ข้อมูล Sensitive ครับ สามารถดึงไปใช้ได้แบบไม่ต้องกังวลอะไร
ส่วนตัวที่สองเป็นการส่งข้อมูลไปยังบริการเก็บข้อมูล Analytics ชื่อดังมากของจีนนามว่า Umeng เนื่องจากว่าแอพพลิเคชั่นจีนจะไม่ใช้บริการต่างๆของฝั่งเมกา ดังนั้นจะใช้ของจีนด้วยกันทั้งหมดนั่นเอง
ตัวสุดท้ายเป็นแอพพลิเคชั่นเก็บ Analytics เหมือนกันแต่เป็นของฝั่ง Yahoo! ถามว่าทำไมถึงทำไว้ 2 ที่? อันนี้เป็นเรื่องค่อนข้างปกติของนักพัฒนาที่เก็บข้อมูลการใช้งานให้มากที่สุดเท่าที่จะมากได้ แต่ละที่ก็ให้บริการใน Backend ต่างกันออกไป ก็แค่กระจายเก็บไว้หลายๆ ที่เพื่อให้ได้ข้อมูลวิเคราะห์ออกมาได้มากที่สุด ดังนั้นเรื่องนี้ไม่ได้น่าสงสัยแต่อย่างใด
แล้วเก็บอะไรบ้าง?
เนื่องจาก Log ถูก Encrypt ไว้ ซึ่งถือว่าทำได้ดีและได้มาตรฐาน เนื่องจากข้อมูลเหล่านี้หากคน Sniff ไปได้ก็จะทำอะไรที่ไม่ดีได้ แต่พอ Encrypt ก็ปลอดภัยครับ (ผม Sniff ได้ แต่แงะอะไรออกมาไม่ได้เลย)
สิ่งที่พอทำได้คือเนยแอบไปแงะโค้ดดู พบว่ามีการเก็บข้อมูลพื้นฐานทั่วไป ไม่มีอะไรมาก ไม่มีข้อมูลส่วนตัว ส่วนใหญ่จะเป็นข้อมูลของเครื่องและรูปแบบการใช้งาน ซึ่งเอาไปทำอะไรต่อไม่ได้ ทุกวันนี้แอพพลิเคชั่นชื่อดังทั้งหลายอย่าง Facebook, Instagram, Twitter, Google ฯลฯ ก็เก็บกันเป็นปกติอยู่แล้ว ถ้ากลัวก็ควรกลัว Google, Facebook พวกนั้นด้วย พวกนั้นน่ากลัวระดับโลกครับ แต่ถ้าไม่กลัวก็สบายใจได้
แอบอัพโหลดรูป “ก่อนแต่ง” ขึ้น Cloud Storage ในจีนนาม qiniu
และนี่คือเรื่องที่น่ากลัวและน่ากังวลที่สุดของแอพพลิเคชั่นตัวนี้ หลังจากทดสอบเรื่อง Permission และโค้ดแล้วไม่เห็นอะไรน่าสงสัย แต่พอ Sniff การรับส่งข้อมูลกับ Server ก็ทำให้เจอว่า ทันทีที่กดแต่งหน้าเสร็จ แล้วมันขึ้นว่า Saved to Album ภาพ “ก่อนแต่ง” จะถูกส่งขึ้นไปยัง Cloud Storage ของจีนนามว่า qiniu โดยทันที
อัพโหลดไปเพื่อ Process ภาพก่อนโหลดกลับมามือถือหรือเปล่า? … คำตอบคือไม่ใช่ครับ พิสูจน์จากการที่มือถือไม่ต่อเนตก็สามารถแต่งหน้าได้ ดังนั้นมันอัพโหลดไปเก็บไว้เฉยๆ แน่นอน แต่เราบอกอะไรไม่ได้ว่าอัพโหลดไปทำไม
หากมองโลกในแง่ดี ส่วนตัวแล้วบริษัทนี้ค่อนข้างน่าเชื่อถือครับ คิดว่าคงไม่เอาภาพเราไปทำอะไรในเรื่องที่ไม่ดี คาดว่าน่าจะเอาภาพไปทำ Machine Learning เพิ่มประสิทธิภาพของ Algorithm ในการทำ Face Detection เท่านั้นเอง
แต่ถ้ามองโลกในแง่ร้าย … ก็สุดแล้วแต่จะคิดครับ
แต่อย่างไรก็ตาม เคสเลวร้ายที่เกิดขึ้นแล้วคือ … ถ้ามีคนอุตริถ่ายภาพโป๊ตัวเอง ตอนนี้อยู่บน Cloud ของจีนเรียบร้อยที่โดยที่เราไม่รู้ตัวแล้วครับ
เห็นมีหลาย Comment บอกว่า เราอัพภาพขึ้น Facebook ทุกวัน ไม่เห็นจะต่างเลย อันนี้บอกเลยว่า “ต่างกันมาก” ครับ การอัพขึ้น Facebook คือเรายินยอมเอาขึ้นเอง สามารถกำหนดได้ว่าใครเห็นได้ใครเห็นไม่ได้ และเราไม่เคยอัพโหลดภาพโป๊ตัวเองขึ้นเฟสกัน (ยกเว้นบางคนสินะ)
ส่วนกรณีนี้ หากคุณนึกสนุกถ่ายภาพโป๊ตัวเองก็เรียบร้อยครับ … เห็นความแตกต่างกันแล้วใช่มั้ยเอ่ย
มาดู User Agreement ของแอพพลิเคชั่นตัวนี้กันบ้างว่าเค้าเขียนไว้ว่าอย่างไร (เขียนเป็นจีน อันนี้แปลเป็นอังกฤษให้)
1, the user fully understand and agree that “Beauty Camera” related services is only a neutral application of technology, the user must unilaterally its registration, login, use the “Beauty Camera” is responsible for other acts related services, including user transmitted any content and any results thereof. Mito network because user behavior can not and will not have caused any loss or damage liability. Users without registration can use the “Beauty Camera” related services. Whether or not to register, once the user using the “Beauty Camera” related services, the user captured face image and other data that is uploaded to their own web server Mito, Mito network the right to receive, collect, use and authorize others to use said face image data.
ตามแง่กฏหมายแล้ว บริการเขียนไว้ชัดเจนว่า “จะอัพโหลดภาพถ่ายใบหน้าขึ้น Server ของตัวเอง และเค้ามีสิทธิ์จะทำอะไรก็ได้” เพียงแค่เขียนเป็นภาษาจีนถ้าเปิดจากแอพพลิเคชั่นมือถือ แต่ทุกคนก็ต้องยอมรับครับว่าเค้าแจ้งแล้ว เราเอาแค่ Fact ที่เกิดขึ้นมาให้ดู แต่เค้าจะเอาภาพไปทำอะไรต่อ ไม่มีใครตอบได้นอกจากเจ้าของแอพพลิเคชั่นอย่าง Meitu นั่นเอง
ทั้งนี้ทั้งนั้น เนยทดสอบกับทั้งบนแอนดรอยด์และ iOS เรียบร้อย ยืนยันว่ามีการอัพโหลดภาพก่อนแต่งขึ้น Cloud ที่จีนทั้งสองแพลตฟอร์มอย่างเท่าเทียมครับ
ความน่าไว้ใจของแอพพลิเคชั่นไม่ได้ดูที่ Permission แต่ดูที่นักพัฒนา
พูดถึงเรื่อง Permission กันมาหนาหูว่าน่ากลัวงู้นงี้ ในฐานะนักพัฒนาแอพพลิเคชั่น ผมพูดเลยว่า Permission เป็นแค่ด่านหน้าที่เบาบางมากๆ บอกอะไรแทบไม่ได้เลย ระบบ Permission ของแอนดรอยด์อ่อนปวกเปียกสุดๆ จนต้องรื้อใหม่ใน Android M
เนยเคยทำวีดีโอและเขียนบล็อกเรื่องนี้ไว้เมื่อปีที่แล้ว “สิ่งที่ไม่เคยมีใครบอกคุณมาก่อน “มันง่ายมากที่จะเขียนแอพพลิเคชั่นมาขโมยข้อมูลส่วนตัวคุณ” ครบปีพอดีเป๊ะ เอากลับมาเปิดใหม่ให้ดูอีกทีครับ เนื้อหายังใช้งานได้ทุกประการ
ขอยกคำสรุปเดิมไว้ครับ
“Permission ไม่ใช่เรื่องใหญ่ที่สุด ทั้งหมดทั้งมวลจบแค่คำว่า คุณไว้ใจนักพัฒนาแค่ไหน”
ขอให้ใช้แอพพลิเคชั่นอย่างมีความสุขครับ
ขอขอบคุณข้อมูลและรูปภาพ www.nuuneoi.com
Leave a Reply