CSRF là một kỹ thuật tấn công nguy hiểm, lừa người dùng thực hiện hành động trái phép trên website mà họ đã đăng nhập. Kỹ thuật này có thể dẫn đến mất dữ liệu, chuyển tiền trái phép, thậm chí ảnh hưởng nghiêm trọng đến uy tín của website. Trong bối cảnh tấn công mạng ngày càng đa dạng, hiểu rõ về CSRF là vô cùng quan trọng. Bài viết này sẽ cung cấp cái nhìn toàn diện về CSRF, từ cách thức hoạt động đến các biện pháp phòng chống hiệu quả.
Những điểm chính
- Định nghĩa: Biết được CSRF là kỹ thuật tấn công mạng lừa người dùng thực hiện các hành động không mong muốn trên một website mà họ đã đăng nhập.
- Lịch sử hình thành: Nắm được quá trình phát triển và mức độ nghiêm trọng của CSRF qua các sự kiện thực tế.
- Tác động và hậu quả: Nhận thức được các hậu quả nghiêm trọng của CSRF, bao gồm đánh cắp thông tin, thao tác trái phép, mất uy tín và kiểm soát tài khoản.
- Cách thức hoạt động: Nắm được cách CSRF khai thác niềm tin của website vào trình duyệt người dùng, lợi dụng cookie xác thực để thực hiện hành động trái phép.
- Các biện pháp phòng chống tấn công: Cung cấp các biện pháp phòng chống tấn công CSRF từ phía người dùng và từ phía máy chủ.
- Các lỗ hổng CSRF phổ biến và kỹ thuật bypass: Nhận biết được các lỗi thường gặp khi triển khai biện pháp phòng chống CSRF, giúp tránh mắc phải những sai lầm này.
- So sánh XSS CSRF: Phân biệt được sự khác nhau giữa CSRF và XSS, hiểu rõ mục tiêu và cách thức tấn công của từng loại.
- Giới thiệu Vietnix: Biết được Vietnix là nhà cung cấp dịch vụ Firewall Anti DDoS uy tín hàng đầu Việt Nam.
- Câu hỏi thường gặp: Có câu trả lời ngắn gọn, dễ hiểu cho các câu hỏi thường gặp về CSRF, giúp củng cố kiến thức.
CSRF là gì?
CSRF (Cross-Site Request Forgery) là một kỹ thuật tấn công mạng nguy hiểm, trong đó kẻ tấn công lừa người dùng thực hiện các hành động không mong muốn trên một website mà họ đã đăng nhập. Hiểu một cách đơn giản, hacker sẽ “mượn quyền” trái phép của người dùng để thực thi các thao tác yêu cầu xác thực mà người dùng không hề hay biết. CSRF còn được biết đến với các tên gọi khác như “session riding” hay “XSRF”.

