Làm cách nào để vô hiệu hóa hoặc xóa tài khoản root được tạo như một tác dụng phụ từ lỗi bảo mật High Sierra này?


40

Bài viết này mô tả một lỗi trong đó việc nhập root khi được nhắc mở khóa cho phép bất kỳ người dùng nào mở khóa tùy chọn hệ thống. Nó cảnh báo rằng:

Không cần phải tự làm điều này để xác minh nó. Làm như vậy sẽ tạo ra một tài khoản gốc root mà người khác có thể tận dụng nếu bạn không vô hiệu hóa nó.

Bài viết không mô tả phải làm gì nếu một kỹ sư quá háo hức tái tạo vấn đề và bây giờ cần phải xóa hoặc vô hiệu hóa tài khoản root.

Làm thế nào tài khoản này có thể bị vô hiệu hóa hoặc xóa một cách an toàn?

Trang Apple này mô tả cách vô hiệu hóa tài khoản nhưng điều này không bảo vệ chống lại lỗi vì lỗi chỉ có thể kích hoạt lại tài khoản. Nó sẽ hoạt động để khôi phục hệ thống về trạng thái bình thường với root bị vô hiệu hóa sau khi lỗi bảo mật được sửa.

Cập nhật 2017-11-29 16:43 UTC

Xem Giới thiệu về nội dung bảo mật của Cập nhật bảo mật 2017-001 để cập nhật macOS High Sierra để bảo vệ khỏi bỏ qua xác thực quản trị viên mà không cung cấp mật khẩu của quản trị viên.


Tiêu đề của câu hỏi này là một XY như đã nêu, vì việc xóa hoặc vô hiệu hóa tài khoản là không mong muốn.
Monty Harder

Câu trả lời:


40

Bản vá có sẵn, bấm vào đây, hoặc chỉ cập nhật trên máy

Điều thú vị là không có bản vá nào cho phiên bản beta và dành cho nhà phát triển của OSX theo như tôi biết. Tôi sẽ cập nhật câu trả lời này ngay khi tôi nghe về họ.

Tải về các bản vá ở trên. Để lại phần còn lại của bài viết cho lịch sử :-)

CVE là CVE-2017-13872NIST sẽ cập nhật phân tích trong tương lai gần.

Câu trả lời gốc, có liên quan mà không cần vá

Trước hết, không vô hiệu hóa tài khoản root thông qua GUI, có tài khoản root "bị vô hiệu hóa" là nguyên nhân của vấn đề.

Bạn sẽ kích hoạt người dùng root cung cấp cho nó một mật khẩu. Điều này rất quan trọng , vì lỗ hổng này cũng có sẵn từ xa, thông qua VNC và Apple Remote Desktop (để đặt tên cho một số) (một nguồn khác) .

Có hai cách cơ bản để làm điều này; GUI và thiết bị đầu cuối.

Trước hết, GUI

Để kích hoạt tài khoản root, hãy chuyển đến "Tiện ích thư mục", tức là cmd + dấu cách và tìm kiếm. Nhấn khóa để mở khóa "chế độ quản trị viên", sau đó kích hoạt tài khoản root thông qua chỉnh sửa -> "Bật người dùng root".

Cách bật root

Nó sẽ yêu cầu mật khẩu root, bây giờ hãy nhập mật khẩu bình thường của bạn (để bạn không quên nó). Nếu nó không yêu cầu mật khẩu, hãy sử dụng Chỉnh sửa -> "Thay đổi mật khẩu gốc ..." ở trên.

Thiết bị đầu cuối

Nếu bạn là người của thiết bị đầu cuối, sử dụng như sau:

sudo passwd -u root
## Enter passwords as needed.... 
## (if you are using the terminal you should know what you are doing...)

Điều này là đủ với một thiết bị đầu cuối, vấn đề với cách GUI là chúng ta phải kích hoạt tài khoản để đặt mật khẩu, điều mà chúng ta không phải làm với thiết bị đầu cuối.

Ghi chú

Ngay cả khi bạn có mật khẩu được đặt cho tài khoản root, máy tính của bạn sẽ trở nên dễ bị tổn thương nếu bạn vô hiệu hóa tài khoản root. Hành động vô hiệu hóa tài khoản root dường như là thủ phạm. Vì vậy, tôi nhắc lại, người dùng root nên được kích hoạt mật khẩu nếu sử dụng GUI, trong khi thông qua thiết bị đầu cuối chỉ sử dụng ´passpassdd là "ok" (mặc dù trạng thái này không thể truy cập được thông qua GUI). Có vẻ như "Vô hiệu hóa người dùng root" trong "Tiện ích thư mục" sẽ xóa mật khẩu cho tài khoản root, theo nghĩa là cung cấp cho bạn một tài khoản root không có mật khẩu dễ bị tấn công.

