Tấn công website bằng kỹ thuật CSRF và cách phòng chống

Tấn công website bằng kỹ thuật CSRF và cách phòng chống

CSRF (Cross-site Request Forgery) là một dạng tấn công giả mạo được sử dụng để tấn công đến những website có độ bảo mật kém. Mặc dù chỉ có thể nhắm đến những website có độ bảo mật kém, xong cũng có rất nhiều website đã từng là nạn nhân của hình thức tấn công này. Trong bài viết này chúng ta sẽ tìm hiểu kỹ hơn về cách thức tấn công này, đồng thời mình sẽ chia sẻ một số cách để phòng chóng CSRF.

Cơ bản về tấn công CSRF

Nói dễ hiểu thì đây là một kiểu tấn công lợi dụng quyền truy cập của người dùng. Một trường hợp có thể lấy ra ví dụ như sau: Hacker sau một hồi lòng vòng tìm hiểu về website của bạn, sau đó phát hiện ra một cách thức request bằng http để xóa user người dùng. Hacker tạo ra một email với đường dẫn xóa một người dùng nào đó gửi đến bạn và bạn lúc này đang truy cập vào trang admin của mình. Lập tức hành động xóa người dùng có thể được thực thi ngay mà không cần xác thực trở lại. Với cách thức này hacker có thể làm nhiều việc khác nhau nữa.

Mô hình tấn công CSRF

Mô hình tấn công CSRF

Trước đây nhiều hình thức đánh cắp tiền cũng dễ dàng thực hiện bằng phương thức tấn công CSRF, tuy nhiên các ngân hàng cũng đã có những cách thức bảo mật chống lại hình thức này.

Hình trên mô tả một quá trình người dùng bị lừa chuyển khoảng một số tiền cho hacker mà người dùng không biết.

  • Số 1: Website của ngân hàng lưu cookie của người dùng truy cập (lỗ hổng 1)
  • Số 2: Người dùng đăng nhập website ngân hàng và cho phép lưu trữ tài khoảng trên cookie (lỗ hổng 2)
  • Số 3: Người dùng truy cập website giả mạo, chứa các liên kết chuyển khoản (lỗ hổng 3)
  • Số 4: Việc chuyển tiền tự động được thực hiện nhờ vào cookie đã được lưu.
  • Số 5: Hacker nhận tiền từ tài khoản bị hack.

Trong sơ đồ trên, có thể dễ dàng nhận ra rằng, đa số người dùng vẫn là do hành động người dùng tiếp tay để hacker có thể hoàn thành ý đồ. Tuy nhiên người dùng là những người không biết, và chính website của ngân hàng phải có độ bảo mật nhất định cho người dùng, nhưng trong một số trường hợp, người dùng mới chính là mấu chốt bảo mật quan trọng.

Các cách phòng chống tấn công CSRF

Sử dụng CSRF Token

Token sẽ được tạo ngẫu nhiên dựa theo các session, các token thường được mã hóa với hàm băm MD5 hoặc các cách thức khác, do đó hacker không thể làm giả được. Mỗi session thường được hạn chế một thời gian “sống” nhất định do đó nó hạn chế được việc giả cả token.

Các hành động đến từ chính người dùng

Như bên trên mình có nói, đa số hacker thực hiện thành công việc tấn công này đều do một phần lỗi từ người dùng như: kích và những liên kết lung tung, truy cập một số trang web lừa đảo,… tuy nhiên sẽ có rất nhiều hành động không thể kiểm soát được.

Sử dụng các xác thực bên ngoài

Trong một số hành động nhất định, các website thường kết hợp với các xác thực bên ngoài để xác thực người dùng. Ví dụ như OTP SMS, đây là một trong những kiểu xác thực phổ biến và an toàn nhất được nhiều bên sử dụng, trong đó có các ngân hàng,…

Mặc dù là một trong những cách tấn công nguy hiểm, nhưng ngày nay cùng với sự phát triển công nghệ, kiến thức sử dụng internet của người dùng nâng cao nên hình thức này cũng không mang lại hiệu quả nhiều. Tuy nhiên nếu là một coder, đặc biệt lập trình web php thuần bạn cần phải để ý đến lỗ hổng này.