
Application Signing model and Approval process (2/2)
Incognito Lab
Part 1

Application Signing model and Approval process (1/2)
ในบทความนี้ จะขอนำทุกท่านไปรู้จักกับ Application Signing model และ Approval process พร้อมกับวิเคราะห์ถึงประโยชน์และข้อจำกัดในมุมมองด้านความมั่นคงปลอดภัย
Application Signing model มีจุดประสงค์หลักเพื่อใช้ในการยืนยันความถูกต้อง (Integrity) ของแอปพลิเคชันว่าไม่ได้ถูกดัดแปลงหรือแก้ไขโดยผู้ที่ไม่ใช่เจ้าของ หรือเรียกง่าย ๆ ก็คือการทำ Digital Signature สำหรับแอปพลิเคชันที่ไม่ได้รับการ Sign จะไม่สามารถนำไปติดตั้งลงบนอุปกรณ์ได้ ทั้งนี้การ Sign แอปพลิเคชันไม่ได้หมายความว่าแอปพลิเคชันนั้นจะปลอดภัยต่อการใช้งาน

CHAPTER 2
Approval Process
ในการพัฒนาแอปพลิเคชันแน่นอนว่าส่วนใหญ่ต้องการเผยแพร่แอปพลิเคชันของตนเองผ่าน Official Application Store; Google Play Store สำหรับ Android, AppStore สำหรับ Apple และ Microsoft Store สำหรับ Windows
การจะนำแอปพลิเคชันขึ้นไปอยู่บน Official Application Store ได้นั้น แต่ละ Platform Provider จะมีเงื่อนไขในการตรวจสอบแอปพลิเคชันก่อนที่จะอนุมัติให้เผยแพร่บน Official Store ได้แตกต่างกัน โดยจะมี Guideline ให้ผู้เผยแพร่ได้ตรวจทานและเตรียมพร้อมแอปพลิเคชันของตนก่อนส่งเข้าสู่กระบวนการตรวจสอบ อาทิ
- มีการร้องขอสิทธิเกินความจำเป็นหรือไม่
- มีการพยายามคุกคามความเป็นส่วนตัว (Privacy) ของผู้ใช้งานเกินความจำเป็นหรือไม่
- แอปพลิเคชันดังกล่าวมี Malware แฝงมาหรือไม่
- แอปพลิเคชันสามารถใช้งานได้อย่างปกติ ไม่เด้ง ไม่เจ๊ง ไม่สร้างความเสียหายให้กับตัวเครื่อง
- เนื้อหาภายในแอปพลิเคชันเหมาะสมกับเรทที่ตั้งไว้หรือไม่
- มีเนื้อหาไม่เหมาะสมหรือไม่ เช่น การเหยียดเพศ, เหยียดเชื้อชาติ, สร้างความแตกแยก หรือมีเป้าหมายทางการเมือง เป็นต้น
- ฯลฯ
- ดูรายละเอียดเพิ่มเติมสำหรับ Apple, Android และ Microsoft
ในด้านของความปลอดภัย จุดที่น่าสนใจของกระบวนการนี้คือ เมื่อแอปพลิเคชันได้รับการอนุมัติแล้ว แอปพลิเคชันจะได้รับการ Sign ด้วย Certificate ของ Platform Provider อีกทีหนึ่ง เท่ากับว่าถูก Sign ด้วย 2 Identity คือ 1. ผู้เผยแพร่ และ 2. Platform Provider ซึ่งถือเป็นการการันตีได้ว่าแอปพลิเคชันดังกล่าวผ่านกระบวนการตรวจสอบแล้ว และเป็นการระบุที่มาว่ามาจาก Official Application Store เพราะแอปพลิเคชันที่ไม่ได้ดาวน์โหลดจาก Official Application Store จะไม่ถูก Sign โดย Platform Provider และยังเป็นการลดข้อจำกัดที่เกิดขึ้นกับการ Sign โดยผู้เผยแพร่เพียงคนเดียวอีกด้วย
แม้ว่าแอปพลิเคชันจะถูก Sign ด้วย Certificate ของ Platform Provider แล้วก็ไม่ได้หมายความว่าแอปพลิเคชันนั้นจะปลอดภัยต่อผู้ใช้เพราะมีหลายแอปพลิเคชันที่ผ่านกระบวนการตรวจสอบและยังคงเผยแพร่อยู่บน Official Application Store แต่ยังคงอันตรายต่อผู้ใช้งาน ซึ่งส่วนมากจะเป็นการคุกคามด้านความเป็นส่วนตัว โดยเฉพาะอย่างยิ่งบน Google Play Store เพราะหากเทียบกับ Application Store ของ Platform อื่น Google Play Store มีกระบวนการตรวจสอบแอปพลิเคชันที่รัดกุมน้อยที่สุด อ้างอิงจากผลการสำรวจของเว็บไซต์ theguardian ที่ได้ทำการสำรวจแอปพลิเคชันสำหรับเด็กที่เผยแพร่อยู่บน Google Play Store จำนวน 5,855 แอปพลิเคชัน พบว่า กว่า 57% ของแอปพลิเคชันทั้งหมดมีการคุกคามความเป็นส่วนตัวของผู้ใช้งาน
นอกจากแอปพลิเคชันที่คุกคามความเป็นส่วนตัวแล้ว ยังมีแอปพลิเคชันอันตรายอีกหลากหลายรูปแบบที่ทั้งเคยหรือยังอยู่บน Official Application Store อย่างกรณีของเกม CUPHEAD, CUPHEAD คือเกมที่โด่งดังและได้รับคะแนนวิจารณ์ที่ดีทั้งในด้านความสนุกและเนื้อหาที่เหมาะสมกับทุกเพศทุกวัย ทำให้เกม CUPHEAD ขายดีเป็นเทน้ำเทท่าบน PC Platform ทำให้เกมนี้ตกเป็นเป้า วันที่ 18 ธันวาคม 2017 อยู่ ๆ ก็มีการเผยแพร่เกม CUPHEAD บน AppStore โดยที่ไม่มีการประกาศจากทีมพัฒนาก่อนหน้าแต่อย่างใดว่าจะมีการพัฒนาเกม CUPHEAD เวอร์ชันมือถือ ที่น่าสนใจก็คือ เนื้อหาต่าง ๆ ของแอปพลิเคชันนี้เหมือนของจริงอย่างไม่มีที่ติ เรียกได้ว่ามองครั้งแรกคงไม่มีใครคิดอย่างแน่นอนว่า CUPHEAD เวอร์ชัน iOS คือของปลอม เพราะว่าชื่อผู้เผยแพร่ ก็คือของสตูดิโอผู้พัฒนาเกมนี้ขึ้นมาจริง ๆ พร้อมคำอธิบายและ Screenshots ที่ดูเหมือนจริงทุกประการ แอปพลิเคชัน CUPHEAD วางขายในราคา $4.99 และที่น่าตกใจกว่านั้นคือแอปพลิเคชันนี้สามารถติดตั้งและเล่นได้จริง ๆ บนมือถือ เพียงแต่ว่าแอปพลิเคชันจะดูแปลก ๆ กดติดบ้างไม่ติดบ้าง เหมือนว่าไม่ได้รองรับเวอร์ชันมือถือแบบสมบูรณ์