Lịch sử hình thành tấn công CSRF
Các kiểu tấn công CSRF đã xuất hiện từ những năm 1990. Tuy nhiên, ban đầu chúng không nhận được sự chú ý đáng kể vì các cuộc tấn công này thường xuất phát từ chính địa chỉ IP của người dùng, khiến việc phát hiện trong các file log của website trở nên khó khăn. Đến cuối những năm 2000, CSRF mới trở nên phổ biến và được quan tâm nhiều hơn do sự phát triển mạnh mẽ của các ứng dụng web phong phú và việc sử dụng rộng rãi cookie để xác thực người dùng.
Năm 2008 đánh dấu những sự kiện nổi bật về tấn công CSRF, khi khoảng 18 triệu người dùng eBay ở Hàn Quốc bị đánh cắp thông tin cá nhân. Cùng năm đó, một số khách hàng tại ngân hàng Mexico cũng mất tài khoản cá nhân của mình, và cả hai trường hợp đều được xác định là do kỹ thuật tấn công CSRF. Kể từ đó, các chiến lược bảo vệ chống lại CSRF như sử dụng CSRF Tokens, Same-site cookies và nhiều biện pháp khác đã được phát triển và triển khai rộng rãi để ngăn chặn loại tấn công này.
Tác động và hậu quả của tấn công CSRF
Tấn công CSRF tiềm ẩn nhiều nguy cơ và có thể gây ra những hậu quả nghiêm trọng cho cả người dùng và doanh nghiệp:
- Đánh cắp thông tin: Kẻ tấn công có thể đánh cắp thông tin cá nhân, tài chính của người dùng.
- Thao tác trái phép: CSRF cho phép kẻ tấn công thực hiện các hành động trái phép trên tài khoản người dùng, chẳng hạn như chuyển tiền, đổi mật khẩu, mua hàng,… Điều này gây thiệt hại trực tiếp cho người dùng và ảnh hưởng đến website.
- Mất uy tín: Các hành vi trái phép thông qua CSRF có thể làm ảnh hưởng nghiêm trọng đến uy tín của website và doanh nghiệp.
- Kiểm soát hoàn toàn tài khoản: Trong trường hợp nạn nhân là tài khoản quản trị, kẻ tấn công có thể chiếm quyền kiểm soát toàn bộ ứng dụng.
- Nhắm mục tiêu thay đổi trạng thái: Tấn công CSRF thường nhắm vào các yêu cầu làm thay đổi trạng thái trên máy chủ (state-changing requests), thay vì đánh cắp dữ liệu trực tiếp.
- Login CSRF: Một dạng tấn công đặc biệt là Login CSRF, lừa người dùng đăng nhập vào tài khoản do kẻ tấn công kiểm soát để đánh cắp thông tin cá nhân.
- Stored CSRF: Nguy hiểm hơn nữa là Stored CSRF, khi mã độc được lưu trữ trực tiếp trên website đích, tăng khả năng tấn công thành công do nạn nhân thường xuyên truy cập và đã được xác thực trên website đó.
Cách thức hoạt động của tấn công CSRF
CSRF hoạt động dựa trên việc lừa nạn nhân gửi yêu cầu độc hại đến website mà họ đã đăng nhập, tận dụng phiên xác thực hiện có của nạn nhân. Trình duyệt sẽ tự động gửi kèm cookie xác thực trong mỗi yêu cầu, khiến website không thể phân biệt được yêu cầu giả mạo và yêu cầu hợp lệ.

Để một cuộc tấn công CSRF thành công, cần ba yếu tố then chốt:
- Hành động liên quan (relevant action): Website phải có một hành động quan trọng (ví dụ: chuyển tiền, đổi mật khẩu, thay đổi quyền truy cập) mà kẻ tấn công muốn thực hiện.
- Xử lý dựa trên session cookie (cookie-based session handling): Website chỉ dựa vào session cookie để xác định người dùng, mà không có cơ chế nào khác để theo dõi phiên làm việc hoặc xác thực yêu cầu.
- Tham số request có thể đoán được (no unpredictable request parameters): Kẻ tấn công có thể đoán hoặc xác định được các tham số cần thiết trong yêu cầu HTTP để thực hiện hành động mong muốn.
Các bước thực hiện tấn công CSRF:
- Tạo trang web độc hại: Kẻ tấn công tạo một trang web chứa mã độc, có thể là JavaScript, HTML form hoặc các kỹ thuật khác.
- Dụ nạn nhân truy cập: Kẻ tấn công dụ nạn nhân truy cập vào trang web độc hại thông qua email, tin nhắn, mạng xã hội hoặc nhúng mã độc lên các website phổ biến.
- Thực thi mã độc: Khi nạn nhân truy cập, mã độc được thực thi trong trình duyệt.
- Gửi yêu cầu giả mạo: Mã độc sẽ tạo và gửi yêu cầu giả mạo đến website đích mà nạn nhân đã đăng nhập.
- Thực hiện yêu cầu: Trình duyệt tự động gửi kèm cookie xác thực của nạn nhân, khiến website đích thực hiện yêu cầu giả mạo này như một yêu cầu hợp lệ.
Lưu ý
Mặc dù CSRF thường liên quan đến việc khai thác cookie, nhưng cũng có thể xảy ra với các cơ chế xác thực tự động khác như HTTP Basic authentication hay certificate-based authentication. Trong những trường hợp này, ứng dụng sẽ tự động thêm thông tin đăng nhập vào yêu cầu, tạo cơ hội cho kẻ tấn công khai thác.
Các biện pháp phòng chống tấn công CSRF hiệu quả
Mục tiêu của việc phòng chống CSRF là phân biệt và hạn chế các yêu cầu giả mạo, đảm bảo chỉ những yêu cầu hợp lệ từ người dùng mới được xử lý. Các biện pháp này có thể được thực hiện từ phía người dùng và phía máy chủ.
1. Về phía người dùng
Người dùng đóng vai trò quan trọng trong việc tự bảo vệ mình khỏi các cuộc tấn công CSRF:
- Thoát khỏi các website quan trọng sau khi sử dụng: Luôn đăng xuất khỏi các tài khoản nhạy cảm như ngân hàng, thanh toán trực tuyến, mạng xã hội, email sau khi hoàn thành công việc. Điều này đảm bảo phiên làm việc không còn hiệu lực để kẻ tấn công lợi dụng.
- Không click vào các đường dẫn lạ/không xác định: Cảnh giác với các liên kết nhận được qua email, tin nhắn hoặc mạng xã hội. Luôn kiểm tra địa chỉ website đích bằng cách di chuột qua liên kết trước khi nhấp.
- Không lưu thông tin mật khẩu trên trình duyệt: Tránh sử dụng các tính năng “đăng nhập lần sau” hoặc “lưu mật khẩu” của trình duyệt, vì điều này có thể giúp kẻ tấn công dễ dàng chiếm đoạt phiên.
- Hạn chế truy cập website khác khi đang thực hiện giao dịch quan trọng: Trong khi đang đăng nhập hoặc thực hiện các thao tác nhạy cảm trên một website quan trọng, tránh mở các tab hoặc truy cập các website khác có thể chứa mã khai thác.

