OWASP Top 10: 2021 – A01:2021 – Broken Access Control

8 min read

Giới thiệu

Lỗ hổng Broken Access Control (BAC) là một trong những lỗ hổng bảo mật phổ biến nhất trong các ứng dụng web. Lỗ hổng này xảy ra khi một ứng dụng web không thể kiểm soát quyền truy cập của người dùng vào các tài nguyên. Điều này có thể dẫn đến việc người dùng không được phép truy cập vào các tài nguyên mà họ nên có quyền truy cập, hoặc người dùng có quyền truy cập vào các tài nguyên mà họ không nên có quyền truy cập.

Các loại lỗ hổng BAC

Có nhiều loại lỗ hổng BAC khác nhau. Một số loại phổ biến bao gồm:

  • Cài đặt không đúng quyền: Đây là loại lỗ hổng phổ biến nhất. Nó xảy ra khi các nhà phát triển ứng dụng không thiết lập quyền truy cập chính xác cho người dùng. Ví dụ, một người dùng có thể được cấp quyền truy cập vào tất cả các tài nguyên, ngay cả khi họ chỉ cần truy cập vào một số tài nguyên cụ thể.
  • Xâm phạm dữ liệu: Đây là loại lỗ hổng xảy ra khi dữ liệu nhạy cảm, chẳng hạn như mật khẩu hoặc thông tin tài chính, bị rò rỉ. Ví dụ, một kẻ tấn công có thể truy cập vào cơ sở dữ liệu của ứng dụng và lấy thông tin đăng nhập của người dùng.
  • Tấn công giả mạo: Đây là loại lỗ hổng xảy ra khi một kẻ tấn công giả mạo danh tính của người dùng có quyền truy cập. Ví dụ, một kẻ tấn công có thể sử dụng mã độc để chiếm đoạt cookie của người dùng và sử dụng nó để truy cập vào tài khoản của người dùng.

Các tác động của lỗ hổng BAC

Lỗ hổng BAC có thể gây ra nhiều tác động tiêu cực, bao gồm:

  • Tiết lộ thông tin nhạy cảm: Lỗ hổng BAC có thể khiến thông tin nhạy cảm, chẳng hạn như mật khẩu hoặc thông tin tài chính, bị rò rỉ. Điều này có thể dẫn đến gian lận, trộm cắp danh tính hoặc các vấn đề bảo mật khác.
  • Thay đổi dữ liệu: Lỗ hổng BAC có thể cho phép kẻ tấn công thay đổi dữ liệu trong hệ thống. Điều này có thể dẫn đến việc xóa dữ liệu, sửa đổi dữ liệu hoặc thêm dữ liệu sai.
  • Tấn công từ chối dịch vụ: Lỗ hổng BAC có thể được sử dụng để thực hiện các cuộc tấn công từ chối dịch vụ (DoS). Điều này có thể khiến hệ thống trở nên quá tải và không thể truy cập được.

Cách phòng ngừa lỗ hổng BAC

Có một số cách để phòng ngừa lỗ hổng BAC, bao gồm:

  • Tuân thủ các thực tiễn bảo mật tốt nhất: Các nhà phát triển ứng dụng nên tuân thủ các thực tiễn bảo mật tốt nhất, chẳng hạn như sử dụng kiểm soát truy cập dựa trên vai trò (RBAC).
  • Sử dụng công cụ kiểm tra bảo mật: Các nhà phát triển ứng dụng nên sử dụng công cụ kiểm tra bảo mật để phát hiện các lỗ hổng BAC.
  • Thường xuyên kiểm tra bảo mật: Các nhà phát triển ứng dụng nên thường xuyên kiểm tra bảo mật để đảm bảo rằng ứng dụng của họ không có lỗ hổng.

Ví dụ về lỗ hổng BAC

Dưới đây là một số ví dụ về lỗ hổng BAC:

  • Ví dụ 1: Một ứng dụng web cho phép người dùng tạo tài khoản. Khi người dùng tạo tài khoản, họ được yêu cầu cung cấp tên người dùng và mật khẩu. Ứng dụng web lưu trữ tên người dùng và mật khẩu trong cơ sở dữ liệu dưới dạng văn bản thuần túy. Điều này có nghĩa là bất kỳ ai có quyền truy cập vào cơ sở dữ liệu đều có thể đọc tên người dùng và mật khẩu của tất cả người dùng.
  • Ví dụ 2: Một ứng dụng web cho phép người dùng xem thông tin tài khoản của họ. Khi người dùng xem thông tin tài khoản của họ, họ được yêu cầu cung cấp tên người dùng và mật khẩu. Ứng dụng web xác thực tên người dùng và mật khẩu và sau đó hiển thị thông tin tài khoản của người dùng. Tuy nhiên, ứng dụng web không kiểm tra xem người dùng có quyền truy cập vào thông tin tài khoản hay không. Điều này có nghĩa là bất kỳ ai có thể cung cấp tên người dùng và mật khẩu hợp lệ đều có thể xem thông tin tài khoản của bất kỳ người dùng nào.
  • Ví dụ 3: Một ứng dụng web cho phép người dùng đặt hàng hàng hóa. Khi người dùng đặt hàng, họ được yêu cầu cung cấp thông tin thanh toán, chẳng hạn như số thẻ tín dụng. Ứng dụng web xác minh thông tin thanh toán và sau đó xử lý đơn đặt hàng. Tuy nhiên, ứng dụng web không mã hóa thông tin thanh toán trước khi lưu trữ nó trong cơ sở dữ liệu. Điều này có nghĩa là bất kỳ ai có quyền truy cập vào cơ sở dữ liệu đều có thể đọc thông tin thanh toán của tất cả người dùng.