เกม CUPHEAD ของปลอมที่ถูกเผยแพร่บน AppStore

เกม CUPHEAD ของจริงที่เผยแพร่บน Steam
ถ้าสังเกตจากชื่อผู้เผยแพร่เกม CUPHEAD ระหว่างบน Steam กับ AppStore แล้ว จะเห็นได้ว่าต่างกันเพียงจุดเดียว คือ บน AppStore จะใช้ StudioMDHR
ในขณะที่บน Steam ใช้คำว่า Studio MDHR
หลังจากเกม CUPHEAD ปลอมถูกเผยแพร่บน AppStore ได้ไม่นาน ทาง Apple ก็ได้ทำการตรวจสอบและระงับการเผยแพร่ของเกมนี้ออกไปได้ในเวลาไม่ถึง 24 ชั่วโมง รวมทั้งคืนเงินให้กับผู้ใช้ทุกคนที่ได้ซื้อแอปพลิเคชันนี้ไป อ่านข้อมูลเพิ่มเติมเกี่ยวกับกรณีศึกษานี้
ในกรณีของเกม CUPHEAD ปลอมบน Google Play Store เองก็มีเช่นเดียวกัน เพียงแต่ว่าเป็นการพยายามลอกเลียนสไตล์เกม CUPHEAD ขึ้นมามากกว่าที่จะหลอกว่าเป็นของจริง

