+3

Access control vulnerability - Lỗ hổng kiểm soát truy cập (phần 1)

I. Mở đầu

1. Tóm tắt bài viết

Trong bài viết này tôi muốn giới thiếu tới các bạn về Lỗ hổng kiểm soát truy cập - Access control vulnerability. Chúng ta sẽ cùng nhau tìm hiểu về các khái niệm truy cập, kiểm soát truy cập. Phân tích và thực hành những lỗ hổng xung quanh vấn đề truy cập người dùng. Cuối cùng, chúng ta cũng sẽ bàn luận về một số thông tin, biện pháp phòng chống, bảo vệ người dùng cũng như hệ thống đối với lỗ hổng kiểm soát truy cập.

2. Giới thiệu khái niệm truy cập, kiểm soát truy cập.

Đối với từng người dùng trong một ứng dụng / hệ thống luôn giữ một vai trò nhất định. Ví dụ: administrator, normal user, guest, ... Đối với mỗi vai trò sẽ có quyền truy cập các tính năng của hệ thống ở mức độ khác nhau. Xét ví dụ trong chuỗi bài viết về Authentication vulnerability - Lỗ hổng xác thực: bạn Hoa là quản lí tại quán trà sữa X, trong quán có một máy tính chuyên dụng cho việc xử lí hóa đơn đặt hàng, giao hàng, ... Ngọc là nhân viên bán hàng tại quán trà sữa X do Hoa làm quản lí. Khi đó, hệ thống máy tính cần phân quyền một cách rõ ràng: Hoa sẽ có vai trò administrator, còn Ngọc có vai trò staff. Như vậy, Ngọc sẽ chỉ có quyền hạn làm việc với các đơn hàng của khách hàng yêu cầu, chứ không có quyền xem doanh thu từng ngày của quán - tính năng chỉ được truy cập và sử dụng bởi administrator. Nếu bằng cách nào đó Ngọc truy cập trái phép các tính năng không nằm trong quyền hạn của mình, chúng ta có thể nói rằng Ngọc đang thục hiện một cuộc tấn công broken access control - phá vỡ kiểm soát truy cập.

