"ไม่ต้องมีเวทมนตร์ ไม่ต้องไปหาแม่มด แค่คุณทำสิ่งที่โลกระลึกถึงตลอดกาล แค่นั้นคุณก็เป็นอมตะแล้ว"
กรณีศึกษา แอพฯ MakeupPlus กับการแอบอัพโหลดภาพขึ้น Cloud จีน
5 Sep 2015 16:19   [108379 views]

สองวันก่อนเปิด 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! ถามว่าทำไมถึงทำไว้สองที่? อันนี้เป็นเรื่องค่อนข้างปกติของนักพัฒนาที่เก็บข้อมูลการใช้งานให้มากที่สุดเท่าที่จะมากได้ แต่ละที่ก็ให้บริการใน 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 บอกว่า เราอัพภาพขึ้นเฟสทุกวัน ไม่เห็นจะต่างเลย อันนี้บอกเลยว่า "ต่างกันมาก" ครับ

การอัพขึ้นเฟสคือเรายินยอมเอาขึ้นเอง สามารถกำหนดได้ว่าใครเห็นได้ใครเห็นไม่ได้ และเราไม่เคยอัพโหลดภาพโป๊ตัวเองขึ้นเฟสกัน(ยกเว้นบางคนสินะ)

ส่วนกรณีนี้ หากคุณนึกสนุกถ่ายภาพโป๊ตัวเองก็เรียบร้อยครับ ... เห็นความแตกต่างกันแล้วใช่มั้ยเอ่ย

มาดู 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 ไม่ใช่เรื่องใหญ่ที่สุด ทั้งหมดทั้งมวลจบแค่คำว่า คุณไว้ใจนักพัฒนาแค่ไหน"

ขอให้ใช้แอพฯอย่างมีความสุขครับ

บทความที่เกี่ยวข้อง

Sep 26, 2015, 12:00
28043 views
รู้จัก Juice Jacking วิธีการขโมยข้อมูลผ่านที่ชาร์จมือถือตามที่สาธารณะ
May 10, 2015, 00:25
28592 views
ที่มาของปุ่ม Menu + Home + Back บนแอนดรอยด์ และการปรับเปลี่ยน UX ในรุ่นหลังๆ
0 Comment(s)
Loading