3.4 Các kiểu tấn công ứng dụng web phổ biến
3.4.8 Cross-Site Request Forgery (CSRF)
a. Mô tả
Hacker tiến hành gửi một yêu cầu nào đó đến một trang mà nạn nhân đã xác thực mà không được sự chấp thuận. Các hacker thường sử dụng cuộc tấn công XSS để thực hiện hành vi trên.
Một nạn nhân nào đó sử dụng dịch vụ trả tiền online của một ngân hàng, mỗi khi thanh tốn chi phí nào đó thì họ sẽ gửi một u cầu đến ngân hàng như sau
Hacker thực hiện sửa lại những đoạn yêu cầu này để chuyển tiền đến tài khoản nào đó được chỉ định. Sau đó chèn đoạn yêu cầu này vào đường dẫn nào đó, rồi sau đó lừa nạn nhân click vào link này.
Vơ tình nạn nhân đã thực hiện việc chuyển tiền cho hacker mà không hề biết nguyên nhân tại sao.
c. Cách phát hiện
Để kiểm tra một trang web có khả năng bị tấn cơng CSRF, ta kiểm tra tất cả các đường link và các form có đang gặp phải tình trạng thiếu các dấu hiệu xác định CSRF hay khơng. Ví dụ như trước khi thực hiện một u cầu nhạy cảm, người dùng cần phải nhập Captcha để xác thực.
Các thông tin cookie, IP nguồn và các thông tin khác được gửi tự động bởi trình duyệt khơng chứa bất kỳ biện pháp phịng chống CSRF nào, do vậy những thông tin này cũng có thể bị tấn cơng.
d. Biện pháp phòng chống
- Biện pháp Chèn dấu hiệu phân biệt CSRF Biện pháp tốt nhất để phòng chống CSRF là thêm dấu hiệu (token) vào các yêu cầu nhạy cảm, theo cơ chế sau Khi server tạo ra một form thì đồng thời nó cũng tạo ra một token, token này được tạo ra phía client theo quy ước đã thỏa thuận trước. Khi nhận được một yêu cầu từ client, nếu token tồn tại trên server thì yêu cầu được thực hiện. Và ngược lại, nếu
không tồn tại token này trên server thì u cầu bị loại bỏ và sẽ có thơng báo đến người dùng cũng như admin của trang web.
- Biện pháp Sự chấp thuận từ phía người dùng Nếu dùng phương pháp chèn token như trên thì rõ ràng việc người dùng muốn lưu yêu cầu lại và sử dụng lại là khơng thể. Do đó có một phương pháp khác là tạo ra một sự chấp thuận của người dùng mỗi khi thực hiện yêu cầu mà không cần chèn token. Một ví dụ cho phương pháp này là sẽ bổ sung sử dụng thêm phương thức kiểm tra Captcha ở mỗi yêu cầu nhạy cảm.