Câu hỏi này xoay quanh việc cố gắng tìm hiểu các rủi ro bảo mật liên quan đến việc triển khai oauth trên nền tảng di động như Android. Giả định ở đây là chúng ta có một ứng dụng Android có mã khóa / bí mật của người tiêu dùng được nhúng vào.
Giả sử một bí mật của người tiêu dùng đã bị xâm phạm và một hacker đã nắm được nó, thì hậu quả của việc này là gì?
Các giả định về Bí mật
người tiêu dùng bị xâm phạm Tôi có đúng khi nói rằng bí mật của người tiêu dùng bị xâm phạm không ảnh hưởng đến bảo mật của người dùng hoặc bất kỳ dữ liệu nào được lưu trữ tại nhà cung cấp hỗ trợ OAuth mà người dùng đang tương tác. Bản thân dữ liệu không bị xâm phạm và hacker không thể lấy được.
Tin tặc sẽ cần có được mã thông báo truy cập người dùng hợp lệ và điều đó khó hơn rất nhiều.
Tin tặc có thể làm gì với bí mật của người tiêu dùng bị xâm phạm?
Tôi cũng đúng khi nêu những điều sau:
- Tin tặc có thể thiết lập / xuất bản một ứng dụng bắt chước ứng dụng của tôi.
- Tin tặc có thể thu hút người dùng đi qua luồng OAuth, lấy mã thông báo truy cập thông qua vũ điệu OAuth của tin tặc (sử dụng khóa / bí mật của người tiêu dùng bị xâm phạm).
- Người dùng có thể nghĩ rằng anh ta đang giao dịch với ứng dụng của tôi, vì anh ta sẽ thấy một cái tên quen thuộc (khóa người dùng) trong quá trình ủy quyền.
- Khi người tiêu dùng đưa ra yêu cầu thông qua tin tặc, tin tặc có thể dễ dàng đánh chặn mã thông báo truy cập và kết hợp với bí mật của người tiêu dùng giờ đây có thể thay mặt tôi ký yêu cầu để có quyền truy cập vào tài nguyên của tôi.
Tác động của người dùng cuối
Trong giả định rằng
- một tin tặc đã thiết lập một ứng dụng / trang web sử dụng bí mật người tiêu dùng của tôi
- một trong những người dùng của tôi đã bị lừa khi cấp quyền truy cập vào ứng dụng / trang web đó
Điều sau có thể xảy ra:
- người dùng cuối có thể nhận thấy rằng có điều gì đó khó hiểu đang xảy ra và thông báo cho nhà cung cấp dịch vụ (ví dụ: Google) về ứng dụng độc hại
- nhà cung cấp dịch vụ sau đó có thể thu hồi khóa / bí mật của người tiêu dùng
Tác động của người tiêu dùng OAuth (ứng dụng của tôi):
Ứng dụng của tôi (chứa bí mật của người tiêu dùng) sẽ cần được cập nhật, vì nếu không, tất cả khách hàng của tôi sẽ không thể ủy quyền cho ứng dụng của tôi thay mặt họ thực hiện các yêu cầu nữa (vì bí mật người tiêu dùng của tôi sẽ không còn có giá trị).
Ủy quyền tất cả lưu lượng truy cập OAuth
Mặc dù có thể ủy quyền rất nhiều tương tác OAuth thông qua một máy chủ web trung gian (thực hiện vũ điệu OAuth và gửi mã thông báo truy cập cho người dùng), người ta cũng sẽ phải ủy quyền tất cả các tương tác dịch vụ, vì khóa người dùng / bí mật được yêu cầu để ký mỗi yêu cầu. Đây có phải là cách duy nhất để giữ khóa / bí mật của người tiêu dùng bên ngoài ứng dụng dành cho thiết bị di động và được lưu trữ ở một nơi an toàn hơn trên máy chủ web trung gian không?
Các lựa chọn thay thế
Có các lựa chọn thay thế cho việc nhập proxy này không? Có thể lưu trữ bí mật của người tiêu dùng tại máy chủ web trung gian và có một số loại cơ chế mà ứng dụng Android (được xuất bản trên thị trường và đã được ký hợp lệ), có thể thực hiện một yêu cầu an toàn tới máy chủ web trung gian để lấy bí mật của người tiêu dùng và lưu trữ nó không trong ứng dụng? Có thể thực hiện một cơ chế mà máy chủ web trung gian "biết" rằng đây là một ứng dụng Android chính thức đang yêu cầu tìm nạp bí mật của người tiêu dùng và máy chủ web trung gian sẽ chỉ cung cấp bí mật của người tiêu dùng cho ứng dụng Android cụ thể đó không?