Tìm hiểu dạng tấn công Cross-Site Request Foregy - CSRF và biện pháp phòng chống với dạng tấn công này.
Trong các bài trước chúng ta cùng nhau tìm hiểu về 10 lỗ hổng nghiêm trọng trong ứng dụng web và sơ lược về tấn công XSS. Bài hôm nay Blog Thao Phạm sẽ giới thiệu về dạng tấn công tiếp theo, cũng lọt top 10 đề cử các mối nguy hiểm cho ứng dụng web đó là tấn công CSRF.
Thế nào là tấn công CSRF?
Cross-Site Request Foregy là dạng tấn công bẫy nạn nhân tải một trang web chứa các yêu cầu mã độc do hacker tạo ra. Cuộc tấn công này giúp kẻ tấn công có thể sử dụng thông tin nhận dạng và quyền truy nhập của nạn nhân để thực hiện những hành vi không mong muốn. Chẳng hạn như thay đổi địa chỉ email, thay đổi địa chỉ nhà, thực hiện giao dịch, mua bán,...
Kịch bản tấn công như thế nào?
Với các giả thiết đặt ra là Alice đã được xác thực với trang web bank.com (có thể Alice đang trong phiên làm việc hoặc được thực hiện tự động bằng cookie lưu trong trình duyệt), sau đó yêu cầu chuyển tiền được thực hiện.
Kịch bản tấn công:
Bước 1: Alice muốn chuyển cho Bob một số tiền $100 sử dụng trực tuyến thông qua trang web bank.com. Yêu cầu chuyển tiền có dạng
POST http://bank.com/transfer.do HTTP/1.1
...
...
Conten-Length:19;
acct=BOB&amount=100
Bước 2: Maria nhận ra việc thực hiện yêu cầu chuyển tiền này cũng có thể sử dụng yêu cầu GET:
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
Do đó, Maria quyết định khai thác lỗi này của bank.com để lừa Alice chuyển tiền cho mình. Maria đã tạo một URL có yêu cầu chuyển $100000 từ Alice cho cô:
http://bank.com/transfer.do?acct=MARIA&amount=100000
Bước 3: Maria tạo bẫy để Alice thực hiện yêu cầu chuyển tiền. Cô tạo ra một link trong mail và gửi tới Alice:
<a href="http://bank.com/transfer.do?acct=MARIA&amount=100000">Xem hình</a>
Bước 4: Do tài khoản của Alice vẫn đang trong phiên làm việc, hoặc có thể thực hiện tự động việc xác nhận tài khoản tới web bank.com, Alice vô tình đã thực hiện chuyển tiền cho Maria. Việc này có thể bị phát hiện thông qua việc mở URL.
>>>Đọc thêm: Tấn công XSS và biện pháp phòng chống - Phần 1
Cách phòng chống tấn công CSRF
1. Sử dụng "chuỗi đồng bộ" cho mỗi thao tác quan trọng
- Máy chủ sẽ tạo ra "chuỗi đồng bộ" và gửi cho máy khách
- Máy khác sẽ gửi yêu cầu giao dịch kèm theo "chuỗi đồng bộ" để máy chủ kiểm tra và xác thực.
- Sử dụng chuỗi xác thực CAPTCHAR. Việc sử dụng CAPTCHAR sẽ giúp hệ thống nhận biết đối tượng đang thao tác có phải là con người hay không. Các thao tác quan trọng như "đăng nhập", "chuyển khoản", "thanh toán" thường sử dụng captchar.
2. Sử dụng Viewstate (ASP.NET)
Viewstate cho biết trạng thái của trang khi gửi yêu cầu lên máy chủ và kẻ tấn công khó có thể làm giả Viewstate.
3. Sử dụng thư viện chuẩn trong thiết kế
Nên sử dụng những thư viện chuẩn đã được kiểm định và công bố như: OWASP CSRF Guard; PHP CSRF Guard; .Net CSRF Guard.
4. Sử dụng giao thức OTP/Challenge-Respone
Kiểm tra lại mật khẩu cho mỗi thao tác quan trọng sử dụng giao thức OTP hay sử dụng mật khẩu/token một lần.
Trên đây là bài viết tìm hiểu về dạng tấn công CSRF và các phòng chống. Mong rằng bài viết mang đến cho các bạn những kiến thức bổ ích.
0 Comments