Có vẻ như việc cố gắng đăng nhập bằng "root" trong cửa sổ đăng nhập hệ thống sẽ cho phép tài khoản root nếu nó bị vô hiệu hóa trước đó. Tức là với tài khoản root bị vô hiệu hóa, bạn cần nhập root hai lần trong cửa sổ đăng nhập hệ thống để có quyền truy cập root và (theo thử nghiệm của tôi) trong lần thử đầu tiên, tài khoản root được bật (không có mật khẩu nếu không được đặt qua passwd) và vào lần thử thứ hai bạn đi qua.

Dường như vấn đề này đã được công khai ít nhất là từ 2017/11/13 (13 Tháng mười một), khi nó được đề cập trong diễn đàn hỗ trợ của Apple .

Hãy chứng minh tôi sai, tôi thực sự đánh giá cao là sai ngay bây giờ.

Cập nhật đáng sợ

Sau khi kích hoạt tài khoản root không mật khẩu (tức là thông qua bảng tùy chọn hệ thống và nhấp vào "khóa" và nhập "root" với mật khẩu trống một, hai hoặc ba lần (số lần tùy thuộc vào trạng thái ban đầu)) có thể đăng nhập vào máy tính từ màn hình đăng nhập chính sử dụng "root" và mật khẩu trống (!). SSH / Telnet dường như không hoạt động, nhưng Apple Remote Desktop, Chia sẻ màn hình và VNC dễ bị tấn công.

Vì vậy, đối với các quản trị viên mạng, có thể tạm thời bỏ các gói vào các cổng sau:

  • 5900-5905 (ish, để được ninja an toàn) để có được các cổng VNC phổ biến nhất. VNC bắt đầu từ 5900 theo mặc định và liệt kê trở lên nếu bạn đang sử dụng nhiều màn hình (mặc dù không phổ biến). Chia sẻ màn hình và Apple Remote Desktop dường như cũng sử dụng các cổng này ( danh sách các cổng phần mềm của Apple )
  • 3283 và 5988 cho Apple Remote Desktop ( danh sách các cổng phần mềm của Apple )

Đọc thêm:

Một nỗ lực dũng cảm để tham khảo các nguồn khác giải quyết vấn đề. Hãy chỉnh sửa và cập nhật câu trả lời của tôi nếu bạn có nhiều hơn.


5
Ok tôi thấy tại sao tự trả lời là sai. Vô hiệu hóa root không tốt cho đến khi lỗi này được khắc phục vì chính lỗi sẽ chỉ kích hoạt lại tài khoản. Có một số upvote để bạn có thể bình luận!
Freiheit

1
Tôi không phải là một anh chàng mac, nhưng trong thế giới * nix, việc vô hiệu hóa mật khẩu gốc sẽ không an toàn hơn so với việc có mật khẩu an toàn. Trong thực tế, rất phổ biến để vô hiệu hóa mật khẩu và đặt shell thành /dev/nullroot. Theo cách này, quyền truy cập vào tài khoản root xảy ra thông qua các sutòa nhà cho người dùng có quyền đó.
crasic

1
@crasic AFAIK OSX làm điều gì đó kỳ lạ với các cửa sổ đăng nhập hệ thống của họ. Họ rõ ràng cho phép các tài khoản nói chung hoặc root cụ thể nếu được thử. Và hầu như không có tài liệu nào về hành vi này. Xin lưu ý rằng các chi tiết cụ thể của BSD (tức là sử dụng dòng lệnh / bash) là không hiệu quả.
flindeberg

Vậy với lệnh Terminal, bạn có thể đặt mật khẩu root mà không cần bật root? Đó dường như là lựa chọn an toàn nhất.
wvducky

1
@jcm Nah, thực ra không phải là nó bị nói quá tệ sau khi di chuyển văn bản xung quanh một chút. Tôi sẽ cố gắng xóa nó một chút, xem xét trong một phút?
flindeberg

10

Nếu bạn không thể cài đặt bản vá chính thức hoặc không muốn tin tưởng rằng nó đã hoạt động, thì

Bạn không muốn chỉ tắt người dùng root trên High Sierra.

Để bảo mật máy Mac của bạn, hãy bật root bằng mật khẩu bảo mật dài.

Chúng tôi sẽ không thay đổi điều này tại nơi làm việc cho đến khi bản phát hành điểm đầy đủ tiếp theo được phát hành cho macOS, có khả năng là 10.13.2


Trừ khi bạn thực hiện hành động, người dùng root bị vô hiệu hóa và điều này thật tệ nếu máy Mac của bạn không được vá chính xác.

