Nguy cơ tiềm ẩn
Bên cạnh những giá trị to lớn mà các ứng dụng di động mang lại, thì các ứng dụng di động cũng có nhiều các nguy cơ tiềm ẩn. Chẳng hạn, do ứng dụng di động được cài đặt trực tiếp trên máy của người dùng dẫn đến các ứng dụng có thể bị dịch ngược, tiết lộ thông tin, lấy cắp thông tin cá nhân của người dùng, phát tán mã độc.
Mặt khác, ứng dụng di động thường cung cấp nhiều các dịch vụ tiện ích có giá trị làm lợi liên quan đến tài chính (Nạp tiền, thanh toán trực tuyến, mua hàng…) dẫn đến những nguy cơ về thất thoát, trộm cắp, gian lận tài chính.
Chính vì thế cần phải tìm ra lỗ hổng bảo mật của ứng dụng trước khi kẻ tấn công tìm được là điều vô cùng quan trọng. Vậy làm cách nào để tìm lỗi của các ứng dụng di động?
Phương pháp đánh giá an toàn của ứng dụng di động
Có hai phương pháp đánh giá ứng dụng di động là đánh giá bằng phương pháp phân tích động và đánh giá bằng phương pháp phân tích tĩnh.
Phương pháp phân tích động
Hướng tiếp cận của phương pháp này là cài đặt trực tiếp ứng dụng lên môi trường đánh giá, thực hiện duyệt tất cả các chức năng của chương trình đồng thời sử dụng các công cụ để giám sát, thay đổi dữ liệu của chương trình đánh giá bằng cách duyệt tất cả các chức năng của chương trình. Phương pháp này sẽ giám sát tất cả kết nối giữa ứng dụng và máy chủ, xác định lỗi của chương trình.
Các bước đánh giá gồm:
Xây dựng môi trường chạy ứng dụng.
Xác định các chức năng và các kết nối của ứng dụng.
Liệt kê tất cả các điểm đầu vào ứng dụng.
Xác định khả năng tấn công.
Xác định khả năng mắc lỗi.
Xây dựng môi trường chạy ứng dụng:
Môi trường chạy ứng dụng là một phần rất quan trọng để thực hiện đánh giá ứng dụng, nếu môi trường đánh giá không đáp ứng đủ chức năng của ứng dụng thì việc đánh giá sẽ rất khó khăn và không thể đánh giá hết được các chức năng của ứng dụng. Việc xây dựng môi trường chạy ứng dụng gồm hai phần chính là, thiết lập môi trường mạng và cài đặt ứng dụng lên môi trường thử nghiệm.
Xác định các chức năng và các kết nối của ứng dụng:
Bước này cần duyệt tất cả chức năng của ứng dụng thông qua proxy. Kết thúc bước này cần xây dựng cấu trúc cây thư mục của ứng dụng. Cây bao gồm các file, thư mục, các request/response, URL phục vụ cho việc tìm điểm vào ứng dụng.
Xác định khả năng tấn công:
Bước này tiến hành phân tích từng điểm vào ứng dụng, xác định điểm vào đó có thể mắc lỗi gì. Mục đích là xác định khả năng tấn công ứng dụng. Ánh xạ giữa cấu trúc bên trong và chức năng của ứng dụng ở phía server. Ví dụ một chức năng đăng ký tài khoản người dùng thì chắc chắn có tương tác tới database.
Với mỗi điểm vào ứng dụng thu được ở trên, nhận diện các lỗi thông dụng thường xuất hiện ở chúng. Cụ thể như sau:
STT | Chức năng/Tương tác | Khả năng mắc lỗi |
1 | Remember Password | Lưu thông tin nhạy cảm, không mã hóa |
2 | Gửi tin nhắn | Spam SMS |
3 | Tương tác với cơ sở dữ liệu | SQL injection |
4 | Tương tác với hệ thống (ping, traceroute) | Command injection |
5 | File upload, download | Path traversal, stored cross-site scripting |
6 | Hiển thị thông tin do người dùng cung cấp | Cross-site scripting |
7 | Dynamic redirects | Chuyển hướng người dùng, header injection |
8 | Đăng nhập, đăng ký, khôi phục mật khẩu. | Ghi log thông tin nhạy cảm, Liệt kê người dùng, mật khẩu yếu, tấn công brute force |
9 | Đăng nhập nhiều lớp (username/password, token) | Logic flaws |
10 | Tính năng mạng xã hội, thông tin tài khoản | Liệt kê người dùng, stored cross-site scripting |
11 | Tương tác với email | E-mail và/hoặc command injection |
12 | Sử dụng ứng dụng hãng thứ ba | Những lỗ hổng đã công bố |
13 | Phiên | Session Fixation |
14 | Chức năng quan trọng (thêm, sửa, xóa người dùng) | CSRF |
15 | Thông tin truyền dạng rõ | Session Hjacking |
16 | Phân quyền theo chiều ngang | Phân quyền truy cập dữ liệu |
17 | Phân quyền theo chiều dọc | Leo thang đặc quyền |
Nếu ứng dụng sử dụng nền tảng bên thứ ba cung cấp, tiến hành tìm kiếm những lỗ hổng bảo mật đã được công bố tại: www.osvdb.org.
Kiểm tra khả năng mắc lỗi:
Dựa vào thông tin về điểm vào, tiến hành kiểm tra khả năng mắc lỗi với từng điểm vào ứng dụng.
Phương pháp phân tích tĩnh
Khi thực hiện cần dịch ngược ứng dụng, nhằm mục tiêu xác định những lỗi liên quan đến lập trình không an toàn. Quá trình thực hiện phân tích tĩnh phụ thuộc vào đặc trưng của từng loại ứng dụng, các bước chính để thực hiện bước này bao gồm
Dịch ngược ứng dụng
Liệt kê file thư mục, dịch vụ, module của ứng dụng.
Xác định lỗi
Dịch ngược ứng dụng:
Mục đích dịch ngược chương trình sang mã nguồn có thể dễ dàng đọc phục vụ cho việc xác định lỗi của chương trình.
Liệt kê file thư mục, dịch vụ, module của ứng dụng:
Khi giải nén, dịch ngược chương trình nếu xác định có những tệp tin thư mục không phải là những tệp tin thư mục cơ bản của nền tảng ứng dụng cần đánh giá, thì người đánh giá cập nhật tên tệp tin và thư mục đó vào bảng danh sách tệp tin thư mục của chương trình để phục vụ cho việc xác định lỗi.
Xác định lỗi:
Dựa vào thông tin về các tệp tin thư mục và các thành phần dịch vụ được xác định ở trên ta tiến hành kiểm tra khả năng mắc lỗi với từng nội dung.
Kết luận:
Điện thoại di động là nơi chứa rất nhiều các thông tin nhạy cảm của mỗi cá nhân. Chính vì vậy, việc đảm bảo an toàn thông tin cho các ứng dụng di động là rất quan trọng và nên được chú trọng. Thực tế cho thấy rằng, nếu như không quan tâm đến các lỗ hổng trên các ứng dụng di động thì hậu quả rất nghiêm trọng. Kẻ tấn công có thể lợi dụng các lỗ hổng, điểm yếu an ninh để tấn công vào các hệ thống bên trong, lấy cắp hoặc phá hoại những dữ liệu quan trọng.
Một ứng dụng di động sau khi được kiểm tra đánh giá sẽ đạt được rất nhiều lợi ích: xác định khả năng bị tấn công của hệ thống, các khả năng kết hợp các nguy cơ nhỏ và nguy cơ lớn, cung cấp hiện trạng bảo mật của đối tượng và đưa ra các giải pháp kiện toàn để khắc phục. Tình hình an ninh mạng phức tạp như hiện nay thì việc kiểm tra đánh giá để khắc phục các lỗ hổng bảo mật là điều vô cùng quan trọng.
Hoàng Đạt Thu Hiền (XHTT)
VietBao.vn