Tính năng “Rootless” trong El Capitan thực ra là cái gì đó?

Mình vừa biết về tính năng Rootless trong El Capitan, và theo mình biết thì cái này như kiểu “Không có root user “, “Không gì có thể chỉnh sửa /system” với cả “Tận thế sắp đến vì chúng ta k root được nữa”.

Ở cấp độ kỹ thuật thì tính năng Rootless của El Capitan là gì? Nó thực sự có ý nghĩa gì đối với trải nghiệm của người dùng và của nhà phát triển? Vậysudo -s có còn làm việc không, và nếu có, trải nghiệm việc dùng shell như  root sẽ thay đổi thế nào?

Bình luận
Chấp nhận

Đầu tiên,mình muốn nói cái tên “rootless” là một sự nhầm lẫn to tổ chảng, bởi vì vẫn có tài khoản root, và bạn vẫn có thể truy cập vào nó (tên chính thức phải là “System Integrity Protection” – bảo vệ tình trạng toàn vẹn của hệ thống thì chính xác hơn). Chức năng thực sự của nó là giới hạn quyền năng của tài khoản root, để kể cả bạn có root được thì bạn cũng không có toàn quyền điều khiển hệ thống. Về cơ bản, ý tưởng rằng các phần mềm độc hại malware có thể có quyền truy cập root một cách dễ dàng (ví dụ, bằng cách hiển thị một hộp thoại xác nhận đến người dùng, cái sẽ khiến người dùng theo phản xạ mà điền luôn mật khẩu quản trị). SIP thêm vào một lớp bảo vệ khác, khiến cho malware không thể thâm nhập vào dù có quyền root đi chăng nữa. Tất nhiên, điểm hạn chế của cái này đó là nó cũng được áp dụng cho những hoạt động bạn thực hiện có chủ đích. Nhưng những hạn chế nó đặt ra trên root không tệ đến vậy, chúng không ngăn cản phần lớn các tùy chỉnh thông thường của hệ thống:

 

Đây là những hạn chế, kể cả là từ root:

 

    • Bạn không thể tùy chỉnh bất cứ thứ gì ở /System, /bin, /sbin, hay /usr (ngoại trừ   ); hay bất cứ ứng dụng và trình tiện ích nào đã được thiết lập sẵn. Chỉ Installer và bản cập nhật phần mềm mới có thể chỉnh những vùng này, và thậm chí chúng chỉ làm tế khi cài đặt các gói đã được Apple xác thực. Nhưng bởi vì các tùy chỉnh phong cách OS X thông thường ở /Library (hoặc ~/Library, hay /Applications) , và tùy chỉnh phong cách unix (ví dụ như Homebrew) ở  /usr/local (hoặc thỉnh thoảng có thể ở  /etc hay /opt), cho nên cái này cũng không phải vấn đề gì to tát. Nó cũng ngăn chặn các bản ghi cấp độ khối đến ổ đĩa khởi động, vì vậy bạn không thể tránh nó theo cách đó.
      Danh sách đầy đủ của các thư mục biij hạn chế (và những ngoại lệ như /usr/local và một số thứ khác) ở /System/Library/Sandbox/rootless.conf. Tất nhiên, tập tin này chính nó cũng là vùng hạn chế.
      Khi bạn nâng cấp lên el Capitan, nó dịch chuyển bất cứ tập tin “không được phép” nào từ khu vực hạn chế sang /Library/SystemMigration/History/Migration-(some UUID)/QuarantineRoot/.

 

    • Bạn không thể đính kèm vào các tiến trình hệ thống (ví dụ như những cái đang chạy từ những vị trí hệ thống kia) cho những thứ như là gỡ lỗi (hoặc thay đổi những gì các thư viện động tải về, hoặc một số thứ khác nữa). Nói lại lần nữa, không phải vấn đề gì to tát, các nàh phát triển vẫn có thể gỡ lỗi trên các chương trình riêng của họ.
      Cái này sẽ chặm một số thứ đáng kể như việc nhập mã vào các ứng dụng đã được cài sẵn của Apple (đáng chú ý là Finder). Nó cũng có nghĩa là các công cụ được dựa trên dtrace cho việc kiểm soát hệ thống (ví dụ như opensnoop) sẽ không thể theo dõi và báo cáo về nhiều quá trình của hệ thống.

 

    • Bạn không thể tải những phần mềm được phép tương tác trực tiếp với kernel (kexts) trừ khi chúng đã được xác nhận chắc chắn (ví dụ như xác nhận bởi Apple hoặc một nhà phát triển đã được Apple phê duyệt). Lưu ý rằng điều này thay thế các hệ thống cũ để áp đặt kext xác nhận (và những cách cũ của việc bỏ qua nó). Nhưng kể từ phiên bản v10.10.4 Apple đã có cách để kích hoạt hỗ trợ sắp đặt cho ổ SSD của bên thứ ba, lý do số một để sử dụng các kext chưa được xác nhận đã không còn.

 

 