Nếu bạn muốn, tùy chọn làm cứng vỏ cho đến khi Apple có bản vá hoặc sửa lỗi chính thức.

Đây là một kịch bản tuyệt vời để đặt mật khẩu gốc ngẫu nhiên và thay đổi / đặt shell gốc thành /usr/bin/falseđể ngay cả khi mật khẩu được đoán, vỏ gốc không thể đăng nhập:

Về cơ bản nó có ba điều quan trọng:

rootpassword=$(openssl rand -base64 32)
/usr/bin/dscl . -passwd /Users/root "$rootpassword"
/usr/bin/dscl . -create /Users/root UserShell /usr/bin/false

Tạo UserShell là nếu shell không được đặt và tập lệnh đầy đủ sẽ kiểm tra shell hiện có và -changethay vào đó thay vì -createing.

Làm cách nào để bảo vệ bản thân khỏi lỗ hổng gốc trong macOS High Sierra?


1
Nói chung, không nên lưu trữ mật khẩu ngay cả khi tạm thời như thế này. Các trang dcsl người đàn ông gợi ý "không cung cấp mật khẩu như là một phần của lệnh và bạn sẽ được nhắc nhở một cách an toàn"
Josh Caswell

1
Đồng ý @JoshCaswell - có nó trong tập lệnh sẽ tốt hơn vì biến không được xuất và nó được tạo. Tin tốt là Apple có một bản vá chính thức khiến cho vụ hack này trở nên cần thiết trong một thời gian ngắn - chúng tôi đã sử dụng nó như một lời tiên tri cho tác hại lớn hơn của việc mã hóa cứng cùng một mật khẩu trên toàn hạm đội hoặc không có mật khẩu nào cả. Đó chắc chắn là một sự thỏa hiệp và không phải là một giải pháp.
bmike

Vì tò mò thuần túy, tại sao bạn có một liên kết đến câu hỏi này ở cuối câu trả lời của bạn?
đăng lại

1
@reirab hoàn toàn rối tung lên. Xem chỉnh sửa để sửa các liên kết thích hợp. Cảm ơn!
bmike


0

Bạn cần đăng nhập với tư cách người dùng root và thay đổi mật khẩu thành thứ gì đó mạnh mẽ. Nếu nó thực sự tạo một tài khoản mới (trái ngược với việc kích hoạt tài khoản root đã tồn tại), bạn nên xóa tài khoản đó trước.


Xem tự trả lời của tôi. Lời khuyên của bạn để đặt mật khẩu mạnh là hợp lý nhưng việc vô hiệu hóa hoàn toàn tài khoản có vẻ như là một sự bảo vệ nghiêm ngặt hơn nữa và khôi phục OS X về trạng thái mặc định. support.apple.com/en-us/HT204012 . Sẽ thiết lập một trình bảo vệ mật khẩu mạnh chống lại việc khai thác lỗi được mô tả ngay cả khi tài khoản root được kích hoạt lại?
Freiheit

Trên High Sierra, 10.13.0 và 10.113.1, bạn hoàn toàn không muốn vô hiệu hóa tài khoản root. Vấn đề là nếu root bị vô hiệu hóa và bạn cố gắng sử dụng bất kỳ Cửa sổ đăng nhập nào để đăng nhập với quyền root, Cửa sổ đăng nhập sẽ kích hoạt tài khoản root với mật khẩu trống. Nếu root đã được bật với mật khẩu mạnh, Cửa sổ đăng nhập sẽ không xóa mật khẩu. Giảm thiểu duy nhất là cho phép root với một mật khẩu mạnh .
Brian Reiter

0

Apple vừa phát hành bản cập nhật để khắc phục sự cố.

Cập nhật bảo mật 2017-001 https://support.apple.com/en-us/HT208315

Ngoài ra, để ngăn chặn truy cập trái phép vào máy tính Mac của bạn, bạn nên kích hoạt tài khoản người dùng root và đặt mật khẩu riêng cho người dùng root.

https://support.apple.com/en-ph/HT204012

Nếu tài khoản người dùng root của bạn đã hoạt động, hãy đảm bảo rằng bạn thay đổi mật khẩu chỉ để đảm bảo rằng lỗ hổng mật khẩu trống không được đặt.


0

Không! Đừng xóa tài khoản root!

Trước hết, rootđã có mặt trong tất cả các phiên bản macOS, Mac OS X, Mac OS và thậm chí cả các phiên bản cổ của hệ điều hành. macOS gần đây đã không tạo tài khoản này vì một lỗ hổng. Nó chỉ đơn thuần là phơi bày nó một cách tình cờ.

