[CSRF là gì?] Tìm hiểu cách phòng chống tấn công giả mạo

Mục lục

1. Khái niệm CSRF là gì?

Thuật ngữ CSRF, hay có tên gọi đầy đủ Cross Site Request Forgery, là một hình thức tấn công sử dụng kỹ thuật lạm dụng quyền chứng thực của cá nhân người sử dụng đối với một website nhất định. Cơ chế hoạt động của các ứng dụng website là nhận các câu lệnh HTTP từ cá nhân người sử dụng, sau đó tiếp tục thực thi những câu lệnh này.

CSRF là một kỹ thuật, một phương pháp được các Hacker sử dụng nhằm mục đích đánh lừa trình duyệt của người dùng, tiếp đến chúng gửi đi các câu lệnh HTTP để các ứng dụng website thực thi. Các câu lệnh HTTP sẽ được thực thi với quyền chứng thực của cá nhân sử dụng trong trường hợp chưa hết hiệu lực của phiên làm việc từ người dùng.

Nói một cách đơn giản, CSRF là một phương pháp tấn công giả mạo chính thể của chúng. Theo đó, thông qua việc sử dụng cookies, chúng tấn công vào chứng thực request trên các hệ thống website. Tất nhiên, đó là nơi mà bạn không hề hay biết các hacker có thể sử dụng những mẹo để tạo ra request. Chính vì vậy, CSRF là quá trình một hacker lạm dụng niềm tin của một ứng dụng website trên trình duyệt của người sử dụng.

Nói về lịch sử của CSRF, chúng đã xuất hiện từ khá sớm, vào khoảng những năm ở thập niên 90. Mặc dù vậy, các cuộc tấn công giả mạo thường bắt nguồn từ chính địa chỉ IP của nạn nhân, do đó bộ nhớ tạm của các website không nhận biết được những dấu hiệu tấn công của CSRF. CSRF cùng các cuộc tấn công giả mạo bởi nó không được báo cáo một cách đầy đủ và chính xác. Cho đến khoảng năm 2007, CSRF mới được một số tài liệu mô tả khá chi tiết và cụ thể.

Ở Hàn Quốc, người ta đã phát hiện ra có khoảng 18 triệu người dùng của eBay vào năm 2008 bỗng dưng bị các dữ liệu cá nhân của mình. Cũng tại thời điểm này, nhiều khách hàng của ngân hàng tại Mexico phát hiện tài khoản ngân hàng của mình đã bị đánh cắp. Tất nhiên, CSRF đã được các hacker sử dụng trong hai trường hợp điển hình này.

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

CSRF hoạt động theo kịch bản gì? CSRF là việc gửi một request giả mạo đến máy chủ, nhằm gây nên sự nhầm lẫn cấp quyền và tăng tính xác thực của người sử dụng website. Do đó, quyền của người sử dụng sẽ bị ảnh hướng chỉ thông qua một lỗ hổng CSRF. Chẳng hạn như người sử dụng ở đây là quản trị viên website, cuối cùng CSRF sẽ lấy được toàn bộ quyền của quản trị viên.

Khi gửi một câu lệnh HTTP, đồng thời trình duyệt website của người sử dụng sẽ nhận về các tập tin dữ liệu. Các tập tin thường được sử dụng để lưu trữ một phiên làm việc với mục đích xác nhận người sử dụng không cần xác thực lặp lại cho mỗi yêu cầu được gửi lên. Trong trường hợp tập tin lưu trữ phiên làm việc đã xác thực của người sử dụng vẫn còn hiệu lực, và chúng dễ bị tấn công bởi CSRF nếu như ứng dụng không được bảo mật. CSRF có thể được những kẻ tấn công sử dụng để chạy bất cứ câu lệnh nào với ứng dụng website cả khi website không thể phân biệt rõ đâu là câu lệnh giả mạo, đâu là câu lệnh thực.

