CSRF là gì?
CSRF, viết tắt của “Cross Site Request Forgery”, đề cập đến một loại tấn công có khả năng tạo ra sự nhầm lẫn. Trong trường hợp này, sự nhầm lẫn xảy ra khi tăng cường tính xác thực và cấp quyền cho nạn nhân thông qua việc gửi các yêu cầu giả mạo đến máy chủ. Do đó, lỗ hổng CSRF có thể tạo ra ảnh hưởng nghiêm trọng đối với nhiều quyền hạn của người dùng, bao gồm cả quyền quản trị viên và quyền truy cập, khiến chúng mất đi hoặc bị đánh cắp.
CSRF là gì?
Khi bạn thực hiện một yêu cầu HTTP, trình duyệt của người sử dụng sẽ nhận về một Cookie, mà sau đó được lưu trữ trong phiên làm việc để xác định người dùng mà không cần xác thực lại cho các yêu cầu tiếp theo.
Nếu phiên làm việc của nạn nhân vẫn còn hiệu lực và Cookie vẫn giữ thông tin xác thực, hoặc nếu ứng dụng web không đảm bảo an ninh và dễ bị tấn công CSRF, thì có khả năng tấn công sẽ sử dụng CSRF để thực hiện mọi yêu cầu trên ứng dụng web đó. Điều này bao gồm cả trang web không có khả năng phân biệt được yêu cầu là thực hay giả mạo.
Nói một cách đơn giản, CSRF là một kỹ thuật tấn công dựa trên việc lợi dụng phiên làm việc hiện tại mà người dùng đã xác thực, còn được gọi là “session riding” hoặc “XSRF”.
Rủi ro của CSRF là gì?
Lợi dụng lỗ hổng thông qua CSRF, các hacker có thể lợi dụng để:
- Đánh cắp đi nhưng dữ liệu bí mật
- Thực hiện phát tán worm lên mạng xã hội.
- Cài đặt những phần mềm độc hại lên điện thoại di động.
- Thực hiện khảo sát trực tuyến.
Thực sự rất khó để có thể ước tính được mức độ nguy hiểm và phổ biến của một cuộc tấn công CSRF. Theo các chuyên gia, CSRF được em là một trong mười lỗ hổng bảo mật hàng đầu của OWASP.
Tìm hiểu về lịch sử và kịch bản tấn công CSRF
Lịch sử tấn công CSRF
Dạng tấn công CSRF (Cross-Site Request Forgery) đã xuất hiện từ những năm 1990 và có nguồn gốc từ địa chỉ IP của người sử dụng. Điều này khiến cho các dòng nhật ký (log file) trên trang web không hiển thị bất kỳ dấu hiệu nào về CSRF. Điều này đồng nghĩa với việc những cuộc tấn công sử dụng kỹ thuật CSRF thường không được báo cáo đầy đủ. Cho đến năm 2007, chỉ khiến cho tài liệu mô tả chi tiết về tấn công CSRF mới xuất hiện.
Năm 2008, khoảng 18 triệu người dùng eBay tại Hàn Quốc đã trải qua việc bị đánh cắp thông tin cá nhân. Trong thời điểm đó, một số khách hàng ở Mexico cũng gặp phải tình trạng mất cắp tài khoản cá nhân của họ. Cả hai sự kiện này đều liên quan đến việc hacker sử dụng kỹ thuật tấn công CSRF để tạo ra lỗ hổng và lấy đi thông tin cá nhân quan trọng.
Tấn công CSRF để lại nhiều hệ lụy cho người dùng
Cú lừa tấn công CSRF có kịch bản ra sao?
Ứng dụng web hoạt động dựa trên cơ chế nhận câu lệnh HTTP từ người dùng và thực hiện thao tác tương ứng. Tuy nhiên, tồn tại một rủi ro an ninh khi hacker sử dụng kỹ thuật Cross-Site Request Forgery (CSRF) để đánh lừa trình duyệt người dùng, từ đó gửi câu lệnh HTTP đến các ứng dụng web một cách không mong muốn.
Để thực hiện tấn công CSRF, hacker có thể chèn mã độc hoặc liên kết vào trang web đã được người dùng xác thực. Trong trường hợp phiên làm việc của người dùng vẫn còn hiệu lực, các câu lệnh sẽ được thực thi với quyền chứng thực của người dùng đó.
Các phương thức thực hiện kỹ thuật lừa đảo CSRF rất đa dạng, bao gồm việc lừa người dùng bằng cách nhấp vào liên kết hoặc thông qua việc gửi email chứa mã độc. Hacker thậm chí có thể che dấu các đường liên kết một cách tinh tế hơn, làm cho chúng khó bị phát hiện.
Hướng dẫn phòng chống tấn công CSRF
CSRF dựa vào nguyên tắc “lừa trình duyệt người dùng để gửi câu lệnh HTTP”. Vì vậy, để tránh khỏi cấn công ta cần chia thành 2 đối tượng là phía client và phía server.
Với phía người dùng (User)
Để không trở thành nạn nhân do tấn công CSRF, bạn cần bảo đảm các lưu ý như sau:
- Chủ động đăng xuất tài khoản khỏi những website quan trọng như: Tài khoản ngân hàng, mạng xã hội, gmail, thanh toán trực tuyến,… nếu như đã hoàn thành giao dịch.
- Chủ động login vào máy riêng và không cho người thứ 2 tiếp xúc với máy đó.
- Không được click vào đường dân mà bạn nhận được qua facebook, email,.. Nếu bạn đưa chuột thông qua 1 đường dẫn phía dưới bên trái trình duyệt. Sẽ luôn có địa chỉ website đích và bạn nên lưu ý để chúng đến đúng trang mà mình muốn.
- Nếu thực hiện giao dịch hoặc vào website quan trọng thì bạn không nên vào song song website khác. Bởi vì chúng có thể chứa các đoạn mã khai thác do kẻ tấn công để lại.
- Không nên lưu các thông tin về mật khẩu ở trình duyệt của mình. Nên hạn chế lựa chọn các phương thức “đăng nhập lần sau” hoặc “lưu mật khẩu”,…
Làm sao để bảo mật website?
Với phía Server
Theo các chuyên gia, đến hiện tại chưa thể tìm ra biện pháp chống CSRF triệt để. Tuy nhiên, phía server có thể áp dụng một vài kỹ thuật sau để phòng ngừa.
-
- Chủ động dùng captcha và các thông báo xác nhận: Mã Captcha thường được dùng với mục đích nhận biết thao tác trên hệ thống là người hay máy. Những thao tác “đăng nhập”, chuyển khoản hoặc thanh toán nên sử dụng mã captcha. Nên áp dụng các chức năng quan trọng như reset mật khẩu, xác nhận và thay đổi info của account. Ngoài ra, nên gửi url qua email đa được đăng ký để người dùng có thể thực hiện các click vào xác nhận.
- Sử dụng csrf_token: Token có nhiệm vụ thay đổi liên tục sau các phiên làm việc. Khi thay đổi thì các thông tin sẽ được gửi kèm từ token. Nếu như token sinh ra và token được gửi lên không trùng nhau thì request sẽ được loại bỏ.
- Kiểm tra IP: Những hệ thống quan trọng thì chỉ nên cho truy cập từ các IP đã được thiết lập sẵn. Hoặc chỉ nên cấp phép truy cập quản trị thông qua IP local hoặc VPN.
- Chủ động dùng cookie riêng biệt cho trang chủ admin: Server nên để trang quản trị ở một subdomain riêng để đảm bảo chúng không sử dụng chung cookies với front end của sản phẩm.
- Kiểm tra Referrer: Bạn cần kiểm tra nhưng câu lệnh HTTP gửi đến được xuất phát từ đâu. Mỗi một ứng dụng web đều có thể hạn chế và chỉ thực hiện những lệnh http gửi đến từ một số trang đã được chứng thực. Tuy nhiên, cách này có thể mang lại nhiều hạn chế nhất định và không mang lại quá nhiều hiệu quả.
Tổng kết
Bài blog mới cung cấp thông tin về CSRF cho độc giả, giải thích khái niệm làm thế nào. Đối với mỗi nhà phát triển, việc nắm vững về tấn công CSRF và cách ngăn chặn nó là vô cùng quan trọng. Hy vọng rằng, những kiến thức được chia sẻ trong bài viết sẽ hữu ích cho bạn khi thực hiện các biện pháp phòng ngừa CSRF.