#

CSRF là gì? Cách ngăn chặn tấn công CSRF hiệu quả

 05/09/2022 - 16:00 Trịnh Duy Thanh

Vấn đề bảo mật trang web luôn là vấn đề được nhiều người quan tâm. CSRF là một trong những cuộc tấn công nguy hiểm có ảnh hưởng lớn đến các dữ liệu quan trọng. Vậy cụ thể loại tấn công này là gì? Hãy cùng chúng tôi tìm hiểu chi tiết ở bài viết dưới đây.

CSRF là gì?

CSRF la gi

CSRF (Cross-Site Request Forgery) là một kỹ thuật tấn công giả mạo nhắm vào các ứng dụng trang web, chẳng hạn như gửi liên kết qua email hoặc SMS. Kẻ tấn công sẽ dụ dỗ và đánh lừa để người dùng nạn nhân click vào đường link đã được request sẵn để lấy địa chỉ email hoặc cấp quyền truy cập vào các dữ liệu quan trọng.

Đăng ký chứng chỉ SSL tại BKHOST

Chứng chỉ SSL giúp bảo vệ các giao dịch trực tuyến, nâng cao độ uy tín của website với khách hàng, bằng cách đảm bảo tính riêng tư tất cả các dữ liệu được truyền giữa các máy chủ và các trình duyệt.

BKHOST cam kết giá tốt nhất thị trường, mua ngay:

mua chứng chỉ ssl

Một số hoạt động bảo mật

Để kiểm tra lại các mã cho lỗ hổng bảo mật CSRF, người dùng có thể lựa chọn tìm hiểu về OWASP. Hoặc để ngăn chặn các lỗ hổng CSRF hãy sử dụng Csrf Prevention Cheat Sheet để tìm hiểu các phương pháp bảo vệ hiệu quả.

Một số phần mềm hỗ trợ CSRF tích hợp như Joomla, Spring, Struts, Ruby on Rails và .NET cũng được sử dụng để nâng cao hệ thống bảo mật. Đối với các ứng dụng Java có thể sử dụng OWASP CSRFGuard. Hoặc với các ứng dụng PHP nên lựa chọn dịch vụ CSRF Protection Project và các dự án được triển khai dựa trên Apache Server.

CSRF hoạt động như thế nào?

CSRF hoạt động bằng cách gửi các yêu cầu độc hại đến cho người dùng nạn nhân nhằm đánh cắp các thông tin cá nhân, quyền truy cập và dữ liệu nhạy cảm. Hầu hết các trang web không thể xác định các yêu cầu là giả mạo hay thực khi có người dùng đang được xác thực.

CSRF tấn công trực tiếp vào các trạng thái trên máy chủ như thay đổi địa chỉ IP hoặc mật khẩu của nạn nhân. Đầu tiên, kẻ tấn công sẽ yêu cầu nạn nhân đăng nhập vào tài khoản mà chúng đang kiểm soát để bổ sung các thông tin như thẻ tín dụng, tài khoản ngân hàng hay địa chỉ nhà. Sau đó, chúng sẽ tiến hành lấy các dữ liệu cá nhân vừa thu thập được để đăng nhập tài khoản trên ứng dụng web.

Lỗ hổng lưu trữ CSRF là các cuộc tấn công có sẵn trên các trang web bảo mật kém được thực hiện bằng thẻ IMG/IFRAME trong môi trường HTML. Bởi vì CSRF được lưu trữ trên trang web nên nó có thể đem đến nhiều mối nguy hại như các cuộc tấn công sẽ được kích hoạt và mở rộng bất cứ lúc nào.

CSRF còn được gọi bằng một số tên khác như XSRF, Sea Surf, Session Riding, Cross-Site Reference Forgery và Hostile Linking. Microsoft coi CSRF là một cuộc tấn công nhấp chuột có thể đe dọa đến nhiều tài liệu quan trọng.

Các biện pháp ngăn chặn CSRF

Để ngăn chặn các cuộc tấn công CSRF xảy ra và phát triển hãy lưu ý một số mẹo sau đây:

Sử dụng một Cookie bí mật

Hầu hết mọi Cookie công khai đều được gửi theo yêu cầu nên tất cả các mã thông báo xác thực sẽ được gửi đến người dùng cuối thực hoặc giả mạo. Các mã định danh phiên hay số nhận dạng của Cookie không thể tự xác minh mục đích gửi yêu cầu của người dùng.