Để hiểu rõ hơn về cơ chế hoạt động CSRF, có thể hiểu qua ví dụ như sau: Trong các ứng dụng website, thông thường có thiết kế một tính năng cơ bản, đó chính là điều chỉnh hoặc thay đổi password của người dùng. Bằng việc gửi lên hệ thống thông qua phương thức HTTP GET cơ bản. Nội dung gửi lên hệ thống cụ thể là mật khẩu mới và xác nhận lại mật khẩu vừa nhập:

- Một tập tin sẽ được tạo ra và được trình duyệt lưu trữ khi người dùng thành công đăng nhập vào website của bạn. Quá trình lưu trữ này giúp cho những lần sau, người dùng sẽ không cần thực hiện bước đăng nhập nữa. Tập tin được lưu trữ trước đó của bạn trong phiên làm việc vẫn còn hạn dùng, ngay cả khi bạn chưa thoát tài khoản đăng nhập.

- Tại đây, nếu website của bạn bị tấn công bởi CSRF, thì vô tình người dùng đã vào một hệ thống giả mạo của hacker và nhằm mục tiêu trộm tài khoản cá nhân từ ứng dụng website đó. Ngôn ngữ script sẽ được sử dụng trong hệ thống giả mạo bởi hacker để chạy một liên kết nhằm mục đích reset password người dùng trên website của bạn.

Nói chính xác, người dùng đã vô tình truy cập vào hệ thống giả mạo của hacker và cập nhật lại mật khẩu của chính mình trong hệ thống website đang sử dụng. Theo đó, kẻ tấn công nếu biết được thông tin tên người dùng, sẽ thử với mật khẩu đã được thiết lập, và thành công truy cập vào website cũng như tài khoản cá nhân của người dùng một cách bình thường. Đây chính là ví dụ dễ hiểu nhất về CSRF là gì?

3. Hướng dẫn cách phòng chống tấn công CSRF

Các lập trình viên nên hiểu đúng và hiểu chính xác CSRF là gì? Vì trên thực tế, chỉ có hiểu cơ chế hoạt động và những tác động nguy hiểm bởi CSRF, bạn mới có thể tìm được cách phòng chống những cuộc tấn công được sử dụng bởi chúng. Trên cơ sở cơ chế hoạt động của CSRF là lạm dụng trình duyệt vời người dùng để gửi các request HTTP. Về cơ bản, chúng ta sẽ chia làm hai đối tượng để tránh các cuộc tấn công từ CSRF. Một bên là người dùng (user) và bên còn lại là hệ thống (server). Cụ thể sử dụng những phương pháp như sau:

3.1. Về phía người dùng

Trong các cuộc tấn công bởi CSRF, người dùng có lẽ là những đối tượng bị “oan” và thậm chí phải hứng chịu những hệ quả vô cùng nghiêm trọng, chẳng hạn như bị mất cắp tài khoản để sử dụng vào những mục đích xấu. Do đó, để hạn chế tối đa việc trở thành nạn nhân trong những cuộc tấn công giả mạo, tất cả người dùng nên lưu ý thực hiện nghiêm túc những điều sau:

- Thứ nhất, người dùng sau khi truy cập và đăng nhập tài khoản ở các ứng dụng website quan trọng, hãy tiến hành đăng xuất sau khi không sử dụng nữa. Đặc biệt ở những website về quản lý tài khoản ngân hàng, mạng xã hội, email, thanh toán online,.... đây đều là những ứng dụng website mà các kẻ tấn công thường hay nhắm đến.

- Thứ hai, người dùng nên đăng nhập vào một thiết bị riêng và thậm chí, không cho phép một cá nhân nào khác bản thân tiếp xúc với thiết bị đó.

- Thứ ba, với các link dẫn bạn nhận được ở tin nhắn, bình luận mạng xã hội, email,... người dùng không nên nhấp vào. Nếu nhấp vào, hãy lưu ý link dẫn đưa bạn đến đúng trang mà mình mong muốn, thông tin về trang đích nằm ở phía bên trái dưới cùng của trình duyệt.

