- Đã xác nhận có vấn đề khi cài đặt Privacy & Security trên macOS không phản ánh trạng thái quyền truy cập thực tế
- Dù quyền truy cập thư mục Documents đã bị chặn, ứng dụng Insent vẫn có thể đọc tệp
- Khi người dùng trực tiếp chọn thư mục, hệ thống TCC coi đó là truy cập có chủ đích nên gỡ bỏ hạn chế
- Trên màn hình cài đặt vẫn hiển thị là đã chặn, nhưng thực tế ràng buộc sandbox đã được gỡ và quyền truy cập vẫn tiếp tục được cho phép
- Để chặn hoàn toàn quyền truy cập, cần dùng lệnh Terminal và khởi động lại, điều này có thể dẫn đến nguy cơ người dùng mất quyền kiểm soát
Vấn đề về độ tin cậy của cài đặt Privacy & Security trên macOS
- Đã xác nhận có trường hợp cài đặt Privacy & Security trên macOS không phản ánh chính xác trạng thái quyền truy cập thực tế
- Dùng một ứng dụng đơn giản tên Insent, có thể thấy hiện tượng vẫn truy cập được thư mục Documents dù trong phần cài đặt quyền đã bị chặn
- Vấn đề này vẫn có thể được tái hiện giống hệt trên macOS 13.5 trở lên
-
Cách ứng dụng Insent hoạt động
- Nút Open by consent mở và hiển thị một tệp văn bản bất kỳ trong thư mục Documents sau khi có sự đồng ý của người dùng
- Nút Open from folder cho phép người dùng tự chọn thư mục, sau đó mở và hiển thị các tệp bên trong
- Trong trường hợp thứ hai, ý định (intent) của người dùng được xem là cho phép truy cập, nên hệ thống TCC (Transparency, Consent, and Control) cho phép truy cập mà không cần thêm bước đồng ý nào
-
Quy trình thử nghiệm và kết quả
- Sau khi cho phép truy cập Documents, xác nhận Insent đọc tệp bình thường
- Sau đó tắt quyền truy cập Documents của Insent trong cài đặt Privacy & Security thì truy cập bị chặn
- Tuy nhiên, nếu chọn Documents bằng Open from folder thì có thể truy cập trở lại, và sau đó Open by consent cũng hoạt động không bị giới hạn
- Trên màn hình cài đặt vẫn tiếp tục hiển thị là quyền truy cập bị chặn, nhưng thực tế Insent vẫn tiếp tục truy cập được thư mục Documents
- Muốn chặn hoàn toàn quyền truy cập thì phải chạy lệnh
tccutil reset All co.eclecticlight.Insent và khởi động lại máy Mac
-
Phân tích cơ chế hoạt động bên trong
- Insent là ứng dụng được công chứng thông thường (notarized), không dùng sandbox hay quyền đặc biệt
- Khi System Integrity Protection (SIP) đang bật, một số thao tác sẽ được xử lý dưới dạng sandbox
sandboxd chặn các yêu cầu truy cập tệp và gửi yêu cầu phê duyệt tới TCC; nếu người dùng đồng ý thì truy cập được cho phép
- Sau khi quyền truy cập bị vô hiệu hóa, TCC sẽ từ chối truy cập, nhưng nếu người dùng chọn thư mục qua bảng Open/Save thì sandboxd không còn chặn yêu cầu nữa
- Vì vậy TCC không còn kiểm soát được truy cập, và có thể truy cập thư mục trong trạng thái ràng buộc sandbox đã được gỡ bỏ
-
Nguyên nhân của vấn đề
- Khi phát sinh truy cập dựa trên ý định của người dùng, ràng buộc sandbox đối với thư mục đó sẽ bị gỡ bỏ
- Thay đổi này không được phản ánh trong UI cài đặt Privacy & Security, nên nhìn thì có vẻ đang bị chặn nhưng thực tế trạng thái vẫn là được phép truy cập
- Các thư mục được bảo vệ khác (ví dụ: Desktop, Downloads) hoạt động bình thường, và vấn đề này xảy ra độc lập theo từng thư mục
-
Kết luận
-
Không thể tin cậy hiển thị hạn chế truy cập trong mục Files & Folders là trạng thái áp dụng thực tế
- Ngay cả khi ứng dụng không xuất hiện trong danh sách hoặc trông như đã bị chặn, vẫn có trường hợp nó thực sự truy cập được các thư mục được bảo vệ
- Một khi quyền truy cập đã được cấp, không thể gỡ bỏ nếu không dùng lệnh Terminal và khởi động lại, làm tăng nguy cơ người dùng mất quyền kiểm soát truy cập
-
Thảo luận thêm (tóm tắt bình luận)
- Sau thử nghiệm, thư mục Documents được cho là đã có thêm thuộc tính mở rộng
com.apple.macl, đóng vai trò cho phép Insent truy cập
- Lệnh
tccutil reset xóa mục macl trong cơ sở dữ liệu, nhưng xattr (thuộc tính mở rộng) vẫn còn nên quyền truy cập có thể tiếp tục được duy trì
- Khi SIP đang bật, rất khó xóa thuộc tính này; chỉ có thể xóa trong chế độ khôi phục bằng lệnh
xattr -d com.apple.macl path/to/Documents
- Vì vậy người dùng rơi vào tình huống khó kiểm tra hoặc kiểm soát trạng thái truy cập thực tế của ứng dụng
1 bình luận
Ý kiến trên Hacker News
Theo tôi thì đây có vẻ là một vấn đề khá đơn giản. Nếu cấp cho ứng dụng quyền truy cập một thư mục thì đương nhiên phải dự đoán là nó cũng có thể truy cập các tệp bên trong thư mục đó
Sau khi đọc bài, tôi đã gỡ toàn bộ quyền thư mục và thử nghiệm, và Insent vẫn đọc được Documents dù UI hiển thị “None”. Có vẻ đây là một thất bại về tính minh bạch
Đây đúng là sự trớ trêu của một hệ điều hành lấy GUI làm trung tâm. Muốn chặn hoàn toàn quyền truy cập thư mục Documents thì phải vào terminal và chạy
tccutil reset All co.eclecticlight.Insentrồi khởi động lại
Tiêu đề nên được đổi thành kiểu như “ứng dụng macOS vẫn giữ quyền truy cập thư mục ngay cả khi người dùng đã gỡ quyền” thì sẽ chính xác hơn
Hệ thống sandbox của Mac làm tôi nhớ đến Windows UAC. Nó là kiểu thiết kế chỉ khiến người dùng thêm mệt mỏi.
Tôi nghĩ cách dùng container có chọn lọc của *nix tốt hơn nhiều.
Việc các tiến trình nền chạy từ Terminal vẫn giữ nguyên quyền ngay cả khi tiến trình cha đã chết là điều đặc biệt kỳ lạ. Toàn bộ hệ thống quyền cho cảm giác chỉ mang tính hình thức
Ngoài
tccutil reset, cũng có thể đặt lại bằng cách bật rồi tắt quyền trong phần thiết lập bảo mậtUI chỉ hiển thị sai trạng thái do lỗi, còn quyền thực tế vẫn hoạt động bình thường.
Màu của checkbox cũng thay đổi tùy theo có focus hay không nên càng gây rối. Phiên bản Sequoia vẫn còn như vậy.
Cũng khá thú vị khi các game cài trên ổ ngoài yêu cầu quyền truy cập “removable volumes” và xuất hiện dày đặc trong danh sách
Khó phân biệt đây là bug, lỗ hổng bảo mật hay chỉ là một sai sót đơn thuần. Tôi đang cân nhắc có nên chạy lệnh reset cho mọi ứng dụng không
Ngay trên macOS mới nhất cũng có sự rối rắm trong UI bảo mật tương tự.
Trong mục “Full Disk Access”, một số ứng dụng hiển thị màu xám, nhưng không thể phân biệt đó là trạng thái bật hay tắt.
Không thể biết đó là bug hay là ứng dụng thực sự đang có quyền
Ngay cả khi tắt Full Disk Access, chỉ một số thư mục nhạy cảm được bảo vệ, còn các thư mục thông thường (Desktop, Documents, v.v.) vẫn có thể truy cập (tài liệu Apple)
Nguyên nhân của vấn đề là do thuộc tính mở rộng com.apple.macl được đặt trên thư mục Documents. Không thể xóa nó do SIP
Tôi tự hỏi liệu trên iOS có hiện tượng tương tự không