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 Hong Kong (Trung Quốc) trình bày nghiên cứu cho thấy khai thác ảnh hưởng đến ứng dụng Android có thể khiến hơn 1 tỷ ứng dụng đã cài đặt dễ bị tấn công.
Khai thác dựa trên tấn công man-in-the-middle của triển khai di động chuẩn ủy quyền OAuth 2.0. Nghe rất kỹ thuật, nhưng thực tế nghĩa là gì, và dữ liệu bạn an toàn không?
OAuth là gì?
OAuth là chuẩn mở được nhiều trang web và app dùng để cho bạn đăng nhập app hoặc trang web thứ ba bằng tài khoản từ một trong nhiều nhà cung cấp OAuth. Ví dụ phổ biến: Google, Facebook, Twitter.
Nút Đăng nhập đơn (SSO) cho phép bạn cấp quyền truy cập thông tin tài khoản. Khi nhấn nút Facebook, app/trang web thứ ba tìm access token, cấp quyền truy cập thông tin Facebook của bạn.
Nếu token không tìm thấy, bạn sẽ được yêu cầu cho phép app thứ ba truy cập tài khoản Facebook. Sau khi bạn cho phép, Facebook nhận thông điệp từ bên thứ ba yêu cầu access token.
Facebook phản hồi với token, cấp quyền truy cập thông tin bạn chỉ định. Ví dụ, bạn cho truy cập thông tin hồ sơ cơ bản, danh sách bạn bè, nhưng không phải ảnh. Bên thứ ba nhận token và cho bạn đăng nhập với thông tin Facebook. Sau đó, miễn token không hết hạn, nó có quyền truy cập thông tin bạn cho phép.
Hệ thống này nghe tuyệt vời. Bạn nhớ ít mật khẩu hơn, và dễ dàng đăng nhập, xác minh thông tin với tài khoản đã có. Nút SSO thậm chí hữu ích hơn trên di động, nơi tạo mật khẩu mới, cấp quyền tài khoản mới tốn thời gian.
Vấn đề là gì?
Khung OAuth mới nhất — OAuth 2.0 — phát hành tháng 10/2012, không được thiết kế cho app di động. Điều này khiến nhiều nhà phát triển app phải tự triển khai OAuth, không có hướng dẫn cách làm an toàn.
Mặc dù OAuth trên web dùng giao tiếp trực tiếp giữa server bên thứ ba và server nhà cung cấp SSO, app di động không dùng giao tiếp trực tiếp này. Thay vào đó, app di động giao tiếp với nhau qua thiết bị của bạn.
Khi dùng OAuth trên web, Facebook gửi access token và thông tin xác thực trực tiếp đến server bên thứ ba. Thông tin này có thể được xác thực trước khi đăng nhập người dùng hoặc truy cập dữ liệu cá nhân.
Nhà nghiên cứu thấy tỷ lệ lớn ứng dụng Android thiếu xác thực này. Thay vào đó, server Facebook gửi access token đến app Facebook. Access token sau đó được chuyển đến app thứ ba. App thứ ba cho bạn đăng nhập, mà không xác thực với server Facebook rằng thông tin người dùng hợp lệ.
Kẻ tấn công có thể đăng nhập như chính họ, kích hoạt yêu cầu token OAuth. Sau khi Facebook cấp token, chúng chen giữa server Facebook và app Facebook. Kẻ tấn công có thể thay user ID trên token thành của nạn nhân. Username thường là thông tin công khai, vậy rào cản rất ít. Khi user ID đã thay đổi — nhưng ủy quyền vẫn được cấp — app thứ ba sẽ đăng nhập dưới tài khoản nạn nhân.
Loại khai thác này gọi là tấn công man-in-the-middle (MitM). Đây là nơi kẻ tấn công chặn và sửa đổi dữ liệu, trong khi hai bên tin họ giao tiếp trực tiếp với nhau.
Điều này ảnh hưởng bạn như thế nào?
Nếu kẻ tấn công lừa app tin rằng hắn là bạn, hacker truy cập tất cả thông tin bạn lưu trong dịch vụ đó. Nhà nghiên cứu tạo bảng dưới liệt kê thông tin bạn có thể lộ ra trên các loại app khác nhau.
Một số thông tin ít gây hại hơn. Bạn ít lo lắng lộ lịch sử đọc báo hơn toàn bộ kế hoạch du lịch, hoặc khả năng gửi/nhận tin nhắn riêng tư dưới tên bạn. Nhắc nhở rõ ràng về loại thông tin chúng ta thường giao cho bên thứ ba — và hậu quả của việc lạm dụng.
Bạn có nên lo lắng?
Nhà nghiên cứu thấy 41.21% trong 600 app phổ biến nhất hỗ trợ SSO trên Google Play Store dễ bị tấn công MitM. Điều này có thể khiến hàng tỷ người dùng toàn cầu bị phơi bày. Nhóm nghiên cứu trên Android nhưng tin rằng có thể tái tạo trên iOS. Điều này có thể để hàng triệu app trên hai hệ điều hành di động lớn nhất dễ bị tấn công.
Lúc viết bài, chưa có tuyên bố chính thức từ IETF (Nhiệm vụ Kỹ thuật Internet) người phát triển OAuth 2.0. Nhà nghiên cứu từ chối công bố app bị ảnh hưởng, nên bạn nên cẩn thận khi dùng SSO trên app di động.
Có một đường ray hy vọng. Nhà nghiên cứu đã cảnh báo Google, Facebook, và nhà cung cấp SSO khác về khai thác. Bên cạnh đó, họ làm việc cùng nhà phát triển bên thứ ba bị ảnh hưởng để khắc phục.
Bạn có thể làm gì bây giờ?
Mặc dù bản vá có thể đang trên đường, có rất nhiều app bị ảnh hưởng cần cập nhật. Có thể mất thời gian, nên có thể đáng giá không dùng SSO tạm thời. Thay vào đó, khi đăng ký tài khoản mới, hãy chắc chắn tạo mật khẩu mạnh bạn không quên. Hoặc dùng trình quản lý mật khẩu làm việc nặng nhọc.
Thực hành tốt là tự kiểm tra bảo mật định kỳ. Google thậm chí thưởng dung lượng đám mây cho việc làm kiểm tra của họ. Đây là lúc lý tưởng kiểm tra app nào bạn đã cấp quyền trên tài khoản SSO. Đặc biệt quan trọng trên trang như Facebook, lưu lượng lớn thông tin cá nhân nhạy cảm.
Bạn nghĩ đã đến lúc bỏ Single Sign On? Phương pháp đăng nhập tốt nhất là gì? Bạn bị ảnh hưởng bởi khai thác này? Cho chúng tôi biết trong bình luận!