Chỉ chấp nhận các yêu cầu POST

Một số ứng dụng được triển khai với mục đích chỉ chấp nhận các yêu cầu POST để thực hiện các nghiệp vụ khoa học. Tuy nhiên, hacker có thể tạo ra CSRF được thực hiện trên các ứng dụng POST đó.

Giao dịch nhiều bước

Phương pháp giao dịch với nhiều quy trình không phải là một kế hoạch hoàn hảo trong việc ngăn chặn CSRF. Bởi chỉ cần các hacker có thể dự đoán ra các bước đó thì cuộc tấn công CSRF vẫn có thể được thực hiện.

Viết lại URL

Viết lại URL là một kỹ thuật ngăn chặn CSRF khá hiệu quả vì kẻ tấn công không thể dự đoán được các ID phiên khác nhau. Tuy nhiên, các ID phiên này này được hiển thị trong URL nên đây cũng không phải là một lựa chọn khả thi.

HTTPS

HTTPS không có bất kỳ tính năng nào có thể chống lại CSRF nhưng nó giống như một điều kiện hoàn hảo cho các biện pháp ngăn chặn hiệu quả.

Ví dụ về CSRF

Ví dụ về cách CSRF tấn công tài khoản ngân hàng của người dùng như sau:

CSRF đánh lừa người dùng tải và gửi các thông tin quan trọng đến ứng dụng web. Chẳng hạn như A muốn chuyển 100 đô la cho B bằng ứng dụng web là Bank.com. Kẻ tấn công C sẽ lợi dụng ứng dụng web này để đánh cắp số tiền đó của A. Cụ thể như sau:

  • Tạo một URL hoặc tập lệnh khai thác.
  • C đánh lừa A tiến hành thực thi với Social Engineering.

GET scenario

Đối với ứng dụng triển khai dựa trên GET scenario để chuyển các tham số và thực thi các hành động. Chẳng hạn như để chuyển tiền cần thực hiện yêu cầu như sau:

GET http://bank.com/transfer.do?acct=BOB;amount=100 HTTP/1.1

Đầu tiên, C tạo một URL khai thác để chuyển 100 đô la từ tài khoản của A sang tài khoản của mình, tiếp theo lấy lệnh URL ban đầu để đổi tên A là C và tăng số tiền chuyển:
http://bank.com/transfer.do?acct=MARIA;amount=100000

CSRF đã đánh lừa A tải một URL giả mạo để đăng nhập vào ứng dụng ngân hàng bằng cách:

  • Gửi email không có nội dung HTML cụ thể.
  • Tạo một URL hoặc tập lệnh khai thác trên trang web khả thi.

URL khai thác giả mạo một liên kết thông thường và đánh lừa người dùng nhấp vào nó. Cụ thể đường liên kết sẽ có dạng như sau:

<a href="http://bank.com/transfer.do?acct=MARIA;amount=100000">View my Pictures!</a>

Hoặc với một 0x0 image giả mạo như:
<img src="http://bank.com/transfer.do?acct=MARIA;amount=100000" width="0" height="0" border="0">

Trong đó, thẻ image này cũng được đính kèm trong email và A sẽ không thể phát hiện ra các điểm đáng ngờ.

 POST scenario

Giả sử một ngân hàng sử dụng POST có yêu cầu dễ bị tấn công được hiển thị như sau:

POST http://bank.com/transfer.do HTTP/1.1
acct=BOB;amount=100

Yêu cầu này không thể được gửi bằng thẻ A hoặc IMG tiêu chuẩn mà được gửi mà thẻ FORM như sau:
<form action="http://bank.com/transfer.do" method="POST">
 <input type="hidden" name="acct" value="MARIA"/>
 <input type="hidden" name="amount" value="100000"/>
 <input type="submit" value="View my pictures"/>
</form>

FORM này được gửi cho người dùng và yêu cầu họ nhấp vào nút gửi. Đôi khi thao tác này sẽ được thực thi tự động bằng JavaScript:
<body onload="document.forms[0].submit()">
<form...

Các phương thức HTTP khác

Hầu hết các API của ứng dụng web hiện đại đều sử dụng phương thức HTTP khác như PUT hay DELETE. Giả sử với một ngân hàng dễ bị tấn công sẽ sử dụng PUT để lấy JSON làm đối số:

