Please enable JavaScript.
Coggle requires JavaScript to display documents.
CHƯƠNG 4 Kiến trúc an toàn Nguyên tắc - Coggle Diagram
CHƯƠNG 4 Kiến trúc an toàn
Nguyên tắc
Cô lập và quyền hạng tối thiểu
Nguyên tắc thiết kế an toàn
Phòng thủ theo chiều sâu
Sử dụng nhiều hơn một cơ chế bảo mật
Bảo vệ liên kết yếu nhất
Thất bại một cách an toàn
Giữ nó đơn giản
Phân chia
Sự cách ly
Nguyên tắc quyền hạng tối thiểu
Nguyên tắc quyền hạng tối thiểu
Nguyên tắc quyền hạng tối thiểu
Một mô-đun hệ thống chỉ nên có các quyền hạng tối thiểu cần thiết cho các mục đích dự kiến của nó
Ví dụ: Đại lý Thư
yêu cầu
Nhận và gửi email qua mạng bên ngoài
Đặt email đến vào tệp hộp thư đến của người dùng cục bộ
Qmail
Thiết kế ngăn
Gửi thư
Unix truyền thống
Thiết kế nguyên khối
như là 1 lời gọi hệ thống cho nó một số quyền hang tối thiểu
subject : tài nguyên quyền hạng người dùng
quyền hạng là gì
Khả năng truy cập hoặc sửa đổi tài nguyên
Giả sử phân chia và cô lập
Tách hệ thống thành các ngăn riêng biệt
Hạn chế tương tác giữa các ngăn
Thiết kế nguyên khối
Thiết kế thành phần :
Khái niệm cơ bản về hệ điều hành (trước các ví dụ)
Cách ly giữa các tiến trình
Mỗi tiến trình có một UID
Hai tiến trình có cùng UID có cùng quyền
Một tiến trình có thể truy cập tệp, ổ cắm mạng,….
Quyền được cấp theo UID
Liên quan đến thuật ngữ trước đây
Ngăn được xác định bởi UID
Các quyền hạng được xác định bởi các hành động được phép trên tài nguyên hệ thống
Thiết kế Qmail
Cách ly dựa trên cách ly hệ điều hành
Các mô-đun riêng biệt chạy dưới dạng “người dùng” riêng biệt
Mỗi người dùng chỉ có quyền truy cập vào các tài nguyên cụ thể
Đặc quyền nhất
Đặc quyền tối thiểu cho mỗi UID
Chỉ một chương trình “setuid”
setuid cho phép một chương trình chạy với tư cách là những người dùng khác nhau
Chỉ một chương trình "gốc"
chương trình gốc có tất cả các đặc quyền
Cấu trúc của qmail
!
Cách ly bởi UID Unix
Đặc quyền nhất
Quy trình cách ly Android
Hộp cát ứng dụng Android
Cách ly: Mỗi ứng dụng chạy với UID riêng trong máy ảo riêng
Cung cấp khả năng bảo vệ bộ nhớ
Giao tiếp bị giới hạn khi sử dụng ổ cắm miền Unix
Chỉ ping, hợp tử (sinh ra một tiến trình khác) chạy dưới dạng root
Tương tác: màn hình tham chiếu kiểm tra quyền đối với giao tiếp giữa các thành phần
quyền hạng tối thiểu : Ứng dụng thông báo quyền
Người dùng cấp quyền truy cập tại thời điểm cài đặt
Cách ly: các ứng dụng khác nhau trong các UID khác nhau
Các khái niệm về kiểm soát truy cập
Kiểm soát truy cập liên quan đến màn hình tham chiếu
Giả định
Hệ thống biết người dùng là ai
Xác thực thông qua tên và mật khẩu, thông tin đăng nhập khác
Yêu cầu truy cập chuyển qua người gác cổng (màn hình tham chiếu)
Hệ thống không được phép bỏ qua màn hình
Ma trận kiểm soát truy cập [Lampson]
Các khái niệm triển khai
Danh sách kiểm soát truy cập (ACL)
Lưu trữ cột ma trận với tài nguyên
Năng lực
Người dùng giữ một "vé" cho mỗi tài nguyên
Hai biến thể
lưu trữ hàng ma trận với người dùng, dưới sự kiểm soát của hệ điều hành
vé không thể mua được trong không gian người dùng
ACL so với khả năng
Danh sách điều khiển truy cập
Liên kết danh sách với từng đối tượng
Kiểm tra người dùng / nhóm với danh sách
Phụ thuộc vào xác thực: cần biết người dùng
Năng lực
Khả năng là vé không thể thay đổi
Chuỗi bit ngẫu nhiên (hoặc được quản lý bởi hệ điều hành)
Có thể được chuyển từ tiến trình này sang tiến trình khác
Phiếu kiểm tra giám sát tham chiếu
Không cần biết danh tính của người dùng / tiến trình
ACL so với khả năng
Phái đoàn
Cap: tiến trình có thể vượt qua khả năng tại thời gian chạy
ACL: Cố gắng yêu cầu chủ sở hữu thêm quyền vào danh sách?
Phổ biến hơn: cho phép tién trình khác hoạt động dưới quyền người dùng hiện tại
Thu hồi
ACL: Xóa người dùng hoặc nhóm khỏi danh sách
Cap: Cố gắng lấy lại khả năng từ tiến trình?
Có thể có trong một số hệ thống nếu ghi sổ kế toán thích hợp
Hệ điều hành biết dữ liệu nào là khả năng
Nếu khả năng được sử dụng cho nhiều tài nguyên, phải thu hồi tất cả hoặc không có…
Hướng dẫn: khả năng trỏ đến con trỏ tới tài nguyên
Nếu C --> P --> R thì thu hồi khả năng C bằng cách đặt P = 0
Tạo tiến trình: ACL vs Khả năng
Vai trò (còn gọi là Nhóm)
Vai trò = tập hợp người dùng
Quản trị viên, Người dùng thành thạo, Người dùng, Khách
Chỉ định quyền cho các vai trò; mỗi người dùng được quyền
Phân cấp vai trò
Thứ tự từng phần của các vai trò
Mỗi vai trò được quyền của các vai trò bên dưới
Chỉ liệt kê các quyền mới
Kiểm soát truy cập dựa trên vai trò
Tóm tắt kiểm soát truy cập
Kiểm soát truy cập liên quan đến màn hình tham chiếu
Kiểm tra quyền: thông tin người dùng, hành động --> có / không
Quan trọng: không có cách nào để vượt qua kiểm tra này
Ma trận kiểm soát truy cập
Hai cách triển khai: danh sách kiểm soát truy cập so với khả năng
Ưu nhược điểm của từng loại
Kiểm soát truy cập dựa trên vai trò
Sử dụng nhóm làm "thông tin người dùng"; sử dụng phân cấp nhóm
Các hệ điều hành
Unix :check:
Những khái niệm kiểm soát truy cập nào được sử dụng?
Danh sách kiểm soát truy cập bị cắt ngắn
Một hình thức kiểm soát truy cập dựa trên vai trò
Kiểm soát truy cập Unix
tiến trình có id người dùng
Kế thừa từ quá trình tạo
tiến trình có thể thay đổi id
Bộ tùy chọn bị hạn chế
Id "gốc" đặc biệt
Tất cả quyền truy cập được phép
Tệp có danh sách kiểm soát truy cập (ACL)
Cấp quyền cho người dùng
Ba “vai trò”: chủ sở hữu, nhóm, người khác
Danh sách kiểm soát truy cập tệp Unix
Mỗi tệp có chủ sở hữu và nhóm
Quyền do chủ sở hữu đặt
Đọc, viết, thực thi
Chủ sở hữu, nhóm, người khác
Được biểu diễn bằng vectơ của bốn giá trị bát phân
Chỉ chủ sở hữu, người chủ mới có thể thay đổi quyền
quyền hạng này không thể được ủy quyền hoặc chia sẻ
Hoạt động tiến trình và ID
Nguồn gốc
ID = 0 cho siêu người dùng root có thể truy cập bất kỳ tệp nào
Fork và Exec
Kế thừa ba ID, ngoại trừ tệp thực thi có bit setuid
Cuộc gọi hệ thống setuid
seteuid (newid) có thể đặt thành EUID
ID thực hoặc ID đã lưu, bất kể EUID hiện tại là gì
Bất kỳ ID nào, nếu EUID là gốc
Chi tiết thực sự phức tạp hơn
Một số cuộc gọi khác nhau: setuid, seteuid, setreuid
Xử lý id người dùng hiệu quả (EUID)
Mỗi tiến trình có ba id (+ nhiều id khác trong Linux)
ID người dùng thực (RUID) người đang chạy
giống như ID người dùng của cha mẹ (trừ khi thay đổi)
được sử dụng để xác định người dùng nào đã bắt đầu tiến trình
ID người dùng hiệu quả (EUID) người sở hữu chương trình ứng dụng model
từ bit ID người dùng đã đặt trên tệp đang được thực thi hoặc lệnh gọi hệ thống
xác định quyền cho tiến trình
truy cập tệp và ràng buộc cổng
ID người dùng đã lưu (SUID)
Vì vậy, EUID trước đó có thể được khôi phục
ID nhóm thực, ID nhóm hiệu quả, được sử dụng tương tự
Các bit setid trên tệp Unix thực thi
Ba bit setid
Setuid - đặt EUID của tiến trình thành ID của chủ sở hữu tệp
Setgid - đặt EGID của tiến trình thành GID của tệp
sticky
Tắt: nếu người dùng có quyền ghi trên thư mục, có thể đổi tên hoặc xóa tệp, ngay cả khi không phải là chủ sở hữu
Bật: chỉ chủ sở hữu tệp, chủ sở hữu thư mục và người gốc mới có thể đổi tên hoặc xóa tệp trong thư mục
Thí dụ
Tóm tắt kiểm soát truy cập Unix
Những điều tốt
Một số biện pháp bảo vệ khỏi hầu hết người dùng
Đủ linh hoạt để làm cho các hệ thống thực tế trở nên khả thi
Hạn chế chính
ACL chi tiết thô - người dùng, nhóm, khác
Quá hấp dẫn để sử dụng các đặc quyền root
Không có cách nào để đảm nhận một số đặc quyền root mà không có tất cả
Điểm yếu trong cách ly unix, đặc quyền
Daemon đối mặt với mạng
tiến trình gốc với các cổng mạng mở cho tất cả các bên từ xa, ví dụ: sshd, ftpd, sendmail,…
Rootkit
Mở rộng hệ thống thông qua các mô-đun hạt nhân được tải động
Các biến môi trường
Các biến hệ thống như LIBPATH được chia sẻ trạng thái giữa các ứng dụng. Kẻ tấn công có thể thay đổi LIBPATH để tải tệp do kẻ tấn công cung cấp dưới dạng thư viện động
Điểm yếu trong cách ly unix, đặc quyền
Tài nguyên được chia sẻ
Vì bất kỳ tiến trình nào cũng có thể tạo tệp trong thư mục / tmp, nên một tiến trình không đáng tin cậy có thể tạo tệp được sử dụng bởi các tiến trình hệ thống tùy ý
Thời gian kiểm tra đến thời gian sử dụng (TOCTTOU)
Thông thường, một tiến trình gốc sử dụng lệnh gọi hệ thống để xác định xem người dùng khởi tạo có quyền đối với một tệp cụ thể, ví dụ: / tmp / X hay không.
Sau khi quyền truy cập được cấp phép và trước khi mở tệp, người dùng có thể thay đổi tệp / tmp / X thành một liên kết tượng trưng đến tệp đích / etc / shadow.
Kiểm soát truy cập trong Windows
Danh sách kiểm soát truy cập đầy đủ
Chỉ định quyền truy cập cho các nhóm và người dùng
Đọc, sửa đổi, thay đổi chủ sở hữu, xóa
Nói chung, chính xác hơn, linh hoạt hơn Unix
Có thể xác định các quyền mới
Có thể chuyển một số nhưng không phải tất cả các đặc quyền ( xem khả năng)
Một số khái niệm bổ sung
Thuộc tính bảo mật
Mã thông báo
Quy trình có tập hợp các mã thông báo
Tính năng thú vị: mã thông báo mạo danh
Được sử dụng tạm thời để áp dụng một ngữ cảnh bảo mật khác, thường là của một người dùng khác (tương tự như việc sử dụng khả năng / setuid)
Được gọi là quy trình "bối cảnh bảo mật"
quyền hạng , tài khoản và nhóm được liên kết với tiến trình hoặc chuỗi
Được trình bày dưới dạng tập hợp các mã thông báo
Đối tượng có bộ mô tả bảo mật
Chỉ định ai có thể thực hiện các hành động trên đối tượng
Tiêu đề (số sửa đổi, cờ điều khiển,…)
SID của chủ sở hữu đối tượng
SID của nhóm chính của đối tượng
Hai danh sách tùy chọn đính kèm:
Danh sách kiểm soát truy cập tùy ý (DACL) - người dùng, nhóm,…
Danh sách kiểm soát truy cập hệ thống (SACL) - nhật ký hệ thống, ..
Mã thông báo mạo danh (so sánh với setuid)
tiến trình thông qua các thuộc tính bảo mật của một tiến trình khác
Máy khách chuyển mã thông báo mạo danh đến máy chủ
Khách hàng chỉ định mức độ mạo danh
Vô danh
Token không có thông tin về khách hàng
Nhận biết
Nhận SID của ứng dụng khách và đặc quyền của ứng dụng khách, nhưng máy chủ không thể mạo danh khách hàng
mạo danh
Mạo danh khách hàng
Phái đoàn
Cho phép máy chủ đóng giả ứng dụng khách trên các hệ thống cục bộ, từ xa
Điểm yếu trong sự cô lập, đặc quyền
Các vấn đề tương tự với Unix
Ví dụ: Rootkit tận dụng các mô-đun hạt nhân được tải động
Sổ đăng ký Windows
Cơ sở dữ liệu phân cấp toàn cầu để lưu trữ dữ liệu cho tất cả các chương trình
Mục nhập sổ đăng ký có thể được liên kết với bối cảnh bảo mật giới hạn quyền truy cập; phổ biến để có thể viết mục nhập nhạy cảm
Có thể có quyền được bật theo mặc định
Trong lịch sử, nhiều triển khai Windows cũng đi kèm với đầy đủ các quyền và chức năng được kích hoạt
Cách ly trình duyệt và đặc quyền ít nhất
Hãy xem ví dụ về trình duyệt
Trình duyệt là một môi trường thực thi
Có chính sách kiểm soát truy cập tương tự như một hệ điều hành
Trình duyệt chạy dưới sự kiểm soát của một hệ điều hành
Sử dụng ít đặc quyền nhất để giữ an toàn cho mã trình duyệt trước các cuộc tấn công có thể phá vỡ việc thực thi chính sách bảo mật web của trình duyệt
Trình duyệt web: một sự tương tự
Các thành phần của chính sách bảo mật
Mối quan hệ Frame-Frame
canScript (A, B)
Khung A có thể thực thi một tập lệnh điều khiển các phần tử DOM tùy ý / không tầm thường của Khung B không?
canNavigate (A, B)
Khung A có thể thay đổi nguồn gốc của nội dung cho Khung B không?
Mối quan hệ khung-chính
readCookie (A, S), writeCookie (A, S)
Khung A có thể đọc / ghi cookie từ trang web S không
Kiến trúc bảo mật Chromium
Trình duyệt ("hạt nhân")
Đặc quyền đầy đủ (hệ thống tệp, mạng)
Công cụ dựng hình
Có thể có nhiều tiến trình
Hộp cát
Một tiến trình cho mỗi plugin
Các đặc quyền đầy đủ của trình duyệt
Tận dụng cách ly hệ điều hành
Hộp cát dựa trên bốn cơ chế hệ điều hành (ví dụ: Windows)
Đối tượng máy tính để bàn Windows
Đối tượng công việc Windows
Mã thông báo hạn chế
Các cấp độ toàn vẹn của Windows
công cụ kết xuất Cụ thể
điều chỉnh mã thông báo bảo mật bằng cách chuyển đổi SIDS thành DENY_ONLY, thêm SID bị hạn chế và gọi
mã thông báo Điều chỉnh đặc quyền
chạy trong Đối tượng công việc của Windows, hạn chế khả năng tạo tiến trình mới, đọc hoặc ghi khay nhớ tạm, ..
chạy trên một máy tính để bàn riêng biệt, giảm thiểu việc kiểm tra bảo mật lỏng lẻo của một số API Windows
Tóm lược
Nguyên tắc bảo mật
Sự cách ly
Nguyên tắc Đặc quyền Ít nhất
Qmail, ví dụ về Android
Các khái niệm về kiểm soát truy cập
Ma trận, ACL, Khả năng
Cơ chế hệ điều hành
Unix: UID, ACL, Setuid
Windows: SID, Mã thông báo, Trình mô tả bảo mật, Mạo danh
Kiến trúc bảo mật của trình duyệt
Ví dụ về sự cô lập và ít đặc quyền nhất