Kỹ thuật tấn công CSRF là gì ?
NỘI DUNG BÀI VIẾT
Đối với những lập trình viên việc tạo ra các website là một việc không phải là quá khó. Nhưng làm thể nào để website mình tạo ra có được độ bảo mật cao để chặn được các cuộc tấn công mạng. Và CSRF là một kiểu tấn công diễn ra khá phổ biến hiện nay trên các website không bảo mật. Vậy nên cùng tìm hiểu về CSRF ở bài này nhé.
Cùng tìm hiểu CSRF là gì nào ?
CSRF hay còn gọi là kỹ thuật tấn công “Cross-site Request Forgery“ sử dụng quyền chứng thực của người dùng đối với một website.
CSRF nói đến việc tấn công vào chứng thực request trên web thông qua việc sử dụng Cookies. Đây là nơi mà các hacker có khả năng sử dụng thủ thuật để tạo request mà bạn không hề biết. Vì vậy, một CSRF là hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệt của nạn nhân.
CSRF còn được gọi là “session riding”, “XSRF”
Lịch sử về cuộc tấn công CSRF
Các kiểu tấn công CSRF bắt đầu xuất hiện từ những năm 90, tuy nhiên nhưng cuộc tấn công này lại xuất phát từ chính IP của những người sử dụng nên do đó các log file của các website thường không cho chúng ta thấy các dấu hiệu của việc hacker đang tấn công bằng CSRF.
Tới tận năm 2008 người ta mới phát hiện ra rằng có khoảng 18 triệu người sử dụng eBay ở Hàn Quốc đang bị mất các thông tin cá nhân của mình. Và cũng chính trong năm 2008, một số khách hàng tại ngân hàng Mexico bị mất tài khoản cá nhân của mình. Và cả 2 trường hợp trên các hacker đều sử dụng kĩ thuật tấn công CSRF để ăn cắp thông tin.
Vậy CSRF được hoạt động như thế nào ?
CSRF là kiểu tấn công gây ra sự nhầm lẫn và tăng tính xác thực và cấp quyền của nạn nhân khi gửi một request giả mạo đến máy chủ. Vì thế khi có một lỗ hổng, CSRF sẽ ảnh hưởng đến các quyền của người dùng ví dụ như quản trị viên, kết quả là các hacker truy cập được đầy đủ quyền.
Khi gửi một request HTTP, trình duyệt của nạn nhân sẽ nhận về Cookie. Các cookie thường được dùng để lưu trữ một session để định danh người dùng không phải xác thực lại cho mỗi yêu cầu gửi lên.
Nếu phiên làm việc đã xác thực của nạn nhân được lưu trữ trong một Cookie vẫn còn hiệu lực, và nếu ứng dụng không bảo mật dễ bị tấn công CSRF. Kẻ tấn công có thể thử dụng CSRF để chạy bất cứ request nào với ứng dụng web mà ngay cả trang web không thể phân biệt được request nào là thực hay giả mạo.
Ví dụ để hiểu rõ hơn, khi ứng dụng web có một chức năng đơn giản đó là thay đổi mật khẩu người dùng. Việc gửi lên server theo phương thức HTTP GET thông thường. Nội dung gửi lên là password mới và confirm lại password vừa nhập.
Người dùng đã đăng nhập trên web của bạn, cookie sẽ được tạo và lưu trữ dưới trình duyệt, khi bạn vào site lần sau bạn không cần phải đăng nhập lại. Giả sử bạn chưa đăng thoát, lúc này cookies của bạn vẫn còn hạn trong phiên làm việc.
Lúc này nếu website của bạn mắc lỗi CSRF, người dùng vô tình vào một trang hacker giả mạo với mục đích lấy tài khoản từ ứng dụng web của bạn. Trong trang giả mạo hacker sẽ dùng script để chạy một url để cài đặt lại mật khẩu người dùng trên trang của bạn:https://example.com/csrf?password_new=123456&password_conf=123456&change=change
Như vậy khi người dùng vô tình vào trang example.com đã reset password của bản thân tại trang example.com.
Cách phòng chống
Các lập trình viên nên tìm hiểu đúng và hiểu rõ về CSRF là gì và từ đó chúng ta mới có thể ngăn chặn các cuộc tấn công CSRF. Về cơ bản chúng ta chia làm 2 đối tượng để tránh tấn công bằng CSRF đó là user và server.
Phía User
Để tránh trở thành việc bị tấn công bằng CSRF thì người dùng nên thực hiện một số lưu ý sau:
- Nên đăng xuất khỏi các website quan trọng.
- Không cho người khác biết mật khẩu của tài khoản mình.
- Không nên click vào các đường dẫn mà bạn nhận được qua email, qua facebook.
- Không nên chọn các phương thức “đăng nhập lần sau”, “lưu mật khẩu” …
- Trong quá trình thực hiện giao dịch hay vào các website quan trọng không nên vào các website khác, có thể chứa các mã khai thác của kẻ tấn công.
Phía Server
Cho đến nay vẫn chưa có biện pháp nào có thể phòng chống triệt để CSRF. Sau đây là một vài kĩ thuật sử dụng.
- Sử dụng captcha, các thông báo xác nhận.
- Sử dụng
csrf_token
: token này sẽ thay đổi liên tục trong phiên làm việc, và khi thay đổi thông tin gửi kèm thông tin token này. Nếu token được sinh ra và token được gửi lên ko trùng nhau thì loại bỏ request. - Sử dụng cookie riêng biệt cho trang admin: Nên để trang quản trị ở một subdomain riêng.
Đọc thêm: OAuth2 là gì ?
Leave a Reply