Mua trước trả sau

              Hiểu về cơ chế bảo mật rootless của OS X El Capitan

              Minh Triệu
              30 ngày trước câu trả lời • 15 lượt xem

              Trong OS X El Capitan, Apple đã đưa ra một tính năng bảo mật mới rất quan trọng mang tên System Integrity Protection (còn có tên là rootless). Nó đảm bảo rằng các ứng dụng bên thứ ba sẽ không được phép ghi dữ liệu vào các folder quan trọng của hệ thống, cũng như không được can thiệp vào những phần mềm đang chạy. Cũng nhờ vào cơ chế mới mà các driver giả mã, phần mềm mã độc sẽ ít có đất sống hơn trong El Capitan. Trong bài này mời các bạn tìm hiểu kĩ hơn về SIP, tác dụng của nó và cách vô hiệu hóa khi cần thiết.

              System Integrity Protection - khi root cũng chẳng có quyền

              Trong những hệ thống Linux và UNIX, bao gồm cả OS X, root là người dùng có quyền cao nhất, quyền tối thượng đối với hệ thống và họ có thể làm tất cả những gì họ muốn. Chính vì vậy mà root còn được gọi là super user. Những lệnh Linux khi bắt đầu bằng chữ sudo hay đăng nhập bằng lệnh su sẽ cho phép bạn truy cập bằng quyền root và bạn tha hồ quậy phá.

              Tuy nhiên, với OS X El Capitan thì ngay cả khi bạn đã có quyền root trong tay, bạn cũng không được quyền làm một số việc nhất định, ví dụ như ghi / xóa vào các file hoặc folder cốt lõi của hệ thống, hay can thiệp vào các tiến trình (process) quan trọng. Tính năng này được Apple gọi chính thức bằng cái tên "System Integrity Protection" (SIP), đôi khi còn được nhắc đến bằng chữ "rootless". Apple đưa ra SIP nhằm đảm bảo rằng không một ứng dụng bên thứ ba nào hoặc các phần mềm mã độc được quyền can thiệp vào OS X.

              Rootless cũng có mặt trên iOS 9 chứ không chỉ là OS X El Capitan. Ban đầu, có vẻ như là rootless không thể được phá bỏ nhưng rồi thì các nhóm hacker hiện đã làm được điều đó để jailbreak máy iOS 9. Còn với người dùng thông thường không jailbreak thì việc đưa rootless lên iOS 9 chỉ có tác dụng bảo vệ dự phòng, không gây ra khó khăn hay thay đổi gì.

              Vì sao Apple lại nghĩ đến việc hạn chế quyền của root? Tại hội nghị WWDC diễn ra hồi tháng 6/2015, kĩ sư Pierre-Olivier Martel của Apple đã mô tả rằng quyền không giới hạn của người dùng root / super user chính là một trong những điểm yếu còn lại của hệ thống. "Bất kì phần mềm nào có password của root đều có quyền kiểm soát toàn bộ máy tính của bạn".

              Ông nói thêm rằng bởi vì hầu hết người dùng OS X đều chỉ tạo 1 tài khoản trên máy nên mặc định tài khoản này cũng có đầy đủ quyền của root. Nếu sơ ý, người dùng có thể cấp quyền root cho một phần mềm mã độc khi được nó yêu cầu mà không hề biết đến sự mất an toàn đang đe dọa chính mình. Ngoài ra, người dùng thường không đặt password hoặc password quá đơn giản nên sẽ dẫn đến việc bị dò ra mật khẩu một cách dễ dàng và chiếm lấy quyền root trong tích tắc. Chính vì thế mà SIP mới xuất hiện.

              Thực chất thì việc giới hạn quyền root cũng đã có từ trước chứ không phải quá mới mẻ. Từ OS X Leopard 10.5 về trước, Apple cũng áp dụng cơ chế bảo mật tương tự và nó là tính năng của BSD, hệ điều hành UNIX mà OS X có xài một phần.

              Hạn chế ghi vào các thư mục hệ thống

              Vậy thì những thư mục nào bị hạn chế? Chúng gồm có:

              • /System
              • /System
              • /bin
              • /usr (nhưng không áp dụng cho “/usr/local”)
              • /sbin

              Để thử SIP với các folder trên rất đơn giản, bạn chỉ cần mở cửa sổ Terminal và thử lệnh sudo mkdir TestTinhte để tạo folder mới trong thư mục /System. Bạn sẽ nhận được thông báo rằng bạn không được phép làm chuyện này, ngay cả khi đã có chữ sudo (tức chạy dưới quyền root).

              Nếu bạn có những file, folder "lạ" đã cài vào những thư mục nói trên từ trước khi update lên OS X El Capitan thì sao? Khi đó, hệ điều hành sẽ di chuyển những file này vào thư mục /Library/SystemMigration để bạn khôi phục lại khi cần thiết, còn 6 thư mục nói trên thì sẽ y nguyên như cách mà Apple cấu trúc chúng, không ai được xâm phạm.
               


               

              Không còn được phép chèn dữ liệu vào tiến trình đang chạy

              EasySIMBL là một công cụ rất mạnh cho phép bạn tùy biến gần như mọi thứ trên máy Mac: từ điển, dock, bản đồ... cho đến thanh status và giao diện phần mềm. Thậm chí phần mềm này còn có thể bổ sung các chức năng mới vào cho OS X nữa. Ví dụ, một extension của EasySIMBL cho phép ứng dụng Twitter chính chủ trên OS X hiển thị hình ảnh nhúng từ Instagram, vốn không có sẵn. Và để làm điều đó thì EasySIMBL đã tận dụng cơ chế đẩy dữ liệu vào một tiến trình đang hoạt động và can thiệp, chỉnh sửa nó.

              Nghe qua thì những phần mềm như EasySIMBL rất là hay, nhưng nó cũng khiến hệ thống gặp nguy hiểm. Lỡ một phần mềm mã độc nào đó chèn code độc hại vào một phần mềm đang hoạt động để đánh cắp hay giả mạo thông tin thì sao? Lỡ hacker dùng các đoạn code chèn vào kiểu này để đánh sập hệ thống của bạn thì sao?

              Thế là Apple quyết định cắt hẳn khả năng chèn code này luôn bằng SIP. Như vậy thì hãng có thể đảm bảo rằng người dùng OS X El Capitan sẽ an toàn hơn.

              Không còn kernel extension "lậu"


              "Kernel" là phần cốt lõi của mọi hệ điều, và OS X cũng một kernel được xây dựng dựa trên nền tảng UNIX. Còn "kernel extension" (kexts) là những phần mềm được phép tương tác trực tiếp với kernel. Có thể bạn đã gặp chữ này trong lúc cài đặt các driver bên thứ ba cho máy tính của mình lúc mới sắm một thiết bị ngoại vi mới nào đó.

               

              Kernel đứng giữa lớp ứng dụng và phần cứng, nó cho phép app và các thành phần của hệ điều hành truy cập đến CPU, RAM và các thiết bị khác, kể cả thiết bị ngoại vi gắn vào máy tính

              Tạm gác vụ kernel qua một bên, bây giờ chúng ta nói về một kĩ thuật gọi là code signing, tạm dịch là kí xác nhận cho mã lập trình, và rộng hơn là cho phần mềm. Code signing được Apple sử dụng trong iOS và OS X để giúp lập trình viên xác nhận rằng đây chính là phần mềm do họ tạo ra. Khi một app đã được "signed", hệ thống có thể phát hiện ra bất kì thay đổi nào với app đó, chẳng hạn như lúc bạn đang download app nhưng bị lỗi giữa chừng, hoặc khi có đoạn mã độc bị ai đó nhúng trái phép vào app. Một số tính năng bảo mật khác của OS X cũng dựa vào code signing để hoạt động. Ngoài Apple ra thì nhiều hãng khác cũng áp dụng cơ chế tương tự, bao gồm Microsoft, Google, Nokia,...

              Quy trình code signing: mã / phần mềm sẽ được đem đi "băm" (hash) thành các mảnh nhỏ, sau đó được mã hóa bằng cách dùng một khóa riêng của nhà phát triển phần mềm. Dữ liệu gốc, kết hợp với dữ liệu đã mã hóa và chứng nhận của nhà phát triển sẽ được gom lại thành code đã được "signed"

              Giờ thì lại trở về kernel extension. Những extension chính chủ do các hãng phần cứng, phần mềm phát hành ra sẽ được họ "signed" trước khi phát hành cho bạn. Ví dụ đơn giản như thế này: Logitech làm chuột cho Mac, họ phát hành driver, driver này chính là một kernel extension và nó đã được Logitech "kí xác nhận". Khi bạn cài driver này vô OS X El Capitan, hệ thống nhận thấy nó đã được signed và cho thực thi một cách bình thường. Nhưng nếu có hacker nào đó dụ bạn tải về driver đã bị chỉnh sửa để chèn mã độc đánh cắp thông tin, El Capitan sẽ biết ngay và chặn không cho driver chạy nên bạn vẫn an toàn.


               

               


              Cách tắt SIP / rootless trong OS X El Capitan

              Bảo mật cao là thế, nhưng SIP cũng gây ra một số khó khăn nhất định với người dùng, ví dụ như các phần mềm cũ dùng để can thiệp vào ổ đĩa, công cụ backup sẽ không còn chạy được. Đơn giản như các app đọc ghi phân vùng NTFS cũ sẽ không còn hoạt động khi lên OS X El Capitan.

              SIP hiện có thể được tắt đi, tuy nhiên bạn không thể thực hiện nó khi máy đang chạy bình thường. Thay vào đó, bạn cần tắt máy Mac, truy cập vào chế độ Recovery rồi dùng lệnh csrutil để vô hiệu hóa SIP. Chi tiết cách làm như sau:

              1. Chạy máy tính lên ở chế độ Recovery:

              1.1 Đầu tiên bạn shutdown máy, sau đó ngay lúc nhấn nút nguồn thì nhấn giữ phím "Option" trên bàn phím cho đến khi thấy ổ đĩa Recovery xuất hiện trên màn hình.

               

               

              1.2 Vào menu Utilities > chọn Terminal. Sau đó, nhập dòng lệnh như bên dưới vào để vô hiệu hóa tính năng rootless.

              Code:
              csrutil disable

               

              1.3 Khởi động lại máy vào lại OS X

              Bằng cách chỉ cho vô hiệu hóa SIP khi chạy chế độ Recovery, Apple có thể đảm bảo rằng gần như chỉ có chủ máy mới có quyền tắt SIP, hacker từ xa hay malware sẽ không làm được.

              Một số thay đổi khác về bảo mật trên OS X El Capitan:

              • Nhiều cơ chế bảo mật hơn cho việc bảo vệ Keychain (hệ thống quản lý password trong OS X)
              • Cải thiện kĩ thuật mã hóa
              • Thay đổi firmware EFI để chống lại các thay đổi khi boot máy
              Tham khảo: MakeUseOf, Apple, Apple Developer, Wikipedia, Pangu 8