2. Về phía máy chủ
Mặc dù chưa có biện pháp phòng chống CSRF nào tuyệt đối, nhưng việc kết hợp các kỹ thuật sau sẽ tăng cường đáng kể khả năng bảo vệ của ứng dụng web:
- Sử dụng đúng phương thức HTTP (GET/POST):
- Sử dụng phương thức GET chỉ cho các thao tác truy vấn dữ liệu (không làm thay đổi trạng thái trên máy chủ).
- Sử dụng phương thức POST cho các thao tác tạo ra sự thay đổi hệ thống (ví dụ: đổi mật khẩu, chuyển tiền). Nếu ứng dụng theo chuẩn RESTful, có thể dùng thêm các HTTP verbs như PATCH, PUT, DELETE cho các tác vụ thay đổi trạng thái.
- Sử dụng Captcha hoặc các thông báo xác nhận:
- Captcha được dùng để xác định người đang thao tác là con người hay bot, thường áp dụng cho các hành động quan trọng như đăng nhập, chuyển khoản.
- Thông báo xác nhận (ví dụ: “Bạn có muốn xóa không?”) yêu cầu người dùng tương tác thêm, làm gián đoạn kịch bản tấn công tự động của CSRF. Tuy nhiên, cần lưu ý cả hai phương pháp này vẫn có thể bị vượt qua nếu kẻ tấn công kết hợp với các lỗ hổng khác như XSS.
- Sử dụng CSRF Token (Synchronizer Token Pattern):
- Đây là một trong những biện pháp phòng chống hiệu quả nhất. Hệ thống tạo ra một token duy nhất cho mỗi phiên hoặc mỗi form, thường được lưu trữ trong session của người dùng.
- Khi người dùng gửi yêu cầu POST, token này sẽ được đính kèm và gửi về máy chủ.
- Máy chủ sẽ so khớp giá trị token nhận được với token đã lưu trong session. Nếu không khớp, yêu cầu sẽ bị từ chối.
- Các framework web hiện đại thường tự động tích hợp cơ chế bảo vệ CSRF token.
- Sử dụng cookie riêng biệt cho trang quản trị:
- Để ngăn chặn việc cookie của trang chính được sử dụng để tấn công trang quản trị, nên sử dụng các subdomain riêng biệt (ví dụ: admin.site.com thay vì site.com/admin). Cookie không thể dùng chung giữa các domain khác nhau, từ đó giới hạn phạm vi tấn công.
- Kiểm tra Header Referer:
- Kiểm tra Referer header của HTTP request để xác định yêu cầu đến từ đâu. Ứng dụng web có thể hạn chế chỉ thực hiện các lệnh HTTP gửi đến từ các trang đã được chứng thực. Tuy nhiên, phương pháp này có nhiều hạn chế và không hoàn toàn đáng tin cậy vì Referer có thể bị làm giả hoặc bị chặn bởi trình duyệt.
- Kiểm tra địa chỉ IP:
- Đối với một số hệ thống cực kỳ quan trọng, có thể cấu hình để chỉ cho phép truy cập từ những địa chỉ IP được thiết lập sẵn. Biện pháp này giúp hạn chế đáng kể nguồn gốc của các yêu cầu, nhưng cũng có thể gây khó khăn cho người dùng hợp lệ nếu IP của họ thay đổi.

