เมื่อก้าวเข้าสู่ยุคดิจิทัล โทรศัพท์มือถือเป็นอีกหนึ่งเครื่องมือสื่อสารที่แทบจะกลายเป็นอีกส่วนสำคัญในชีวิตประจำวัน ซึ่งการใช้งานผ่านโทรศัพท์นั้น ความปลอดภัยของแอปพลิเคชันบนโทรศัพท์จึงมีความสำคัญมากยิ่งขึ้นไปด้วย แอปพลิเคชันบนโทรศัพท์ที่ไม่ได้รับการป้องกันอย่างเพียงพออาจกลายเป็นช่องทางให้ผู้ไม่ประสงค์ดีเจาะเข้ามาได้ง่ายดาย และสร้างความเสียหายต่อผู้ใช้งาน รวมถึงองค์กรที่พัฒนาแอปพลิเคชันนั้น
และเพื่อป้องกันปัญหาดังกล่าวเหล่านี้ องค์กรที่หลายท่านรู้จักอย่าง OWASP (Open Web Application Security Project) ได้จัดทำรายงาน OWASP Top 10 Mobile ซึ่งเป็นรายงานที่ระบุถึงความเสี่ยงด้านความปลอดภัยที่สำคัญที่สุด 10 ประการ สำหรับแอปพลิเคชันบนโทรศัพท์มือถือ ซึ่งเวอร์ชันล่าสุดคือ OWASP Mobile Top 10 (2024) ซึ่งกว่าเวอร์ชัน 2024 จะประกาศออกมานั้น ต้องใช้เวลารอกันถึง 8 ปีเลยทีเดียว ดังนั้นในวันนี้เราไปดูกันค่ะว่าแต่ละข้อจะมีรายละเอียดอะไรบ้าง…
M1: Improper Credential Usage
มีการจัดการหรือการใช้งาน Credential ของผู้ใช้อย่างไม่เหมาะสม โดยที่มีการนำ Credential ไปใช้งานแต่ไม่ได้ป้องกันอาจจะทำให้ข้อมูลรั่วไหลได้ ไม่ว่าจะเป็นการเขียน Username, Password ไว้ใน Source Code หรือส่ง Credential ผ่าน Network ที่ไม่มีการเข้าหัส โดยส่วนมากจะมีทั้ง API Key, Token, Username, Password
วิธีการป้องกัน
- หลีกเลี่ยงการเก็บข้อมูลสำคัญภายใน Source Code ควรเก็บไว้ที่ฝั่ง Server
- ควรอัปเดตหรือเปลี่ยน API Key และ Token อยู่เสมอ
- ทำการ Encrypt Credential ทุกครั้งเมื่อมีการใช้งาน
M2: Inadequate Supply Chain Security
การที่เรา Build App โดยใช้ Third Party Components ซึ่งมีช่องโหว่ ดังนั้นจะส่งผลทำให้แอปพลิเคชันของเรามีช่องโหว่ไปด้วย ทำให้เหล่า Attacker สามารถฝัง Malicious Code เพื่อขโมย Sensitive Data ได้ ส่งผลให้ข้อมูลรั่วไหล สามารถเข้าใช้งานแอปพลิเคชันของผู้ใช้งานได้ หรือบางทีอาจยึดเครื่องผู้ใช้งานได้เลย
วิธีการป้องกัน
- ทำการ Review Source Code
- ใช้เฉพาะ Third-Party Libraries หรือ Components ที่เชื่อถือได้และผ่านการ Validate แล้วเท่านั้น เพื่อลดความเสี่ยงจากช่องโหว่
- App Updates, Patches และ Releases เพื่อป้องกันไม่ให้ผู้โจมตีใช้ประโยชน์จากช่องโหว่ในแอปพลิเคชัน
M3: Insecure Authentication/Authorization
การยืนยันตัวตนและการตรวจสอบสิทธิที่ไม่เหมาะสม ความเสี่ยงนี้เกี่ยวข้องกับการขโมย User Credentials เพื่อใช้ล็อกอินเข้าแอปพลิเคชันหรือเจาะเข้าสู่ Servers อีกทั้งผู้โจมตียังสามารถใช้ประโยชน์จากการควบคุมการเข้าถึง (Access Control) ที่ไม่ดีได้อีกด้วย
วิธีป้องกัน
- ใช้มาตรการเสริมความปลอดภัยด้าน Server-Side เพื่อควบคุม Authentication และ Authorization
- ทำการทดสอบ Mobile App Attestation
- ใช้ MFA (Multi-factors authentication)
- ควรหลีกเลี่ยงการอนุญาตให้ผู้ใช้ตั้งรหัสผ่านการตรวจสอบสิทธิ์เป็นตัวเลข 4 หลัก
M4: Insufficient Input/Output Validation
ความเสี่ยงนี้เกิดจากการตรวจสอบความถูกต้องของข้อมูลจาก Input ภายนอก หรือการทำ Input Validation ไม่เพียงพอ ซึ่งสามารถทำให้ Attacker โจมตีด้วยวิธีการต่าง ๆ เช่น SQL Injection, Cross-Site Scripting (XSS)
วิธีการแก้ไข
- ทำการ Input Validation ที่ฝั่ง Server
- กรองข้อมูลจากผู้ใช้งานในรูปแบบของ White-Listing ซึ่งจะรับข้อมูลได้แค่เฉพาะตัวเลขหรืออักขระที่ได้รับการอนุญาตเท่านั้น
M5: Insecure Communication
แอปพลิเคชันและ Server ที่มีการสื่อสารกันอย่างไม่เหมาะสม โดยเมื่อมีการแลกเปลี่ยนข้อมมูลกับ Server เราต้องใช้ Secure Protocol อย่างเช่น Https เสมอ ไม่เช่นนั้น Attacker อาจดักแก้ไขข้อมูลหรือเก็บ Sensitive Data ของเราได้
วิธีแก้ไข
- ทำการ Encrypt ข้อมูลก่อนที่จะส่งไปใน Network
- ใช้ SSL/TLS ทุก ๆ การสื่อสาร
- ใช้ Certificate ที่เชื่อถือได้ และไม่อนุญาตให้ใช้ Certificate ที่ไม่ดี เช่น Self-signed หมดอายุ, Root ที่ไม่เชื่อถือได้, ถูกเพิกถอน, หรือไม่ตรงกับโฮสต์ นอกจากนี้ยังควรพิจารณาการใช้ Certificate Pinning และตรวจสอบ SSL Chain
- ไม่ส่งผ่านข้อมูลที่เป็น Sensitive Data ผ่านทาง SMS หรือการแจ้งเตือนต่าง ๆ
M6: Inadequate Privacy Controls
การควมคุมหรือจัดการข้อมูล Data Privacy (ความเป็นส่วนตัวทางข้อมูล) ที่ยังไม่เหมาะสม ปัญหาหลักของการควบคุมความเป็นส่วนตัวคือการป้องกันข้อมูลที่เรียกว่า Personally Identifiable Information (PII) เป็นข้อมูลที่สามารถใช้ในการระบุตัวบุคคล เช่น ชื่อ, ที่อยู่, อีเมล, เบอร์โทรศัพท์ ฯลฯ ข้อมูลเหล่านี้มีความสำคัญอย่างมากและอาจถูกใช้ในทางที่ไม่เหมาะสม เช่น การปลอมตัวเป็นเจ้าของข้อมูล, การใช้ข้อมูลการชำระเงินในทางที่ไม่ถูกต้อง, การส่งข้อความทุจริตเพื่อเรียกราคาไถ่, หรือการลบหรือแก้ไขข้อมูลที่มีความสำคัญ
วิธีป้องกัน
- ลดการเก็บข้อมูลที่เป็น Sensitive Data
- ให้ผู้ใช้มีสิทธิเลือกว่าจะเปิดเผยข้อมูลส่วนบุคคลหรือไม่ โดยเพิ่มการยินยอมเป็นองค์ประกอบหลักในการเก็บและใช้ข้อมูล
- เข้ารหัสข้อมูล
M7: Insufficient Binary Protections
เมื่อไบนารี (Binary) ของแอปพลิเคชันถูกรีคอมไฟล์ (Reverse Engineer) นั้น อาจทำให้ข้อมูลที่สำคัญของถูกเปิดเผยแก่ผู้ไม่ประสงค์ดี เช่น ผู้ใช้ที่ไม่ใช่เจ้าของแอปพลิเคชัน หรือผู้โจมตีที่ต้องการนำข้อมูลและ Source Code มาใช้เพื่อวัตถุประสงค์ที่ไม่ดีเช่น Attacker จะสามารถหา Secret Key ต่าง ๆ ได้ เพื่อนำไปใช้ประโยชน์ในการเข้าระบบ
วิธีการป้องกัน
- ทำการ Obfuscation เพื่อป้องกันการ Reverse Engineer
- Encrypt Sensitive Data
- ทำ Access Control ที่ฝั่ง Server
M9: Insecure Data Storage
ปัญหาจากการ Insecure Data Storage เกิดขึ้นเมื่อข้อมูลถูกเก็บไว้ใน Storage ที่ไม่ปลอดภัย ซึ่งส่งผลกระทบจากปัญหานี้ เช่น การถูกยึด Account โดยการขโมย Credentials ที่เก็บอยู่ใน Storage, การแก้ไขข้อมูลใน Storage, และความเสี่ยงที่สูงของการเข้าถึง Configuration Files หรือ Encryption Keys ที่เก็บไว้ใน Storage
วิธีป้องกัน
- Encryption Storage
- จัดเก็บ Key ใน Keychain ของ iOS หรือ Keystore ของ Android
- กำหนดสิทธิ์การเข้าถึงข้อมูลให้เหมาะสม
M10: Insufficient Cryptography
ความเสี่ยงนี้มาจากการใช้วิธีการเข้ารหัสที่อ่อนแอ, การใช้ Salt ที่ไม่เพียงพอ
วิธีป้องกัน
- เลือกใช้ Algorithm ที่มีความแข็งแรงและได้มาตรฐาน
- ใช้ Secret Key ที่มีความยาว และจัดเก็บใน Storage ที่มีความปลอดภัย
- ในการรับส่ง Key ควรใช้ Secure Protocols
จบไปแล้วนะคะสำหรับ OWASP Mobile Top 10 2024 หวังว่าทุกท่านจะสามารถนำไปใช้ป้องกันความปลอดภัยให้แก่แอปพลิเคชันบนมือถือได้อย่างมีประสิทธิภาพ และปกป้องข้อมูลส่วนตัวได้เป็นอย่างดีนะคะ