Tại hội nghị bảo mật Black Hat Europe năm nay, hai nhà nghiên cứu từ Đại học Hồng Kông Trung Quốc đã trình bày nghiên cứu cho thấy một hành vi khai thác ảnh hưởng đến các ứng dụng Android có khả năng khiến hơn một tỷ ứng dụng đã cài đặt dễ bị tấn công.
Việc khai thác dựa trên một cuộc tấn công trung gian của việc triển khai tiêu chuẩn ủy quyền OAuth 2.0 trên thiết bị di động. Điều đó nghe có vẻ rất kỹ thuật, nhưng nó thực sự có nghĩa là gì và dữ liệu của bạn có an toàn không?
OAuth là gì?
OAuth là một tiêu chuẩn mở được nhiều trang web và ứng dụng sử dụng để cho phép bạn đăng nhập vào ứng dụng hoặc trang web của bên thứ ba bằng cách sử dụng tài khoản từ một trong nhiều nhà cung cấp OAuth. Một số ví dụ phổ biến và nổi tiếng là Google, Facebook và Twitter.
Nút Đăng nhập một lần (SSO) cho phép bạn cấp quyền truy cập vào thông tin tài khoản của mình. Khi bạn nhấp vào nút Facebook, ứng dụng hoặc trang web của bên thứ ba sẽ tìm kiếm mã thông báo truy cập, cấp cho nó quyền truy cập vào thông tin Facebook của bạn.
Nếu không tìm thấy mã thông báo này, bạn sẽ được yêu cầu cho phép bên thứ ba truy cập vào tài khoản Facebook của mình. Khi bạn đã cho phép điều này, Facebook sẽ nhận được thông báo từ bên thứ ba yêu cầu cung cấp mã thông báo truy cập.
Facebook phản hồi bằng mã thông báo, cấp cho bên thứ ba quyền truy cập vào thông tin bạn đã chỉ định. Ví dụ:bạn cấp quyền truy cập vào thông tin hồ sơ cơ bản và danh sách bạn bè, nhưng không cấp quyền truy cập vào ảnh của bạn. Bên thứ ba nhận mã thông báo và cho phép bạn đăng nhập bằng thông tin đăng nhập Facebook của mình. Sau đó, miễn là mã thông báo không hết hạn, nó sẽ có quyền truy cập vào thông tin bạn đã ủy quyền.
Đây có vẻ như là một hệ thống tuyệt vời. Bạn phải nhớ ít mật khẩu hơn và có thể dễ dàng đăng nhập và xác minh thông tin của mình bằng tài khoản bạn đã có. Các nút SSO thậm chí còn hữu ích hơn trên thiết bị di động khi tạo mật khẩu mới, nơi việc cấp phép tài khoản mới có thể tốn thời gian.
Vấn đề là gì?
Khung OAuth gần đây nhất - OAuth 2.0 - được phát hành vào tháng 10 năm 2012 và không được thiết kế cho các ứng dụng dành cho thiết bị di động. Điều này dẫn đến việc nhiều nhà phát triển ứng dụng phải tự triển khai OAuth mà không có hướng dẫn về cách thực hiện nó một cách an toàn.
Mặc dù OAuth trên các trang web sử dụng giao tiếp trực tiếp giữa máy chủ của bên thứ ba và nhà cung cấp SSO, các ứng dụng dành cho thiết bị di động không sử dụng phương thức giao tiếp trực tiếp này. Thay vào đó, các ứng dụng di động giao tiếp với nhau thông qua thiết bị của bạn.
Khi sử dụng OAuth trên một trang web, Facebook cung cấp mã thông báo truy cập và thông tin xác thực trực tiếp đến các máy chủ của bên thứ ba. Sau đó, thông tin này có thể được xác thực trước khi người dùng đăng nhập hoặc truy cập vào bất kỳ dữ liệu cá nhân nào.
Các nhà nghiên cứu phát hiện ra rằng một tỷ lệ lớn các ứng dụng Android thiếu xác thực này. Thay vào đó, các máy chủ của Facebook gửi mã thông báo truy cập đến ứng dụng Facebook. Sau đó, mã thông báo truy cập sẽ được chuyển đến ứng dụng của bên thứ ba. Sau đó, ứng dụng của bên thứ ba sẽ cho phép bạn đăng nhập mà không cần xác minh với máy chủ của Facebook rằng thông tin người dùng là hợp pháp.
Kẻ tấn công có thể đăng nhập với tư cách là chính họ, kích hoạt yêu cầu mã thông báo OAuth. Khi Facebook đã cho phép mã thông báo, họ có thể tự chèn vào giữa các máy chủ của Facebook và ứng dụng Facebook. Sau đó, kẻ tấn công có thể thay đổi id người dùng trên mã thông báo thành của nạn nhân. Tên người dùng cũng thường là thông tin công khai, vì vậy có rất ít rào cản đối với kẻ tấn công. Sau khi ID người dùng đã được thay đổi - nhưng vẫn được cấp quyền - ứng dụng của bên thứ ba sẽ đăng nhập bằng tài khoản của nạn nhân.
Kiểu khai thác này được gọi là tấn công man-in-the-middle (MitM). Đây là nơi mà kẻ tấn công có thể đánh chặn và thay đổi dữ liệu, trong khi hai bên tin rằng họ đang giao tiếp trực tiếp với nhau.
Điều này ảnh hưởng đến bạn như thế nào?
Nếu kẻ tấn công có thể đánh lừa một ứng dụng tin rằng anh ta là bạn, thì kẻ tấn công sẽ có quyền truy cập vào tất cả thông tin mà bạn lưu trữ trong dịch vụ đó. Các nhà nghiên cứu đã tạo bảng hiển thị bên dưới liệt kê một số thông tin bạn có thể hiển thị trên các loại ứng dụng khác nhau.
Một số loại thông tin ít gây thiệt hại hơn những loại khác. Bạn ít phải lo lắng về việc lộ lịch sử đọc tin tức của mình hơn tất cả các kế hoạch du lịch, hoặc khả năng gửi và nhận tin nhắn riêng tư dưới danh nghĩa của bạn. Đó là một lời nhắc nhở nghiêm túc về các loại thông tin mà chúng tôi thường xuyên giao phó cho bên thứ ba - và hậu quả của việc sử dụng sai mục đích.
Bạn có nên lo lắng không?
Các nhà nghiên cứu phát hiện ra rằng 41,21% trong số 600 ứng dụng phổ biến nhất hỗ trợ SSO trên Cửa hàng Google Play dễ bị tấn công bởi MitM. Điều này có thể khiến hàng tỷ người dùng trên khắp thế giới tiếp xúc với kiểu tấn công này. Nhóm đã tiến hành nghiên cứu trên Android nhưng họ tin rằng nó có thể được nhân rộng trên iOS. Điều này có thể khiến hàng triệu ứng dụng trên hai hệ điều hành di động lớn nhất dễ bị tấn công.
Tại thời điểm viết bài, không có tuyên bố chính thức nào từ Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF), những người đã phát triển Đặc điểm kỹ thuật OAuth 2.0. Các nhà nghiên cứu đã từ chối nêu tên các ứng dụng bị ảnh hưởng, vì vậy bạn nên thận trọng khi sử dụng SSO trên các ứng dụng dành cho thiết bị di động.
Có lớp lót bạc. Các nhà nghiên cứu đã cảnh báo cho Google, Facebook và các nhà cung cấp SSO khác về việc khai thác. Trên hết, họ đang làm việc cùng với các nhà phát triển bên thứ ba bị ảnh hưởng để khắc phục sự cố.
Bạn có thể làm gì bây giờ?
Mặc dù bản sửa lỗi có thể đang được thực hiện, nhưng có rất nhiều ứng dụng bị ảnh hưởng sẽ được cập nhật. Quá trình này có thể mất một chút thời gian, vì vậy có thể đáng để bạn không sử dụng SSO trong thời gian chờ đợi. Thay vào đó, khi bạn đăng ký một tài khoản mới, hãy đảm bảo rằng bạn tạo một mật khẩu mạnh mà bạn sẽ không quên. Hoặc sử dụng trình quản lý mật khẩu để thực hiện công việc nặng nhọc cho bạn.
Thỉnh thoảng bạn nên tiến hành kiểm tra bảo mật của riêng mình. Google thậm chí sẽ thưởng cho bạn trong bộ nhớ đám mây vì đã thực hiện kiểm tra của họ. Đây là thời điểm lý tưởng để kiểm tra những ứng dụng bạn đã cấp quyền trên tài khoản SSO của mình. Điều này đặc biệt quan trọng trên một trang web như Facebook, nơi lưu trữ một lượng lớn thông tin cá nhân.
Bạn có nghĩ rằng đã đến lúc loại bỏ tính năng Đăng nhập một lần không? Bạn nghĩ phương pháp đăng nhập tốt nhất là gì? Bạn có bị ảnh hưởng bởi việc khai thác này không? Hãy cho chúng tôi biết trong phần bình luận bên dưới!