Có bao giờ bạn đăng nhập tài khoản vào một trang nào đó có giao diện tương tự Facebook và bị mất tài khoản chưa? Nếu bạn đang băn khoăn không biết rằng chúng là dạng tấn công gì – câu trả lời chính là CSRF. Vậy CSRF là gì? Liệu một cuộc tấn công CSRF chỉ sử dụng để đánh cắp tài khoản Facebook hay còn làm gì nữa? Một cuộc tấn công CSRF nguy hiểm ra sao? Cách để phòng tránh bị tấn công sẽ được hé lộ trong bài viết nhé!
Tìm hiểu về CSRF
CSRF là gì?
CSRF là một kỹ thuật tấn công giả mạo chính chủ thể của chúng, CSRF hay còn được biết đến với những cái tên như: ross-site Request Forgery, XSRF hay session riding; trong một vài trường hợp, CSRF được phát âm là sea-surf.
Có thể hiểu đơn giản, một cuộc tấn công CSRF sẽ khiến người dùng thực hiện những hoạt động chứng thực với website rằng họ đang thực hiện. Sau đó, các hacker dựa vào những thông tin/ thao tác của người dùng hacker sẽ thực hiện “mượn quyền” chính chủ.
Hậu quả của một cuộc tấn công CSRF ra sao?
Khi hacker thành công trong việc khiến người dùng không biết mình đang bị tấn công, chúng sẽ bắt đầu thực hiện những hành động như sau:
- Thay đổi email, thông tin đăng nhập của người dùng
- Trộm các thông tin cá nhân của người dùng trong tài khoản
- Thực hiện việc chuyển tiền bất hợp pháp
- Tùy thuộc vào mục đích cuộc tấn công, hacker có thể chỉ yêu cầu thực hiện một số hành động hoặc chiếm hẳn quyền điều khiển tài khoản của người dùng.
- Trong trường hợp tài khoản đó là tài khoản quản lý ứng dụng hay một website, khi chúng chiếm được tài khoản, chúng sẽ chiếm hoàn toàn quyền điều khiển website, ứng dụng.
Có thể nói rằng, hậu quả của một cuộc tấn công CSRF là không hề nhẹ!
Một cuộc tấn công CSRF diễn ra như thế nào?
Trong phần này, Tino Group sẽ giải thích dựa trên ví dụ để các bạn không học về code cũng có thể hiểu. Nếu muốn tham khảo những thông tin kỹ thuật của một cuộc tấn công CSRF, bạn có thể tham khảo bài viết của OWASP – tổ chức phi lợi nhuận gia hỗ trợ gia tăng tính bảo mật của phần mềm nhé!
Điều kiện để một cuộc tấn công CSRF có thể diễn ra
Để một cuộc tấn công CSRF diễn ra, cần có 3 điều kiện chính:
- Hành động yêu cầu của kẻ tấn công nhắm vào những đặc quyền của người dùng như đổi mật khẩu, yêu cầu chuyển tiền,…
- Cuộc tấn công CSRF sẽ diễn ra dựa vào session cookies của nạn nhân. Ví dụ: hacker đưa hàng loạt HTTP request vào ứng dụng và ứng dụng không thể phân biệt được đâu là yêu cầu của người dùng, đâu là yêu cầu của hacker.
- Không nhắm đến những thông tin không thể biết trước. Ví dụ, nếu một hành động hacker nhắm đến yêu cầu những thông tin không thể đoán hay không thể tìm được ví dụ như yêu cầu chuyển khoản ngân hàng. Hành động này sẽ yêu cầu khá nhiều thứ như: OTP, mật khẩu lẫn một số yêu cầu xác thực danh tính khác.
Ví dụ về cuộc tấn công CSRF
Ở đầu bài, Tino Group đã nhắc đến ở đầu bài viết, chúng ta sẽ lấy ví dụ về một cuộc tấn công đánh cắp tài khoản Facebook nhé!
Vào một ngày không đẹp trời, bạn quyết định truy cập vào một trang web không đáng tin cậy và có nhiều khả năng chứa nhiều thứ độc hại như: website chứa nội dung 18+, website cá độ,…
Bạn vô tình bấm vào một banner hay website. Bỗng dưng xuất hiện một yêu cầu đăng nhập tài khoản Facebook mới có thể tiếp tục xem nội dung. Và bạn thực hiện đăng nhập theo yêu cầu của website.
Tuy nhiên, chúng sẽ dẫn bạn đến một trang Facebook giả mạo giống hệt Facebook thật nhưng khác đường link. Khi bạn đăng nhập thông tin vào form giả mạo, chúng sẽ ẩn một thông tin yêu cầu quyền đổi mật khẩu đến Facebook. Nếu thông tin đăng nhập của bạn chính xác, Facebook sẽ tự động xác nhận bạn đang thực hiện hành động trên.
Hacker sẽ chiếm tài khoản Facebook của bạn một cách hoàn toàn tự động. Khi bạn đăng nhập vào Facebook của mình, bạn sẽ chỉ nhận lại một thông báo:
Tuy nhiên, hiện tại tài khoản Facebook không dễ bị tấn công và đánh cắp như trước đây. Nhưng bạn vẫn sẽ phải cảnh giác không phải chỉ tài khoản Facebook mà còn tài khoản ở nhiều trang web khác.
Cách để phòng chống CSRF
Tính đến thời điểm hiện tại, vẫn chưa có phương pháp nào có thể chống cuộc tấn công CSRF hiệu quả 100%. Vì thế, phần lớn việc bạn có thể làm là đề phòng trước khi cuộc tấn công CSRF diễn ra.
Phòng chống CSRF phía server
Nếu bạn xây dựng ứng dụng, bạn có thể học hỏi theo cách bảo mật của các ngân hàng và các nhà phát triển lớn như Amazon, Google như sau:
- Sử dụng Captcha, OTP và các yêu cầu xác thực bảo mật khác
- Kiểm tra địa chỉ IP
- Sử dụng phương án csrf_token
Sử dụng Captcha, OTP và các yêu cầu xác thực bảo mật khác
Khi bạn sử dụng Captcha, bạn sẽ loại bỏ được khá nhiều bot thực hiện yêu cầu liên tục vào website, ứng dụng của bạn.
Đối với những thao tác đặc quyền như: thay đổi mật khẩu, đăng nhập, reset mật khẩu, thực hiện chuyển khoản, thanh toán đơn hàng,.. bạn nên áp dụng những phương thức bảo mật như:
- Yêu cầu sinh trắc vân tay trên các thiết bị di động
- Yêu cầu OTP qua email, số điện thoại – Tino Group nhận thấy các ứng dụng hiện tại yêu cầu OTP thông qua điện thoại rất nhiều, đồng nghĩa việc này rất hiệu quả.
- Gửi link yêu cầu xác nhận qua email, số điện thoại, nếu bạn sử dụng Shopee, bạn sẽ thấy ứng dụng này sẽ gửi một link yêu cầu số điện thoại => bạn bấm vào => bấm xác nhận.
- Gửi yêu cầu đến thiết bị di động để xác như của Google.
Kiểm tra địa chỉ IP
Một trong những điều các hacker thông thường hay dùng là sử dụng địa VPN để ẩn địa chỉ IP. Do đó, bạn có thể chặn những địa chỉ IP của các VPN nhằm tránh tình trạng bị tấn công cũng là một giải pháp.
Sử dụng phương án csrf_token
Token của bạn sẽ thay đổi liên tục trong session. Nếu các request thay đổi thông tin có trùng session ID, bạn có thể loại bỏ bớt những request đó.
Phòng chống CSRF phía client
Đối với người dùng, các bạn sẽ nên lưu ý những điều như sau:
- Đăng xuất tài khoản của bạn khi thực hiện các giao dịch, tài khoản, website quan trọng sau khi thực hiện xong công việc. Hiện tại, các sàn thương mại điện tử sẽ thường xuyên giúp bạn tự đăng xuất khỏi máy tính sau một khoảng thời gian ngắn.
- Không nên click vào các URL, liên kết đáng ngờ. Khái niệm “đáng ngờ” khá “mông lung” nhưng bạn chỉ cần cảnh giác với các địa chỉ email lạ, SMS lạ,…
- Xóa cookies sau khi sử dụng website cũng là một cách để phòng chống CSRF hiệu quả.
Đến đây, bạn cũng đã hiểu hơn về CSRF là gì rồi đúng không nào? Hầu hết các ứng dụng, dịch vụ lớn sẽ có những phương thức tốt nhất và được cập nhật liên tục để giúp bạn tránh khỏi cuộc tấn công CSRF. Tuy nhiên, bạn vẫn nên cảnh giác nhất có thể! Tino Group chúc bạn sẽ luôn an toàn trên internet.
Những câu hỏi thường gặp về CSRF
Làm sao để xóa cookies trên Chrome?
Để xóa cookies trên một trang web nào đó khi bạn đang sử dụng trình duyệt Chrome, bạn thực hiện như sau:
Nhấn vào nút khóa ngay trên thanh địa chỉ web => Cookies => bạn bấm vào Remove tất cả những cookies có liên quan đến trang web bạn đang sử dụng => reset lại Chrome.
Vậy là cookies website và các thông tin đăng nhập của bạn đã bị xóa khỏi trình duyệt Chrome.
Giao thức HTTPS có thể giúp giảm thiểu cuộc tấn công CSRF hay không?
Không, giao thức HTTPS không có bất cứ tác dụng nào dùng để chống lại các cuộc tấn công CSRF. Tuy nhiên, HTTPS sẽ hỗ trợ giảm thiểu những cuộc tấn công về bảo mật thông thường khác.
Xây dựng ứng dụng chỉ đồng ý POST request có thể chống CSRF hay không?
Về ý tưởng: ứng dụng được thiết kế chỉ nhận POST request để thực hiện các logic nghiệp vụ, hacker không thể tạo liên kết độc hại và các cuộc tấn công CSRF không thể diễn ra.
Tuy nhiên, điều này lại sai hoàn toàn! Như ví dụ ở trên, hacker chỉ cần tạo một form giả với các thông số ẩn, sau đó người dùng sẽ kích hoạt vì nghĩ rằng form đó có mục đích khác.
Cách sử dụng Rewriting URL để chống CSRF ra sao?
Khi Rewriting URL, hacker sẽ không thể tìm thấy session ID của nạn nhân và cũng không thể đoán ra được. Tuy nhiên, session ID của người dùng sẽ hiển thị trên URL. Vì thế, Tino Group nghĩ phương pháp này không phải là một cách hay khi “lấy lỗi lấp lỗi”.