PUT http://bank.com/transfer.do HTTP/1.1
{ "acct":"BOB", "amount":100 }

Các yêu cầu này thực thi dựa trên JavaScript được nhúng vào một trang khai thác như sau:
<script>
 function put() {
    var x = new XMLHttpRequest();
    x.open("PUT","http://bank.com/transfer.do",true);
    x.setRequestHeader("Content-Type", "application/json");
    x.send(JSON.stringify({"acct":"BOB", "amount":100})); 
 }
</script>

<body onload="put()">

Bởi vì các yêu cầu này không được thực thi bằng các trình duyệt web hiện đại có những hạn chế về chính sách cùng nguồn gốc. Nên chúng được thực thi khi một trang web gốc kích hoạt công khai các yêu cầu có liên quan đến kẻ tấn công thông qua CORS. Ngoài ra, còn có một số cuộc tấn công khác như Cross-site Scripting (XSS) và Cross Site History Manipulation (XSHM).

Một số kiểm soát liên quan

Một số kiểm soát hỗ trợ ngăn chặn CSRF như sau:

  • Bổ sung per-request nonce cho mỗi yêu cầu vào URL và tất cả các FORM ngoài tiêu chuẩn hay còn được gọi là FORM KEY. Các Framework như Drupal.org 4.7.4+ đã tích hợp loại bảo vệ này với built-in tương thích với mọi hình thức viết mã.
  • Thêm hàm Hash như ID phiên, tên Hash và các máy chủ ẩn danh vào tất cả các FORM.
  • Thêm số nhận dạng phiên vào ViewState với MAC hoạt động trên .NET.
  • Kiểm tra các tiêu đề liên kết giới thiệu trong yêu cầu HTTP của ứng dụng khách để ngăn chặn các cuộc tấn công CSRF.
  • Sử dụng XSS để bỏ qua các bước kiểm tra dựa trên liên kết giới thiệu và mã thông báo.
  • Người dùng hãy bảo vệ tài khoản của mình khỏi các trang web bằng cách đăng xuất khỏi chúng trước khi truy cập vào trang web khác.

Tham khảo một số kỹ thuật ngăn chặn CSRF

Một số kỹ thuật hỗ trợ ngăn chặn CSRF như sau:

  • OWASP giúp ngăn chặn các yêu cầu giả mạo từ trang web của CSRF.
  • CSRF/XSRF FAQ giống như kho thông tin hay danh sách có khả năng cập nhật và phát hiện các thông tin mới.
  • Testing CSRF, CSRF Vulnerability là các công cụ hỗ trợ ngăn chặn CSRF.
  • Client Side Protection against Session Riding bao gồm các kỹ thuật tiềm năng được sử dụng để chống lại CSRF.
  • OWASP CSRFGuard giúp cung cấp phạm vi bảo vệ mở rộng ngăn chặn CSRF trong các ứng dụng.
  • Bộ bảo vệ OWASP CSRF được triển khai dưới dạng thư viện PHP giúp ngăn chặn và hạn chế CSRF trong ứng dụng web.
  • Most-Neglected Fact About được sử dụng để giải thích về CSRF.
  • Pinata-CSRF-Tool cho phép triển khai các trang Proof of Concept CSRF và hỗ trợ đánh giá lỗ hổng ứng dụng.

Tổng kết về CSRF

Như vậy, bài viết trên đây chúng tôi đã tổng hợp chi tiết về CSRF đến bạn đọc. Đây là một loại tấn công nguy hiểm nhắm vào các dữ liệu thông qua ứng dụng web. Hy vọng qua bài viết này bạn đã nắm được một số mẹo và kỹ thuật để ngăn chặn các cuộc tấn công nguy hiểm này.

Nếu bạn có thắc mắc về CSRF hoặc muốn tìm hiểu thêm về những loại tấn công nguy hiểm khác, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.


  • cross site request forgery attack
  • csrf attack
  • csrf là gì

Đăng ký dịch vụ Cloud Server tại BKHOST

BKHOST đang có chương trình khuyến mãi cực shock dành cho khách hàng đăng ký dịch vụ Cloud Server:

  • Giảm giá lên đến 30%.
  • Tặng thêm 1GB Ram.

Đăng ký ngay:

thuê cloud server

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger
Góp ý cho chúng tôi