แอปพลิเคชัน CUPHEAD บน Google Play Store
สำหรับแอปพลิเคชันที่ไม่ได้รับการอนุมัติ หรือแอปพลิเคชันที่ไม่ได้เผยแพร่ผ่าน Official Application Store แน่นอนว่าจะมีข้อจำกัดจากการ Sign โดยผู้เผยแพร่เพียงคนเดียว แต่การที่แอปพลิเคชันไม่ได้เผยแพร่บน Official Application Store ไม่ได้หมายความว่าแอปพลิเคชันดังกล่าวไม่ปลอดภัย ผู้เผยแพร่ยังคงสามารถเผยแพร่แอปพลิเคชันนั้นด้วยตนเอง หรือเผยแพร่ผ่าน 3rd Party Application Store อย่างกรณีของ Apple ที่มีรองรับการออก Certificate แบบ Enterprise ให้กับผู้เผยแพร่ที่ต้องการพัฒนาแอปพลิเคชันไว้ใช้ในองค์กร ทำให้แอปพลิเคชันที่ถูก Sign ด้วย Enterprise Certificate จะสามารถติดตั้งบนอุปกรณ์ Apple ได้โดยไม่ต้องผ่าน AppStore
อย่างกรณีของ iOS Malware ชื่อ YiSpecter ที่อาศัย Enterprise Certificate ในการแอบติดตั้งตัวเองลงบนเครื่องของเหยื่อได้โดยที่ไม่มีการแจ้งเตือนความผิดปกติใด ๆ บนเครื่องของเหยื่อเลย แล้วจากนั้นจะใช้ Command and Control server ในการแอบติดตั้งแอปพลิเคชันตามมาอีก 3 แอปพลิเคชัน โดยที่ 3 แอปพลิเคชันนี้สามารถซ่อนตัวเองจากหน้า Springboard ได้ ทำให้ผู้ใช้ที่ตกเป็นเหยื่อไม่สามารถลบออกได้ง่าย ๆ ส่วนอีก 1 แอปพลิเคชันที่เหลือจะปลอมทั้งชื่อและไอคอนให้คล้ายกับว่าเป็นแอปพลิเคชันของระบบทำให้หลอกผู้ใช้ไม่ให้หาเจอได้ง่าย ๆ ข้อมูลสรุป YiSpecter จากเว็บไซต์ TechTalkThai
สิ่งที่น่าตกใจของ Malware ตัวนี้ไม่ใช่แค่เพราะสามารถติดได้ทั้งกับอุปกรณ์ iOS ที่ jailbreak และ non-jailbreak แต่ YiSpecter สามารถแพร่กระจายไปบนอุปกรณ์ iOS โดยที่ไม่มีใครรู้ตัวเลยนานถึง 10 เดือน ภายหลังจากที่ Apple พบ Malware ตัวนี้ก็ได้ทำการเพิกถอน Enterprise Certificate ที่ใช้ Sign ตัว YiSpecter และอีก 3 แอปพลิเคชันออกทั้งหมด พร้อมทั้งยังออกอัปเดตสำหรับ iOS 8.4.1 ขึ้นไปให้ปลอดภัยจาก YiSpecter
ข่าวการเปิดโปง Malware อย่าง YiSpecter ทำให้เป็นที่ฮือฮาอย่างมาก เพราะถือเป็น Malware ตัวแรกที่สามารถติดบนอุปกรณ์ iOS non-jailbreak ได้ และทำให้เกิดข้อสงสัยขึ้นอย่างมากมาย ว่าการที่แอปพลิเคชันถูก Sign โดย Platform Provider ปลอดภัยแล้วจริงหรือ… Certificate ของผู้เผยแพร่ที่ออกโดย Platform Provider ช่วยให้ผู้ใช้ปลอดภัยได้จริงหรือช่วยให้ผู้ไม่หวังดีสามารถโจมตีอุปกรณ์ได้อย่างถูกต้อง
ประโยชน์ของ Approval Process
- ช่วยลดข้อจำกัดของ Application Signing model ได้ในระดับหนึ่ง
- ทุกครั้งที่แอปพลิเคชันมีการอัพเดทเวอร์ชันจะต้องเข้าสู่กระบวนการ Approval Process ใหม่ แต่จะใช้ระยะเวลาในการตรวจสอบไม่นาน เพราะตรวจสอบเพียงส่วนที่มีการแก้ไขหรือเพิ่มเติมเท่านั้น
- แอปพลิเคชันที่ผ่าน Approval Process แล้วมีสิทธิที่จะถูกถอดถอนได้ตลอดเวลา หากพบว่าเป็นอันตรายต่อผู้ใช้
- Certificate ของ Mobile Platform Provider ยากต่อการถูกขโมยหรือปลอมแปลงกว่า Certificate ของผู้เผยแพร่
- แอปพลิเคชันที่เผยแพร่บน Official Application Store จะได้รับการป้องกันจากการถูกคัดลอกด้วย DRM หรือ Copy Protection
ข้อจำกัดของ Approval Process
- แอปพลิเคชันที่ผ่านกระบวนการตรวจสอบไม่ได้หมายความว่าแอปพลิเคชันจะปลอดภัยต่อผู้ใช้อย่าง 100%
- แอปพลิเคชันที่ผ่านกระบวนการตรวจสอบไม่ได้หมายความว่าถูกเผยแพร่โดยผู้เผยแพร่ที่เป็นตัวจริง ไม่ใช่ผู้แอบอ้าง
- แอปพลิเคชันอันตรายยังคงมีโอกาสที่จะผ่าน Approval process ได้
- ยังมีช่องทางอื่นสำหรับการเผยแพร่แอปพลิเคชัน ทำให้ Approval process ไม่ใช่กระบวนการบังคับที่ทุกแอปพลิเคชันจะต้องเข้าร่วม
Copy Protection (Digital Rights Management:DRM)
การปกป้องแอปพลิเคชันจากการถูกคัดลอกไปเผยแพร่โดยไม่ได้รับอนุญาต คืออีกหนึ่งฟีเจอร์ที่ Official Application Store มอบให้กับผู้เผยแพร่ ซึ่งค่อนข้างมีความซับซ้อนพอสมควร ดังนั้นจะขอพูดถึงแค่ด้านความั่นคงปลอดภัยที่แอปพลิเคชันจะได้เพิ่มขึ้นจาก DRM
DRM หรือ Copy Protection หมายถึงการที่ผู้ใช้จะใช้งานแอปพลิเคชันได้ด้วยการติดตั้งผ่านทาง Official Application Store เท่านั้น ซึ่งแต่ละเจ้าก็จะมีมาตรการป้องกันการติดตั้งแอปพลิเคชันเถื่อนที่แตกต่างกันไป
Apple จะใช้วิธีแทรก 4196 bytes เพิ่มเข้าไปที่ส่วน header ของไฟล์แอปพลิเคชันในตอนที่ผู้ใช้จะดาวน์โหลดจาก AppStore โดยที่ 4196 bytes ถูกเข้ารหัสด้วย public key ของผู้ใช้งาน (key pair ของผู้ใช้จะถูกสร้างขึ้นอัตโนมัติหลังจากที่ผู้ใช้สมัคร Apple id) เมื่อแอปพลิเคชันดาวน์โหลดเสร็จสมบูรณ์ ตัว OS จะพยายามถอดส่วน header ด้วย private key ของผู้ใช้ ซึ่งถ้าผู้ใช้ดาวน์โหลดแอปพลิเคชันดังกล่าวผ่าน AppStores จริง ๆ ก็จะสามารถถอดรหัสได้นั่นเอง ข้อดีอีกอย่างหนึ่งของแอปพลิเคชันที่เผยแพร่บน AppStores คือ ตัว executable ของแอปพลิเคชันจะถูกเข้ารหัสเอาไว้ โดยจะถูกถอดรหัสเมื่อจะรันแอปพลิเคชันเท่านั้น ทำให้แม้ว่าสามารถคัดลอกตัวแอปพลิเคชันออกมาจาก AppStores ได้ก็ยังยากต่อการทำ Reverse Engineering เช่นกัน
Android จะใช้วิธีแทรก metadata ลงไปในส่วน header ของ APK เช่นเดียวกัน โดยเป็นข้อมูลขนาดเล็กที่จะแทรกลงไปในส่วน APK Signing Block ซึ่งตอนที่แอปพลิเคชันถูกดาวน์โหลดลงไปบนเครื่อง ตัว OS จะตรวจสอบ metadata ดังกล่าวเพื่อยืนยันว่าตัวไฟล์แอปพลิเคชันนี้ ถูกดาวน์โหลดมาจาก Google Play Store โดยผู้ใช้งานคนดังกล่าวจริง ๆ
สำหรับแอปพลิเคชันแบบเสียเงินซื้อแทบจะเลี่ยงไม่ได้เลยที่ต้องมี DRM เพื่อป้องกันไม่ให้แอปพลิเคชันของตัวเองถูก Crack และถูกนำไปเผยแพร่ต่อแบบฟรี ๆ แต่สำหรับแอปพลิเคชันที่ปล่อยให้ดาวน์โหลดฟรีแล้วเน้นหารายได้จากค่าโฆษณาหรือการซื้อของภายในแอปพลิเคชันแทนอาจจะไม่กังวลเรื่อง DRM มากนัก หากแอปพลิเคชันจะถูก Crack และนำไปเผยแพร่ต่อ เพียงแต่ว่าจะส่งผลต่อยอดดาวน์โหลด และรายได้จากโฆษณาที่อาจลดลง
สรุป
ไม่ว่าจะ Application Signing Model หรือ Approval Process ล้วนออกแบบมาเพื่อปกป้องผู้ใช้งานจากแอปพลิเคชันที่ไม่ได้คุณภาพหรือแอปพลิเคชันที่ไม่เหมาะสมเพียงเท่านั้น แม้ว่าแอปพลิเคชันจะถูก sign ด้วยผู้เผยแพร่ที่มีชื่อเสียง และผ่าน Approval Process แล้วก็ไม่ได้หมายความว่าแอปพลิเคชันดังกล่าวจะปลอดภัย เพราะยังมีอีกหลายกรณีที่แอปพลิเคชันชื่อดังเองก็คุกคามผู้ใช้งานเช่นกัน
วิธีป้องกันที่ดีที่สุดสำหรับผู้ใช้งานคือการไม่ติดตั้งแอปพลิเคชันแปลกปลอม ไม่ติดตั้งแอปพลิเคชันที่ไม่ได้อยู่บน Official Application Store โดยไม่จำเป็น แต่หากในกรณีที่หลีกเลี่ยงไม่ได้ก็ควรจะติดตั้งแอปพลิเคชันดังกล่าวลงในมือถือเครื่องที่ไม่มีแอปพลิเคชันหรือข้อมูลสำคัญอย่างเช่น Mobile Banking Application และแอปพลิเคชันทางการเงิน เป็นต้น
สำหรับผู้พัฒนาหรือเผยแพร่แอปพลิเคชันย่อมต้องการให้แอปพลิเคชันของตนเองไม่ตกเป็นเป้าในการถูกนำไป Crack หรือ Mod ซึ่งวิธีการป้องกันสิ่งเหล่านั้นสามารถทำได้หลายวิธี อย่างเช่น การทำ Code Obfuscation, พยายามเผยแพร่แอปพลิเคชันผ่านทาง Official Application Store เท่านั้น, เข้ารหัสไฟล์ต่าง ๆ ของแอปพลิเคชันที่เก็บอยู่บนเครื่อง โดยถอดรหัสเมื่อจะมีการใช้งานเท่านั้น เป็นต้น
สุดท้ายนี้ อยากให้ผู้อ่านทุกคนพึงระลึกไว้เสมอว่า ไม่มีสิ่งใดที่ปลอดภัยอย่างแท้จริง มีเพียงสติและความตระหนักเท่านั้นที่จะช่วยให้เราไม่ตกเป็นเหยื่อของผู้ไม่หวังดี
We will bankrupt ourselves in the vain search for absolute security.
Dwight D. Eisenhower
Up Next

ARTICLES
Mar
01
2021
007 Skyfall : the untold story
สวัสดีปีใหม่ สำหรับในปี 2012 ที่ผ่านมาทางทีมงาน Incognito Lab ของเรา ขอขอบคุณทุก ๆ ท่านที่คอยติดตามเรา และ ส่งเมล์เข้ามาให้กำลังใจทีมงานอย่างมากครับ
READ MORE

ARTICLES
Mar
01
2021
Bangkok Governor Election
สิ่งที่อยากจะแชร์ในวันนี้คือ Security ในเขตเลือกตั้งครับ
READ MORE

ARTICLES
Mar
01
2021
Banking Trojan Hunting — g01pack's fundamental analysis
1-2 วันที่ผ่านมาผมคิดว่าหลาย ๆ คนที่เข้าไปดูข่าวออนไลน์บ่อย ๆ อาจจะตกใจเนื่องจาก Google และ Google Chrome มีการแจ้งเตือนภัยคุกคามว่า website ดังกล่าวอาจเป็นอันตรายต่อคอมพิวเตอร์ของผู้ใช้งาน
READ MORE