Các lỗ hổng CSRF phổ biến và kỹ thuật bypass
Nhiều lỗ hổng CSRF phát sinh do việc triển khai sai các biện pháp phòng chống, đặc biệt là việc sử dụng sai hoặc thiếu sót trong việc kiểm tra CSRF token. Một số lỗi triển khai phổ biến bao gồm:
- Token không được tạo ngẫu nhiên và duy nhất: Nếu token có thể dự đoán được hoặc được sử dụng lại, kẻ tấn công có thể dễ dàng giả mạo.
- Token không được kiểm tra đúng cách: Website không kiểm tra token trong mọi yêu cầu thay đổi trạng thái, hoặc kiểm tra không nghiêm ngặt.
- Token không được liên kết với phiên làm việc: Token không được liên kết chặt chẽ với phiên làm việc của người dùng, khiến kẻ tấn công có thể sử dụng token đánh cắp được.
- Lỗ hổng trong việc tạo và lưu trữ token: Quá trình tạo và lưu trữ token có lỗ hổng bảo mật, cho phép kẻ tấn công truy cập hoặc sửa đổi token.
- Kiểm tra Referer Header không hiệu quả: Chỉ dựa vào Referer Header để ngăn chặn CSRF là không đủ, vì Referer Header có thể bị sửa đổi hoặc bỏ qua.
Ví dụ, một ứng dụng có sử dụng CSRF token nhưng lại không kiểm tra token trong một số yêu cầu quan trọng, hoặc token được tạo theo cách có thể dự đoán được, thì vẫn có thể bị tấn công CSRF. Tương tự, việc chỉ dựa vào Referer-based validation cũng không an toàn, vì kẻ tấn công có thể bypass bằng cách giả mạo Referer Header.
So sánh CSRF và XSS
CSRF và XSS là hai trong số những lỗ hổng bảo mật web phổ biến nhất, tuy nhiên, cơ chế và mục tiêu tấn công của chúng lại khác nhau.
XSS (Cross-Site Scripting) là kỹ thuật tấn công bằng cách chèn mã độc, thường là JavaScript, vào website. Mã độc này sẽ được thực thi trong trình duyệt của người dùng khác khi họ truy cập website bị nhiễm độc.
Phân biệt CSRF và XSS:
- CSRF tập trung vào việc lừa trình duyệt/người dùng thực hiện một hành động không mong muốn trên một trang web mà họ đã đăng nhập. Kẻ tấn công không trực tiếp chèn mã vào website đích mà lợi dụng phiên xác thực của nạn nhân.
- XSS tập trung vào việc chèn mã độc vào website để mã đó được thực thi trong trình duyệt của người dùng khác hoặc để tấn công chính website đó.
Mối liên hệ giữa CSRF và XSS:
Mặc dù khác nhau về bản chất, XSS có thể được sử dụng như một công cụ để thực hiện tấn công hoặc bypass các biện pháp phòng chống CSRF. Ví dụ, kẻ tấn công có thể sử dụng XSS để đánh cắp CSRF token hoặc sửa đổi Referer Header trong yêu cầu, qua đó thực hiện tấn công CSRF thành công. Điều này cho thấy tầm quan trọng của việc phòng chống cả XSS và CSRF để đảm bảo an ninh web toàn diện. Một website có lỗ hổng XSS rất dễ bị tấn công CSRF nếu không có biện pháp bảo vệ thích hợp.