Các biện pháp phòng ngừa lỗ hổng BAC

Để phòng ngừa lỗ hổng BAC, các nhà phát triển ứng dụng cần thực hiện các biện pháp sau:

  • Sử dụng kiểm soát truy cập dựa trên vai trò (RBAC): RBAC cho phép các nhà phát triển ứng dụng chỉ định quyền truy cập cho người dùng dựa trên vai trò của họ trong ứng dụng. Điều này giúp đảm bảo rằng chỉ những người dùng có quyền truy cập mới có thể truy cập vào các tài nguyên.
  • Mã hóa dữ liệu: Dữ liệu nhạy cảm, chẳng hạn như mật khẩu hoặc thông tin tài chính, nên được mã hóa trước khi lưu trữ trong cơ sở dữ liệu. Điều này sẽ giúp bảo vệ dữ liệu khỏi bị truy cập trái phép.
  • Sử dụng các công cụ kiểm tra bảo mật: Các công cụ kiểm tra bảo mật có thể được sử dụng để phát hiện các lỗ hổng BAC trong ứng dụng.
  • Thường xuyên kiểm tra bảo mật: Các ứng dụng web nên được kiểm tra bảo mật thường xuyên để đảm bảo rằng chúng không có lỗ hổng.

Một số ví dụ cụ thể về cách phòng ngừa lỗ hổng BAC

  • Ví dụ 1: Để ngăn chặn việc lưu trữ mật khẩu trong cơ sở dữ liệu dưới dạng văn bản thuần túy, các nhà phát triển ứng dụng có thể sử dụng thuật toán băm để mã hóa mật khẩu. Điều này sẽ khiến mật khẩu không thể đọc được nếu cơ sở dữ liệu bị xâm phạm.
  • Ví dụ 2: Để ngăn chặn việc bất kỳ ai có thể truy cập vào thông tin tài khoản của người dùng, các nhà phát triển ứng dụng có thể sử dụng phương pháp xác thực hai yếu tố (2FA). 2FA yêu cầu người dùng cung cấp hai yếu tố xác thực để đăng nhập, chẳng hạn như tên người dùng, mật khẩu và mã xác thực được gửi đến điện thoại của người dùng.
  • Ví dụ 3: Để ngăn chặn việc thông tin thanh toán bị đọc bởi những kẻ tấn công, các nhà phát triển ứng dụng có thể sử dụng mã hóa SSL/TLS để mã hóa dữ liệu khi nó được truyền qua Internet.

Cách phát hiện lỗ hổng BAC

Có một số cách để phát hiện lỗ hổng BAC trong ứng dụng web, bao gồm:

  • Kiểm tra mã nguồn ứng dụng: Kiểm tra mã nguồn ứng dụng để tìm các lỗi hoặc thiếu sót có thể dẫn đến lỗ hổng BAC.
  • Sử dụng các công cụ kiểm tra bảo mật: Các công cụ kiểm tra bảo mật có thể được sử dụng để phát hiện các lỗ hổng BAC trong ứng dụng.
  • Thử nghiệm tấn công: Thử nghiệm tấn công là một cách hiệu quả để phát hiện các lỗ hổng BAC. Các nhà phát triển ứng dụng có thể thuê các chuyên gia an ninh mạng để thực hiện các cuộc tấn công thử nghiệm vào ứng dụng của họ.

Kết luận

Lỗ hổng BAC là một lỗ hổng bảo mật nghiêm trọng có thể gây ra nhiều tác động tiêu cực. Các nhà phát triển ứng dụng nên thực hiện các biện pháp phòng ngừa cần thiết để bảo vệ ứng dụng của họ khỏi lỗ hổng này.

Reference

https://ant.ncc.asia/owasp-top-10-2021-tong-quan/

https://owasp.org/Top10/A01_2021-Broken_Access_Control/

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

One Reply to “OWASP Top 10: 2021 – A01:2021 – Broken Access…”

Leave a Reply

Your email address will not be published. Required fields are marked *