Loại bỏ rootsẽ là một ý tưởng rất xấu, và để tôi cho bạn biết lý do tại sao.

Nó sẽ làm tê liệt hoàn toàn macOS, vì sẽ không có tài khoản nào có đủ đặc quyền để chạy các dịch vụ quan trọng (như WindowServer, chạy GUI). Có các biện pháp bảo vệ tại chỗ để ngăn chặn người dùng không biết gì rootvà bạn không nên bỏ qua chúng.

Hãy tìm hiểu xem ai là người chạy các quy trình đầu tiên trong hệ thống, các quy trình quan trọng nhất (sử dụng Trình giám sát hoạt động):

kernel_task và launchd cũng thuộc sở hữu của

Này, đó là khu phố thân thiện của chúng tôi rootmột lần nữa! Quá trình đầu tiên (với PID 0) thực sự được điều khiển bởi kernel và có thể sẽ có toàn quyền, nhưng quy trình con của nó, launchd(chịu trách nhiệm bắt đầu các dịch vụ như cửa sổ đăng nhập và máy chủ cửa sổ) được bắt đầu với các đặc quyền của root. Nếu rootkhông tồn tại, quá trình này sẽ không bao giờ bắt đầu hoặc sẽ không có quyền.

Bảo vệ tài khoản root

Các câu trả lời khác đã cung cấp một bản vá được phát hành bởi Apple để khắc phục vấn đề. Tuy nhiên, nếu bạn không thể hoặc không sẵn sàng cài đặt nó ...

Nó hoạt động vì macOS băm lại mật khẩu đã nhập dưới dạng "nâng cấp" vì tài khoản bị vô hiệu hóa (root) bị phát hiện không chính xác là có hàm băm cũ. Nó vẫn sẽ nói không chính xác, nhưng lần sau, các giá trị băm sẽ khớp (vì macOS đã thay đổi nó) và nó sẽ cho phép bạn tham gia.

Để bảo mật root, bạn sẽ phải sử dụng Directory Utility. Có hai cách để truy cập nó:

  1. Sử dụng đèn chiếu. Bắt đầu tiện ích thư mục bằng Spotlight
  2. Sử dụng Finder. Mở Finder, nhấn Command + Shift + G (hoặc chọn, nhập /System/Library/CoreServices/Applications/và nhấn Go (hoặc nhấn Enter). Sau đó mở Directory Utility từ đó.Chọn đi Chọn nơi để đi Mở tiện ích thư mục

Khi bạn đã mở Tiện ích thư mục, bạn sẽ phải nhấp vào khóa để thay đổi

Sau khi thực hiện xong, chọn Change Root Passwordhoặc Enable Root Usertừ menu Chỉnh sửa. Tôi hiển thị Change Root Passwordvì tài khoản root của tôi đã được kích hoạt bằng mật khẩu mạnh.

Chọn thay đổi mật khẩu gốc

Chọn một mật khẩu và bây giờ mật khẩu trống sẽ không hoạt động nữa.

Chọn mật khẩu

Xin chúc mừng! Bạn không còn dễ bị hack root.


"Đoán theo suy đoán thuần túy, hệ thống có thể kích hoạt lại tài khoản root vì bạn đã nhập đúng mật khẩu (trống trong trường hợp này)." - không hoàn toàn đúng. Có một đường dẫn di chuyển để cập nhật mật khẩu bằng cơ chế băm cũ và nó không xử lý !(mà, như một loại UNIX, có thể bạn sẽ nhận ra) một cách chính xác.
Charles Duffy

Xem object-see.com/blog/blog_0x24.html để biết phân tích nguyên nhân gốc rễ.
Charles Duffy

Phải - vì vậy suy đoán của tôi không chính xác. Vì vậy, nó băm lại mật khẩu trống dưới dạng "nâng cấp" vì tài khoản bị vô hiệu hóa được phát hiện không chính xác là có hàm băm cũ? Tôi có đúng không?
Dev

Về lý thuyết, những gì nó phải làm trong bộ mã này là kiểm tra xem thuật toán băm cũ xác nhận mật khẩu đã nhập, sau đó cập nhật với một hàm băm mới (của mật khẩu đã nhập, được biết là khớp với mật khẩu cũ). Trong thực tế, nó không kiểm tra lỗi từ hàm được cho là lấy lại hàm băm cũ từ trường "ShadowHash" (hay nói đúng hơn là nó chỉ kiểm tra giá trị trả về chứ không phải giá trị tham chiếu được sử dụng để trả về kết quả so sánh), và sau đó tạo ra một hàm băm mới từ mật khẩu (trống hay không!).
Charles Duffy

... Vì vậy, khá nhiều, vâng, bạn đúng. :)
Charles Duffy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.