Vietnix – Giải pháp Firewall Anti DDoS hàng đầu tại Việt Nam
Vietnix là đơn vị có hơn 13 năm kinh nghiệm chống DDoS và Botnet tại thị trường Việt Nam. Với công nghệ Firewall độc quyền, Vietnix đã ngăn chặn thành công hàng ngàn cuộc tấn công, mang lại sự ổn định và an toàn tuyệt đối cho hệ thống của doanh nghiệp.
Hệ thống của Vietnix có khả năng phát hiện và chặn các cuộc tấn công DDoS chỉ trong vòng <2 giây, đồng thời hỗ trợ chặn truy cập theo quốc gia và quản lý truy cập quốc tế linh hoạt. Khách hàng có thể chủ động thêm IP vào danh sách blacklist/whitelist, giám sát chi tiết tình trạng ping của từng client để kiểm soát tốt hơn hiệu suất hệ thống.
Bên cạnh đó, đội ngũ kỹ thuật của Vietnix luôn sẵn sàng hỗ trợ 24/7, đảm bảo xử lý sự cố nhanh chóng, giúp doanh nghiệp yên tâm vận hành mà không lo bị gián đoạn bởi các cuộc tấn công mạng.
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website: https://vietnix.vn/
Câu hỏi thường gặp
CSRF token là gì?
CSRF token (hay Cross-Site Request Forgery token) là một chuỗi ký tự ngẫu nhiên, duy nhất được tạo ra bởi máy chủ và nhúng vào các biểu mẫu (form) hoặc yêu cầu HTTP quan trọng của ứng dụng web. Mục đích là xác minh rằng yêu cầu đó được tạo ra bởi người dùng hợp lệ và không phải là yêu cầu giả mạo từ một nguồn bên ngoài, giúp ngăn chặn tấn công CSRF.
CSRF cookie là gì?
CSRF cookie là một biện pháp phòng chống CSRF, trong đó một token ngẫu nhiên được lưu trữ trong cookie và được nhúng vào các form. Máy chủ sẽ so sánh hai giá trị này để xác thực yêu cầu.
CSRF Laravel là gì?
CSRF Laravel là cơ chế bảo vệ ứng dụng Laravel khỏi tấn công CSRF bằng cách tự động tạo và kiểm tra token cho mỗi request POST, PUT, PATCH, hoặc DELETE.
CSRF Portswigger là gì?
CSRF Portswigger đề cập đến các bài học, lab thực hành,và công cụ liên quan đến CSRF được cung cấp bởi Portswigger Web Security, nổi tiếng với công cụ Burp Suite, giúp người dùng tìm hiểu và thực hành khai thác cũng như phòng chống CSRF.
CORS và CSRF khác nhau như thế nào?
CORS là cơ chế bảo mật của trình duyệt để kiểm soát quyền truy cập tài nguyên giữa các website khác nguồn gốc (chủ yếu đọc dữ liệu). CSRF là kỹ thuật tấn công lừa người dùng thực hiện hành động không mong muốn trên website họ đã đăng nhập (chủ yếu thay đổi dữ liệu). Tóm lại, CORS là một tính năng bảo mật, trong khi CSRF là một lỗ hổng bảo mật.
Tóm lại, CSRF là một kỹ thuật tấn công nguy hiểm, có thể gây ra nhiều thiệt hại nghiêm trọng cho cả người dùng và website. Việc phòng chống CSRF là vô cùng quan trọng để đảm bảo an ninh cho ứng dụng web. Không có biện pháp phòng thủ nào là hoàn hảo, do đó cần áp dụng đồng thời và đúng cách nhiều biện pháp bảo mật để giảm thiểu rủi ro. Sự kết hợp giữa các kỹ thuật phòng ngừa phía máy chủ và sự cẩn trọng từ phía người dùng sẽ tạo nên hàng rào bảo vệ hiệu quả nhất.