Những lỗ hổng trong cài đặt giao thức Open Authorization (P1)

339

Open Authorization (viết tắt là Oauth) là một chuẩn giao thức dùng trong xác thực và ủy quyền. Giao thức này cho phép người dùng chia sẻ nguồn tài nguyên riêng (ảnh, địa chỉ, tài khoản thanh toán…) được lưu trữ trên một trang web (facebook, google, yahoo…) cho các ứng dụng, trang web khác. Việc chia sẻ này không cần người dùng phải chuyển giao các thông tin username, password cho ứng dụng, website bên thứ ba.

Luồng xử lý giao thức Oauth

Trong giao thức Oauth có các thành phần chính tham gia là:

–         Resource owner (chủ sở hữu tài nguyên). Ví dụ: người dùng

–         OAuth client  (ứng dụng, website bên thứ 3. Ví dụ: các ứng dụng trên facebook, các game trên trang gate.vn, trang web ohay.vn

–         Authorization server (máy chủ ủy quyền): Máy chủ sẽ cấp access token cho ứng dụng bên thứ 3 sau khi được người dùng cấp phép.Ví dụ: Facebook, Google, psp.gate.vn, paygate.vtc.vn

–         Resource sever (máy chủ chứa tài nguyên): Các máy chủ lưu trữ các nguồn tài nguyên đã được bảo vệ

–         Authorization code (mã ủy quyền): đoạn mã mà máy chủ ủy quyền sinh ra khi chủ sỡ hữu tài nguyên cấp quyền cho một yêu cầu truy xuất tài nguyên.

–         Access token (mã truy nhập): mã để ứng dụng bên thứ 3 truy xuất trực tiếp với máy chủ chứa tài nguyên

Sơ đồ luồng xử lý ủy quyền như sau:

aa1

Hình 1: Sơ đồ luồng xử lý ủy quyền của giao thức Oauth

Bước 1: Khi người dùng muốn đăng nhập vào ứng dụng bằng tài khoản của bên khác (Facebook, Google, Patgate…), ứng dụng chuyển hướng người dùng tới website của máy chủ ủy quyền. Trong yêu cầu gửi lên gồm thông tin ID của ứng dụng, URI để chuyển hướng sau khi xác thực…
Bước 2: Người dùng thực hiện đăng nhập bình thường bằng username, password tại website của nhà cung cấp xác thực Oauth. Tiến hành xác nhận ủy quyền cho ứng dụng truy xuất vào dữ liệu cá nhân
Bước 3: Sau khi người dùng ủy quyền thành công, máy chủ ủy quyền sẽ chuyển hướng người dùng về ứng dụng theo địa chỉ URI ở bước 1. Trong URI chuyển hướng sẽ bao gồm tham số mã ủy quyền.
Bước 4: Ứng dụng sẽ gửi mã ủy quyền trực tiếp lên máy chủ ủy quyền để yêu cầu cấp access code.
Bước 5: máy chủ ủy quyền sẽ kiểm tra các thông tin nhận được. Nếu hợp lệ thì gửi access token cho ứng dụng
Bước 6: Ứng dụng gửi yêu cầu truy xuất tài nguyên lên máy chủ chứa tài nguyên với access token được cấp ở bước 5.
Bước 7: Máy chủ chứa tài nguyên kiểm tra tính hợp lệ của access token. Nếu hợp lệ thì cho phép truy xuất tài nguyên.
Ra đời version 1 vào năm 2006, nhóm phát triển giao thức Open Authorization đã phát hành version 2 vào tháng 10/2012 vừa qua. So với version 1 thì version 2 có những thay đổi đáng chú ý sau:
– Việc dùng chữ ký số trong thông tin truyền giữa máy chủ ủy quyền và ứng dụng bên thứ 3 sẽ được thay bằng việc dùng kênh truyền an toàn HTTPS
– Thời gian hợp lệ của Access token không còn dài 1 năm như trong version 1 mà sẽ ngắn hơn rất nhiều, có thêm tham số Refresh Token trong yêu cầu gửi lên nhận Access Token mới.