Nếu bạn không muốn những hạn chế này – dù là bởi vì bạn muốn chỉnh sửa hệ thống trên mức tính năng này cho phép, hay bởi vì bạn đang phát triển và gỡ lỗi thứ gì đó như các kext mà không thể làm được do những hạn chế này, bạn có thể tắt SIP. Hiện tại việc này yêu cầu phải khởi động lại vào chế độ khôi phục và chạy lệnh csrutil disable (và bạn có thể kích hoạt nó lại bằng cách tương tự với csrutil enable).

 

Nhưng nhớ căn nhắc thật kỹ trước khi vô hiệu hóa SIP, thậm chí chỉ là tạm thời: Bạn có thực sự cần vô hiệu hóa nó hay không, hay đấy chỉ là cách tốt hơn (tuân theo SIP) để làm cái bạn muốn? Bạn có thực sự cần phải chỉnh sửa một thứ gì đó trong /System/Library hay /bin hay thứ gì đó tương tự không, hay nó có thể đến một vị trí tốt hơn như là  /Library hoặc /usr/local/bin? SIP có thể “cảm nhận được” việc sự kìm hãm nếu bạn không quen với việc dùng nó thường xuyên, và sẽ có một số lý do chính đáng để vô hiệu hóa nó, nhưng dù gì đi nữa với nhiều việc SIP thực thi thì đấy thực sự là cách tốt nhất.

Đã trả lời vào September 7, 2016
Bình luận

Với mình, điều này có nghĩa là DTrace không còn hiệu quả nữa.

DTrace tương tự như PTrace/Strace trên Linux, trong đó nó cho phép ta hiểu được một quá trình đang “nói gì” với kernel. Mỗi lần một quá trình muốn mở một tập tin, ghi vào một tập tin hoặc mở một cổng…, nó cần yêu cầu kernel. Trong Linux, quy trình theo dõi này xảy ra bên ngoài kernel trong “vùng của người dùng”, và vì vậy việc cho phép khá dễ dàng. Một người dùng có thể theo dõi các ứng dụng riêng của họ (để sửa lỗi, tìm chỗ rò rỉ bộ nhớ, vv), nhưng sẽ cần được root để giám sát quá trình của người dùng khác.

Tuy nhiên, DTrace trê OS X hoạt động ở cấp độ hạt nhân hệ điều hành, khiến nó hoạt động mượt mà và mạnh mẽ hơn, tuy nhiên nó yêu cầu quyền truy cập root để bổ sung sự thăm dò ào hạt nhân và từ đó có thể làm bất cứ thứ gì. Một người dùng không thể theo dấu các quy trình riêng của họ mà không được root, nhưng khi root họ không thể chỉ xem các quy trình riêng của họ, mà trong thực tế phải theo dõi tất cả các quá trình trên hệ thống cùng một lúc. Ví dụ, bạn có thể xem một tập tin (với iosnoop) và xem quá trình nào đọc nó. Đây là một trong những tính năng hữu ích nhất từng có để phát hiện phần mềm độc hại. Vì hạt nhân cũng làm việc với hệ thống IO, việc tương tự là đúng ở đây. Wireshark phát hiện hoạt động hệ thống bất thường, DTrace thông báo với bạn quá trình gửi dữ liệu, thậm chí nếu nó được nhúng vào hệ thống như là chính hạt nhân.

