OWASP Mobile Top 10 là danh sách mười lỗ hổng nghiêm trọng nhất của ứng dụng di động, được công bố bởi tổ chức phi lợi nhuận Open Web Application Security Project. Tài liệu này được cập nhật vài năm một lần dựa trên dữ liệu từ cộng đồng bảo mật và các sự cố thực tế. Theo OWASP Foundation (2024), hơn 75% ứng dụng di động thương mại chứa ít nhất một lỗ hổng từ danh sách này. Nghiên cứu Mobile Top 10 giúp các nhà phát triển và kiểm thử viên xây dựng khả năng bảo vệ ở giai đoạn thiết kế kiến trúc. OWASP, 2024
Những điểm chính
OWASP Mobile Top 10 là danh sách chuẩn hóa các rủi ro bảo mật nghiêm trọng nhất đặc thù cho ứng dụng di động. Khác với OWASP Top 10 chung cho ứng dụng web, phiên bản di động tính đến các đặc thù của nền tảng: lưu trữ cục bộ trên thiết bị, tương tác với cảm biến, chế độ ngoại tuyến và đặc điểm của các cửa hàng ứng dụng. Tài liệu được xuất bản từ năm 2010 và được sửa đổi mỗi 2–4 năm: phiên bản hiện tại cho năm 2024 bao gồm các danh mục như M1 — Improper Credential Usage và M8 — Security Misconfiguration. Dự án được hỗ trợ bởi cộng đồng hơn 500 tình nguyện viên trên toàn thế giới.
Ban đầu, OWASP Top 10 chỉ bao gồm các ứng dụng web, nhưng sự phát triển của ứng dụng di động trong những năm 2010 đòi hỏi một tài liệu riêng. Phiên bản đầu tiên của Mobile Top 10 được phát hành vào năm 2011 và chỉ chứa 7 mục. Đến năm 2024, danh sách đã mở rộng lên 10 danh mục, mỗi danh mục bao gồm nhiều kịch bản tấn công cụ thể. Mục đích chính của tài liệu là cung cấp cho các nhà phát triển và nhóm bảo mật một ngôn ngữ chung để thảo luận về rủi ro và ưu tiên sửa chữa. Các bản cập nhật thường xuyên của danh sách phản ánh những thay đổi trong bối cảnh mối đe dọa: sự xuất hiện của các API mới, sự tiến hóa của hệ điều hành (Android, iOS) và các kỹ thuật tấn công mới được mô tả trong báo cáo của Positive Technologies và các trung tâm nghiên cứu khác.
Phương pháp biên soạn Mobile Top 10 dựa trên dữ liệu từ các dự án thực tế: kết quả kiểm tra thâm nhập ứng dụng di động, báo cáo sự cố và nghiên cứu lỗ hổng được phân tích. Mỗi danh mục được đánh giá theo hai tham số: Tỷ lệ xuất hiện (Incidence Rate) và Tác động kỹ thuật (Technical Impact). Sự kết hợp của các chỉ số này tạo thành bảng xếp hạng cuối cùng. Không giống như các danh sách chủ quan, OWASP sử dụng dữ liệu mở: bất kỳ thành viên cộng đồng nào cũng có thể gửi yêu cầu đưa vào danh mục mới thông qua kho lưu trữ GitHub của dự án. Cho phiên bản hiện tại 2024, hơn 300.000 bài kiểm tra bảo mật từ 25 quốc gia đã được xử lý, làm cho số liệu thống kê mang tính đại diện cho hệ sinh thái phát triển di động toàn cầu. Ngoài ra, OWASP công bố MASVS (Mobile Application Security Verification Standard) — một bộ yêu cầu bảo mật chi tiết bao gồm hơn 80 kiểm tra cụ thể được phân bổ vào 8 danh mục. MASVS được sử dụng làm cơ sở để chứng nhận ứng dụng và làm danh sách kiểm tra cho kiểm tra thâm nhập: mỗi yêu cầu có một tham chiếu đến danh mục Mobile Top 10, đảm bảo khả năng truy xuất giữa tiêu chuẩn và danh sách rủi ro.
Hãy xem xét ba danh mục nghiêm trọng nhất từ OWASP Mobile Top 10 2024, bao phủ hơn 70% tất cả các sự cố bảo mật trong các dự án di động. Mỗi danh mục bao gồm các kịch bản khai thác cụ thể và khuyến nghị bảo vệ.
Danh mục này (M1) bao gồm các tình huống mà nhà phát triển sử dụng API và cơ chế nền tảng không đúng cách. Ví dụ điển hình: Intent Injection trên Android, trình xử lý Deep Link mở trên iOS, xử lý sai Keychain và SharedPreferences. Kẻ tấn công có thể gửi một Intent được tạo đặc biệt và truy cập dữ liệu của ứng dụng hoặc thành phần khác. Theo báo cáo của NowSecure (2023), 22% ứng dụng Android được kiểm tra có chứa lỗ hổng loại Intent Redirection. Bảo vệ bao gồm: xác thực đầu vào nghiêm ngặt, kiểm tra nguồn Intent và sử dụng quyền cho các thành phần được xuất.
Lưu trữ dữ liệu không an toàn (M2) là vấn đề phổ biến nhất trong các ứng dụng di động. Nó xảy ra khi dữ liệu nhạy cảm (token truy cập, mật khẩu, dữ liệu cá nhân) được lưu trữ dưới dạng văn bản thuần túy hoặc với bảo vệ không đầy đủ. Các nguồn lỗ hổng điển hình: cơ sở dữ liệu SQLite không mã hóa, SharedPreferences không có EncryptedSharedPreferences, ghi log dữ liệu ở chế độ gỡ lỗi. Theo OWASP Foundation (2024), hơn 60% ứng dụng miễn phí trên Google Play lưu trữ ít nhất một loại dữ liệu nhạy cảm ở dạng không được mã hóa. Giải pháp là sử dụng Android EncryptedSharedPreferences, iOS Keychain và mã hóa dữ liệu trước khi ghi vào bộ nhớ cục bộ.
Danh mục M3 — Giao tiếp không an toàn — bao gồm các lỗ hổng trong kênh truyền dữ liệu giữa ứng dụng và máy chủ. Thiếu HTTPS, xác thực chứng chỉ SSL không đúng, sử dụng giao thức TLS 1.0/1.1 lỗi thời — tất cả những vấn đề này cho phép kẻ tấn công chặn lưu lượng thông qua các cuộc tấn công Man-in-the-Middle. Tình huống đặc biệt nguy hiểm khi ứng dụng xử lý dữ liệu nhạy cảm (giao dịch ngân hàng, thông tin y tế) qua kênh không được bảo vệ. Năm 2023, các nhà nghiên cứu từ NCC Group phát hiện ra rằng 12% ứng dụng tài chính phổ biến sử dụng cấu hình TLS không chính xác. Khuyến nghị: bắt buộc sử dụng HTTPS với Certificate Pinning và từ chối HTTP trong các bản dựng sản xuất.
Kiểm tra bảo mật của ứng dụng di động theo phương pháp OWASP bao gồm nhiều giai đoạn: phân tích mã tĩnh (SAST), phân tích động (DAST) và kiểm tra thủ công (kiểm tra thâm nhập). Mỗi giai đoạn nhằm xác định các danh mục lỗ hổng cụ thể từ Mobile Top 10.
Để phân tích tự động, OWASP khuyến nghị sử dụng MobSF (Mobile Security Framework) — một công cụ mã nguồn mở. MobSF thực hiện phân tích tĩnh mã nguồn và tệp nhị phân, kiểm tra cấu hình tệp kê khai, phân tích quyền và xác định các lỗ hổng từ Mobile Top 10. Để phân tích động, Burp Suite (proxy chặn lưu lượng) và Frida (công cụ phân tích thời gian chạy) được sử dụng. Sự kết hợp của các công cụ này bao phủ hơn 80% danh mục trong danh sách. Kiểm tra thường xuyên trong đường ống CI/CD với MobSF cho phép xác định lỗ hổng ở giai đoạn phát triển sớm và giảm chi phí sửa chữa xuống 60–70%. Việc tích hợp các công cụ SAST và DAST vào đường ống nên được tự động hóa thông qua plugin Gradle/Maven hoặc các bước Fastlane trong bản dựng iOS.
Sau khi chạy MobSF, nhà phát triển nhận được báo cáo với các chỉ thị màu sắc: đỏ — lỗ hổng nghiêm trọng, cam — rủi ro trung bình, vàng — rủi ro thấp. Mỗi cảnh báo chứa tham chiếu đến danh mục OWASP Mobile Top 10 tương ứng, mô tả vấn đề và khuyến nghị sửa chữa. Điều quan trọng không chỉ là loại bỏ các cảnh báo đỏ mà còn phân tích các cảnh báo cam: nhiều trong số chúng (ví dụ: Activity được xuất mà không có bảo vệ) có thể kết hợp để tạo cho kẻ tấn công một vectơ tấn công. Khuyến nghị đạt được không có cảnh báo đỏ và không quá 2–3 cảnh báo cam trước mỗi lần phát hành. Báo cáo MobSF cũng bao gồm phân tích quyền ứng dụng: bất kỳ quyền quá mức nào (ví dụ: truy cập camera trong máy tính) đều được gắn cờ là vi phạm nguyên tắc đặc quyền tối thiểu và phải được xóa khỏi tệp kê khai. Đối với ứng dụng iOS, MobSF thực hiện phân tích tương tự các tệp .ipa, bao gồm kiểm tra Info.plist về các ngoại lệ ATS và phân tích tệp nhị phân Mach-O cho các API không an toàn như NSAllowsArbitraryLoads.
Hãy xem xét một ví dụ về phân tích tĩnh ứng dụng Android sử dụng MobSF để xác định lỗ hổng từ OWASP Mobile Top 10. Mã cho thấy một lỗi điển hình — lưu trữ token không an toàn trong SharedPreferences.
class InsecureStorage {
private val prefs = context.getSharedPreferences("my_app", Context.MODE_PRIVATE)
fun saveToken(token: String) {
prefs.edit().putString("auth_token", token).apply()
}
fun getToken(): String? {
return prefs.getString("auth_token", null)
}
}
MobSF khi phân tích mã như vậy sẽ đưa ra cảnh báo về lưu trữ dữ liệu không an toàn (danh mục M2 — Insecure Data Storage). Phiên bản đã sửa sử dụng EncryptedSharedPreferences từ thư viện AndroidX Security. Việc triển khai mã hóa dữ liệu đúng cách ở cấp độ lưu trữ tuân thủ các khuyến nghị của OWASP và ngăn chặn rò rỉ token khi truy cập vật lý vào thiết bị. Sau khi triển khai EncryptedSharedPreferences, lỗ hổng được giải quyết, bằng chứng là không có cảnh báo tương ứng trong báo cáo MobSF.
class SecureStorage(context: Context) {
private val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
private val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun saveToken(token: String) {
securePrefs.edit().putString("auth_token", token).apply()
}
}
Câu hỏi thường gặp
OWASP Mobile Top 10 là danh sách mười lỗ hổng nguy hiểm nhất thường thấy trong các ứng dụng di động. Tài liệu giúp các nhà phát triển hiểu cần chú ý điều gì khi tạo ứng dụng an toàn.
Danh sách được cập nhật khoảng mỗi 2–4 năm. Phiên bản mới nhất được phát hành vào năm 2024. Các bản cập nhật tính đến những thay đổi trên nền tảng di động, sự xuất hiện của các API mới và sự tiến hóa của các phương pháp tấn công.
Mobile Top 10 tính đến các đặc thù của nền tảng di động: lưu trữ dữ liệu cục bộ, làm việc với cảm biến, hệ thống Android Intent, chế độ ngoại tuyến và đặc điểm xuất bản trên cửa hàng ứng dụng, những điều không có trong phiên bản web.
Theo thống kê của OWASP Foundation, phổ biến nhất là M2 — Insecure Data Storage. Nó xuất hiện trong hơn 60% ứng dụng di động được kiểm tra ở tất cả các danh mục.
Bắt đầu bằng cách cài đặt MobSF — công cụ phân tích tĩnh miễn phí. Tải lên APK hoặc mã nguồn của ứng dụng, và MobSF sẽ tự động hiển thị các danh mục Mobile Top 10 có trong dự án.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm