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

166

Lỗi chuyển hướng không an toàn

Trong mô hình xử lý ở trên, các URI chuyển hướng ở bước 1 thường không được máy chủ ủy quyền kiểm tra xác thực kỹ mà tin vào yêu cầu gửi lên từ người dùng. Do đó sẽ có nguy cơ khi người dùng muốn đăng nhập vào ứng dụng theo một đướng link mà Attacker đã tạo:

https://sso.server/Auth/?Partnerid=62&Host=third.app&UrlReturn=http:/evil.site/test.php?&UrlCancel=http://third.app/test.php?

Sau khi đăng nhập thành công ở server ủy quyền, người dùng sẽ bị chuyển hướng tới theo URI gửi lên là http://evil.site/test.php.

Lỗi Session Fixation

Lỗi Session Fixation xảy ra khi một ứng dụng không làm mới, tạo mới cookie của người dùng sau khi người dùng xác thực thành công.

Thông thường sau khi người dùng đăng nhập thành công vào website. Server sẽ thiết lập giá trị cookie mới cho người dùng có dạng:

Set-Cookie: SSOID=NeknoCIkHzetzu9hvnwW; path=/; Domain=.sso.server; HttpOnly

Trong mô hình đăng nhập sử dụng Oauth, có một số trường hợp sau sẽ gây nên lỗi:

–         Website ứng dụng và máy chủ ủy quyền ở 2 domain khác nhau, việc website ứng dụng xác định người dùng đã được xác thực chưa phụ thuộc hoàn toàn vào mã ủy quyền.

–         Website ứng dụng và máy chủ ủy quyền cùng thuộc một domain, tuy nhiên sau khi ngươi dùng đăng nhập thành công, máy chủ ủy quyền không tạo một cookie mới cho người dùng.

Trong các trường hợp này, cookie người dùng sử dụng trước và sau khi đăng nhập vào website bên thứ 3 sẽ hoàn toàn giống nhau. Do đó sẽ tạo nguy cơ lừa đảo, chiếm phiên truy cập. Chi tiết được mô tả ở phần tiếp sau.

Mô tả nguy cơ đối với người dùng

Từ những lỗi của triển khai giao thức Oauth sẽ dẫn đế nguy cơ kẻ lừa đảo có thể lừa người dùng đăng nhập vào ứng dùng từ website của máy chủ ủy quyền với URI chuyển hướng là website của kẻ tấn công, sau khi xác thực và ủy quyền thành công thì chuyển hướng người dùng tới website của kẻ lừa đảo, sau đó kẻ lừa đảo sẽ dùng mã ủy quyền của người dùng để đăng nhập hợp lệ website bên thứ 3.

Trong mô hình tấn công này, kẻ tấn công phải thực hiện 2 việc chính:

–         Sử dụng kỹ thuật social engineering để lừa người dùng đăng nhập vào ứng dụng trực tiếp trên website tại máy chủ ủy quyền.

–         Dựng một web service www.evil.site/auth.php để nhận yêu cầu chuyển hướng của người dùng, ghi nhận mã ủy quyền.

Tại ứng dụng cũng chỉ có thể kiểm tra tính hợp lệ của mã ủy quyền, không có giá trị cookie mới được sinh ra để kiểm tra. Đây chính là lỗ hổng Session fixation trong triển khai giao thức Oauth. Sau khi kiểm tra thấy hợp lệ, ứng dụng gán session ID của kẻ tấn công vào phiên truy cập với tài khoản người dùng trong thông tin từ mã ủy quyền. Bây giờ kẻ tấn công đã có thể đăng nhập vào ứng dụng với toàn quyền truy cập tới dữ liệu trong tài khoản người dùng trên máy chủ chứa tài nguyên.

Ta có sơ đồ mô tả tấn công như sau:

bb1

Hình 2: Sơ đồ mô tả tấn công

Khuyến nghị cách khắc phục:
– Dùng địa chỉ chuyển hướng URI đã được đăng ký: chuyển hướng theo URI đã đăng ký, không dựa theo thông tin gửi lên từ người dùng.
– Phương pháp đặt cookie: Nếu ứng dụng và máy chủ ủy quyền thuộc cùng một domain, sau khi xác thực người dùng thành công, cấp cho người dùng cookie mới. Máy chủ xác thực sẽ đặt cookie mới, session mới cho người dùng để ứng dụng sử dụng để kiểm tra.