- Thứ tư, người dùng không nên thực hiện việc lưu trữ password cho các ứng dụng website quan trọng tại trình duyệt của mình. Khi hệ thống hiển thị chức năng “lưu mật khẩu” hoặc “đăng nhập lần sau”, người dùng không cần lựa chọn các phương thức này, vì chúng rất dễ bị tấn công bởi CSRF.

- Thứ năm, người dùng không nên truy cập các website khác khi thực hiện giao dịch hay thực hiện truy cập vào các website quan trọng. Bởi chúng có thể chứa đựng các mã của kẻ tấn công dùng để khai thác các dữ liệu và thông tin từ người dùng.

3.2. Về phía hệ thống

Mặc dù rất nhiều khuyến cáo hay lời khuyên đã được đưa ra. Tuy nhiên cho đến thời điểm hiện tại, việc phòng chống các cuộc tấn công từ CSRF vẫn chưa tìm ra được một công thức giải cụ thể. Bên cạnh những lưu ý từ người dùng, đối với hệ thống các website, vẫn nên sử dụng một vài kỹ thuật để hạn chế các cuộc tấn công giả mạo này.

- Thứ nhất, sử dụng đúng cách POST và GET. Đây là hai phương thức của giao thức HTTP. Theo đó, trong kỹ thuật chống CSRF, trưng trường hợp nếu thao tác là truy vấn dữ liệu, GET lúc này nên được sử dụng. Còn trong trường hợp thao tác tạo ra sự thay đổi về hệ thống, lúc này hãy dùng POST. Lời khuyên này được đưa ra theo khuyến cáo của W3C. Ngoài ra, bạn cũng có thể sử dụng thêm các HTTP hành động, chẳng hạn như DELETE, PUT hay PATCH nếu ứng dụng của bạn theo chuẩn RESTful.

- Thứ hai, sử dụng các thông báo xác nhận và capcha. Thông thường, để xác minh hay nhận biết con người hay robot đang là đối tượng thao tác với hệ thống, người ta sẽ sử dụng captcha. Captcha được thường sử dụng ở những thao tác quan trọng chẳng hạn như “thanh toán”, “chuyển khoản” hay “đăng nhập”,... Bên cạnh đó, nên sử dụng những liên kết để gửi chúng qua email mà người dùng đã đăng ký để họ có thể chủ động xác nhận bằng cách click vào chúng ở những chức năng quan trọng như thay đổi mật khẩu, điều chỉnh thông tin tài khoản,....

- Thứ ba, sử dụng token: Cụ thể ở đây là csrf_token, trong phiên làm việc của hệ thống với người dùng, chúng sẽ được thay đổi liên tục. Câu lệnh HTTP cần được loại bỏ nếu như token được gửi lên và token được sinh ra không trùng khớp.

- Thứ tư, với trang admin nên sử dụng tập tin riêng biệt: Để admin không sử dụng chung tập tin với front end của sản phẩm, bạn nên để chúng ở một subdomain riêng biệt. Chẳng hạn như nên đặt là admin.timviec24h.vn hơn là để theo hình thức timviec24h.vn/admin.

- Cuối cùng, thực hiện kiểm tra IP: Thông thường những hệ thống ứng dụng quan trọng và cần bảo mật cao chỉ cho phép một hoặc vài địa chỉ IP truy cập và những địa chỉ này đã được thiết lập, cài đặt sẵn. Bên cạnh đó, chỉ cho phép quyền truy cập quản trị thông qua hệ thống VPN hoặc địa chỉ IP local.

Bài viết vừa thông tin đến bạn những kiến thức xoay quanh khái niệm CSRF là gì? Việc hiểu đúng kỹ thuật tấn công và hậu quả mà CSRF gây nên sẽ giúp bạn tìm ra những phương án chống lại tác nhân này. Hy vọng thông qua bài viết, những ai quan tâm về CSRF đã hiểu được phần nào về chúng và cách phòng chống chúng!

Đăng ngày 20/11/2020, 36 lượt xem