Tuy vậy, kể từ phiên bản El Capitan, Apple đã ngăn chặn chặt chẽ không cho DTrace hoạt động – tức là, nó đã được nhắm đến như một mục tiêu cụ thể và được xác định rõ là mục bị SIP hạn chế. Tại sao họ lại làm vậy? Trước đây Apple chỉnh sửa hạt nhân của họ và DTrace để cho phép một số quy trình quyết định không tham gia vào việc bị theo dõi qua DTrace (việc này khiến rất nhiều nhà nghiên cứu an ninh tại thời điểm đó thất vọng khi một số quy trình bây giờ đã bị cậm kể cả root – bao gồm các phần mềm độc hại). Lý do của họ cho việc này là để bảo vệ DRM trong các ứng dụng như iTunes bởi vì về mặt lý thuyết ai đó có thể DTrace và lấy dữ liệu phi-DRM’d ra khỏi bộ nhớ của các tiến trình.

Tuy nhiên, có một giải pháp quan trọng cho phép các nhà nghiên cứu tiếp tục làm công việc của họ,  đó là chỉnh sửa hạt nhân để bỏ qua cảnh cáo quyết định không tham gia này, vì vậy DTrace vẫn có thể được sử dụng trên các quá trình này. Cách này thực sự tuyệt vời bởi vì các chương trình cố để tránh bị phát hiện nơi nào được thắp sáng lên với cảnh báo không DTrace này. Bất cứ điều gì Apple hay những kẻ xấu muốn ẩn đi sẽ được hiện ra rõ ràng…

Nhưng cách này bây giờ không thực hiện được nữa, vậy nó ảnh hưởng đến bạn như thế nào? Nó sẽ ảnh hưởng đến bạn theo cả hai cách gián tiếp và trực tiếp. Theo cách trực tiếp, nó sẽ giới hạn khả năng kiểm soát hệ thống của bạn. Một lượng lớn  các công cụ quản lý và theo dõi hệ thống cấp thấp (cái mà công cụ cấp cao xây dựng dựa trên nó) sẽ không còn làm việc. Tuy nhiên các tác động gián tiếp sẽ lớn hơn nhiều – các chuyên gia bảo mật dựa trên việc truy cập sâu vào hệ thống để phát hiện các mối nguy hiểm lớn nhất. Chúng ta không thể chỉ thực hiện việc đó nữa. Việc phân tích phần mềm độc hại mà không biết nó đang chạy trong một trình gỡ lỗi hay trên hê thống tài nguyên thông tin giả dạng honeypot là rất quan trọng. Việc vô hiệu hóa SIP thông báo với tất cả các phần mềm, từ cả kẻ xấu và Apple, rằng hệ thống này đang được theo dõi. Không còn việc quan sát các trình quan sát. Nếu SIP là về bảo mật, họ đáng ra đã hướng dẫn cho người dùng về root – nhưng thay vào đó họ lại gỡ bỏ nó. Cuối cùng thì điều này có nghĩa rằng Apple đã thay thế  hàng rào an ninh cốt lõi nhất của mật khẩu gốc thành cơ chế bảo vệ SIP cốt lõi nhất . Hoặc nếu bạn biết chút chút về social engineering – phương pháp đột nhập vào hệ thống, một mật khẩu gốc với một lần khởi động lại…

Ngoài ra còn có cái này:

enter image description here

Đã trả lời vào September 7, 2016
Bình luận

Đáp án của bạn

Với việc gửi đáp án, bạn đã đồng ý với Chính sách dữ liệuCác điều khoản của chúng tôi.