(Nguồn: https://portswigger.net/web-security/access-control)

3. Một số mô hình kiểm soát truy cập an toàn.

Trong quá trình triển khai một hệ thống kiểm soát truy cập, quản trị viên cần có cái nhìn tổng thể về hệ thống, vấn đề thực tếvà tuân theo các mô hình kiểm soát truy cập. Mỗi mô hình đều có ưu điểm, nhược điểm riêng, tùy vào từng trường hợp cụ thể sẽ cần sử dụng mô hình kiểm soát truy cập phù hợp để chúng phát huy được tác dụng tốt nhất.

3.1. Discretionary access control (DAC)

Discretionary access control (DAC) là một loại mô hình kiểm soát truy cập bảo mật cho phép cấp hoặc hạn chế quyền truy cập đối tượng thông qua chính sách truy cập được xác định bởi nhóm chủ sở hữu hoặc chủ thể của đối tượng. Nói cách khác, chủ sở hữu xác định các đặc quyền truy cập đối tượng.

Mô hình DAC tương đối linh hoạt trong phân quyền, chủ sở hữu của đối tượng trong kiểm soát truy cập có thể chuyển giao tất cả các quyền mà họ sử dụng, do đó nó có tính linh hoạt tốt và nhiều ứng dụng nên có thể được sử dụng trong nhiều hệ thống. Tuy nhiên, DAC cũng tồn tại một số nhược điểm sau:

  • Vì có thể ủy quyền nên việc quản lý tài nguyên sẽ bị phân tán, đồng thời tăng rủi ro cho hệ thống.
  • Nó không thể đảm bảo an ninh tổng thể.
  • Quyền kiểm soát truy cập dễ bị chuyển giao, đồng thời, khi số lượng chủ thể và đối tượng lớn, nó sẽ mang lại chi phí lớn cho hệ thống, dẫn đến hiệu quả thấp và không thể thích ứng tốt với quy mô lớn, môi trường mạng quy mô.

3.2. Mandatory access control (MAC)

Mandatory Access Control (MAC) đã được đề xuất vào những năm 70 của thế kỷ XVIII và lần đầu tiên được sử dụng và xác minh trên mô hình Multics. So với điều khiển truy cập tùy quyền được giới thiệu ở trên, các quy tắc và chính sách của MAC chặt chẽ hơn.

Ý tưởng cơ bản của thiết kế mô hình MAC là: trong hệ thống kiểm soát truy cập, chủ thể và đối tượng được gán các thuộc tính bảo mật nhất định, sau đó hệ thống đánh giá và so sánh mối quan hệ thuộc tính giữa hai chủ thể để xác định xem có được phép truy cập hay không. Có thể nói, MAC là một đại diện cho mô hình đa cấp bậc.

MAC mang tính bắt buộc và không thể thay đổi một chiều. Mô hình MAC quy định rằng các đối tượng cấp cao có thể lấy thông tin từ các đối tượng cấp thấp, nhưng điều ngược lại là không thể. Cụ thể, nếu cấp bậc của chủ thể A cao hơn đối tượng B thì chủ thể A có thể đọc thông tin và tài nguyên trong đối tượng B; nếu cấp bậc của chủ thể A thấp hơn đối tượng B thì chủ thể A chỉ có thể thực hiện một số thao tác ghi thông tin và tài nguyên trong đối tượng B; nếu cấp bậc của chủ thể A và đối tượng B bằng nhau thì không thể thực hiện thao tác đọc và ghi giữa chủ thể A và đối tượng B.

Đáng chú ý, không giống như DAC, trong mô hình MAC người dùng và chủ sở hữu tài nguyên không có khả năng ủy quyền hoặc sửa đổi quyền truy cập cho tài nguyên của họ. Như vậy MAC mang tính đảm bảo an toàn cho thông tin hệ thống.

3.3. Role-based access control (RBAC)

Role-based access control (RBAC) được đề xuất vào những năm 90 của thế kỷ trước. Mô hình RBAC được coi là một công nghệ thông tin kiểm soát truy cập có hiệu quả và được đánh giá tốt hơn các mô hình khác.

Trong RBAC, chủ thể và đối tượng không được kết nối trực tiếp, chúng được chỉ định một hoặc nhiều vai trò. Đầu tiên, các quyền của hoạt động truy cập được khớp với một số vai trò, sau đó các vai trò cụ thể này được gán cho các chủ thể tương ứng. Theo cách này chủ thể có quyền truy cập vào đối tượng.

RBAC cung cấp khả năng quản lý nâng cao so với các mô hình kiểm soát truy cập khác và nếu được thiết kế phù hợp, đủ chi tiết để cung cấp kiểm soát truy cập, nó có thể sử dụng để quản lý trong các ứng dụng phức tạp. Một đối tượng có thể mang nhiều vai trò và một vai trò có thể mang nhiều quyền hạn.

Ví dụ:

  • Người dùng Nguyễn Văn A có quyền admin, quyền user.
  • Người dùng Nguyễn Văn B có quyền user.
  • Admin có quyền đọc, thêm, sửa, xóa bài viết.
  • User chỉ có quyền đọc bài viết.

RBAC hiệu quả nhất khi có đủ vai trò để gọi các điều khiển truy cập đúng cách nhưng sẽ không cần quá nhiều vai trò khiến cho mô hình trở nên phức tạp và khó quản lý.

II. Các dạng lỗ hổng kiểm soát truy cập thường gặp

1. Lỗ hổng kiểm soát truy cập xuất hiện khi nào?

Khi lập trình viên không thực hiện giới hạn chính xác các hạn mức quyền của người dùng, hoặc khi hệ thống xác thực quyền người dùng dựa trên một số tham số có thể thay đổi bởi người dùng thì có thể xuất hiện lỗ hổng kiểm soát truy cập.

2. Một số dạng kiểm soát truy cập

Trước khi đi vào phần phân tích và khai thác các lỗ hổng kiểm soát truy cập, chúng ta cần hiểu một số dạng của kiểm soát truy cập. Tương ứng với mỗi dạng kiểm soát truy cập chúng ta cũng sẽ phân tích những lỗ hổng xung quanh từng dạng đó. Chúng thường được chia làm các dạng sau:

2.1. Vertical access controls - Kiểm soát truy cập theo chiều dọc

Kiểm soát truy cập theo chiều dọc là cơ chế hạn chế quyền truy cập vào chức năng nhạy cảm không có sẵn.

Với các điều khiển truy cập dọc, những người dùng khác nhau có quyền truy cập vào các chức năng, ứng dụng khác nhau. Ví dụ: quản trị viên có thể sửa đổi hoặc xóa bất kỳ tài khoản của người dùng nào, trong khi người dùng bình thường không có quyền truy cập và sử dụng các chức năng này. Kiểm soát truy cập theo chiều dọc có thể là cách triển khai chi tiết hơn của các mô hình bảo mật được thiết kế để thực thi các chính sách kinh doanh như tách biệt các nhiệm vụ và ít đặc quyền nhất.

2.2. Horizontal access controls - Kiểm soát truy cập theo chiều ngang

Kiểm soát truy cập theo chiều ngang là cơ chế hạn chế quyền truy cập vào tài nguyên đối với những người dùng được phép truy cập cụ thể vào các tài nguyên đó.

Với điều khiển truy cập ngang, những người dùng khác nhau có quyền truy cập vào một tập hợp con các tài nguyên cùng loại. Ví dụ: một ứng dụng ngân hàng sẽ cho phép người dùng xem các giao dịch và thực hiện thanh toán từ tài khoản của chính họ, chứ không phải tài khoản của bất kỳ người dùng nào khác.

2.3. Context-dependent access controls - Kiểm soát truy cập phụ thuộc vào ngữ cảnh

Kiểm soát truy cập phụ thuộc vào ngữ cảnh hạn chế quyền truy cập vào chức năng và tài nguyên dựa trên trạng thái của ứng dụng hoặc tương tác của người dùng với nó.

Kiểm soát truy cập phụ thuộc vào ngữ cảnh ngăn người dùng thực hiện các hành động không đúng thứ tự. Ví dụ: một trang web bán lẻ sẽ ngăn người dùng sửa đổi nội dung trong giỏ hàng của họ sau khi họ đã thanh toán.

Các tài liệu tham khảo


©️ Tác giả: Lê Ngọc Hoa từ Viblo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí