このHigh Sierraセキュリティバグの副作用として作成されたルートアカウントを無効化または削除するにはどうすればよいですか?


40

この記事では、ロック解除のプロンプトが表示されたときにルートを入力すると、すべてのユーザーがシステム設定をロック解除できるバグについて説明します。それは警告します:

確認するためにこれを自分で行う必要はありません。そうすることで「root」アカウントが作成され、無効にしないと他の人が利用できる可能性があります。

この記事では、熱心なエンジニアが問題を再現し、ルートアカウントを削除または無効にする必要がある場合の対処方法については説明していません。

このアカウントを安全に無効化または削除するにはどうすればよいですか?

このAppleページでは、アカウントを無効にする方法を説明していますが、これは、フォールトがアカウントを再度有効にできるため、フォールトから保護しません。セキュリティのバグが修正されると、ルートを無効にしてシステムを通常の状態に復元します。

更新2017-11-29 16:43 UTC

セキュリティアップデート2017-001のセキュリティコンテンツについてを参照して macOS High Sierraを更新し、管理者のパスワードを入力せずに管理者認証をバイパスしないようにします。


アカウントの削除または無効化は望ましくないため、この質問のタイトルは現在記載されているXYです。
モンティハーダー

回答:


40

利用可能なパッチ、ここをクリック、またはマシンで更新

興味深いことに、OSXのベータ版および開発者版に対するパッチはまだありません。聞いたらすぐにこの回答を更新します。

上記のパッチをダウンロードします。履歴のために残りの投稿を残します:-)

CVEはCVE-2017-13872であり、NISTは近い将来分析を更新します。

元の回答、パッチなしで関連

まず、GUIを介してルートアカウントを無効にしないでください。「無効」なルートアカウントを持つことが問題の原因です。

あなたはならない可能に rootユーザをし、それにパスワードを与えます。この脆弱性は、VNCおよびApple Remote Desktop(いくつか例を挙げると)(別のソース)を介してリモートでも利用できるため、これは重要です。

これを行うには、2つの基本的な方法があります。GUIおよびターミナル。

まず、GUI

ルートアカウントを有効にするには、「ディレクトリユーティリティ」、つまりcmd +スペースと検索に移動します。ロックを押して「管理者モード」のロックを解除し、編集->「ルートユーザーの有効化」でルートアカウントを有効にします。

ルートを有効にする方法

rootパスワードを要求する必要があります。今は通常のパスワードを入力します(忘れないように)。パスワードを要求しない場合は、上記の[編集]-> [ルートパスワードの変更...]を使用します。

ターミナル

あなたがよりターミナルの人なら、以下を使用してください:

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

端末ではこれで十分です。GUIの方法の問題は、アカウントでパスワードを設定できるようにする必要があることです。これは端末では必要ありません。

ノート

ルートアカウントにパスワードが設定されている場合でも、ルートアカウントを無効にすると、コンピューターは脆弱になります。ルートアカウントを無効にするアクションが原因であるようです。繰り返しますが、GUIを使用している場合は、rootユーザーを有効に パスワード持っている必要がありますが、ターミナル経由で「passwd」のみを使用する場合は「ok」です(ただし、この状態はGUIのみで到達できません)。「Directory Utility」の「Disable Root User」は、ある意味で脆弱性のあるパスワードなしのルートアカウントを与えるという意味で、ルートアカウントのパスワードを削除するようです。

システムのログインウィンドウで「root」でログインしようとすると、rootアカウントが以前に無効になっている場合に有効になります。つまり、ルートアカウントを無効にすると、システムログインウィンドウにrootを2回入力してルートアクセスを取得する必要があり、(私のテストによると)最初にルートアカウントが有効になります(経由で設定されていない場合はパスワードなしpasswd)。二度目にあなたが通過してみてください。

Appleサポートフォーラムで言及されている少なくとも2017-11-13(11月13日)以来、この問題は公開されているようです。

私が間違っていることを証明してください、私は今間違っていることを本当に感謝します。

怖いアップデート

パスワードなしのルートアカウントを有効にした後(つまり、システム設定パネルで「ロック」をクリックし、空白のパスワードで「ルート」を1、2、3回入力します(回数は初期状態によって異なります)) 「root」と空のパスワード(!)を使用して、メインログイン画面からコンピューターを起動します。SSH / Telnetは機能していないようですが、Apple Remote Desktop、画面共有、およびVNCは脆弱です。

したがって、ネットワーク管理者にとって、次のポートへのパケットを一時的にドロップすることは興味深いかもしれません。

  • 最も一般的なVNCポートを取得するための5900-5905(っぽい、忍者の安全のため)。VNCはデフォルトで5900から開始し、複数のディスプレイを使用している場合は上向きに列挙します(ただし一般的ではありません)。画面共有とApple Remote Desktopもこれらのポートを使用しているようです(Appleソフトウェアポートのリスト
  • Apple Remote Desktop用の3283および5988(Appleソフトウェアポートのリスト

追加の読み物:

問題に対処する他のソースを参照しようとする勇敢な試み。さらに回答がある場合は、回答を編集および更新してください。


5
OK自己回答が間違っている理由がわかります。障害自体はアカウントを再度有効にするだけなので、この障害が修正されるまでルートを無効にしても効果はありません。あなたがコメントできるように、いくつかの賛成票を持っています!
フライハイト

1
私はMacの男ではありませんが、* nixの世界では、rootパスワードを無効にすることは、安全なパスワードを持っていることより安全ではないはずです。実際、パスワードを無効にし、シェルを/dev/nullroot に設定することは非常に一般的です。この方法で、rootアカウントへのアクセスはsu、その許可を持つユーザーのsyscallsを介して発生します。
古典的な

1
@crasic AFAIK OSXは、システムログインウィンドウで奇妙なことをします。これらのアカウントは、一般的にアカウントを有効にするか、特定のアカウントを有効にすると有効になります。また、この動作に関するドキュメントはほとんどありません。BSDの仕様(コマンドライン/ bashの使用法)には問題がないことに注意してください。
-flindeberg

ターミナルコマンドを使用すると、ルートを有効にせずにルートパスワードを設定できますか?それが最も安全なオプションのようです。
ウィスバッキー

1
@jcmいや、実際には、テキストを少し動かした後、非常にひどく言葉遣いされているわけではありません。私はそれを少しクリアしようとします、ちょっと見てください?
flindeberg

10

公式パッチをインストールできない場合またはそれが機能したことを信頼したくない場合は、

High Sierraのみでrootユーザーを無効にしたくありません。

Macを保護するには、長い安全なパスワードでルートを有効にします。

次のフルポイントリリースがmacOS用にリリースされるまで、これを職場で変更することはありません。


アクションを実行しない限り、rootユーザーはデフォルトで無効になっています。これは、Macに正しくパッチが適用されていない場合は無効です。

必要に応じて、Appleが公式のパッチまたは修正プログラムを入手するまで、オプションでシェルを強化します。

これは、ランダムなルートパスワードを設定し/usr/bin/false、パスワードが推測されてもルートシェルがログインできないようにルートシェルを変更/設定するための素晴らしいスクリプトです。

基本的に3つの重要なことを行います。

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

UserShellの作成は、シェルが設定されていない場合であり、完全なスクリプトは既存のシェルをチェックし、-changeそれを-createing ではなくes します。

macOS High Sierraのルートの脆弱性から身を守るにはどうすればよいですか?


1
このように一時的にでもパスワードを保存しない方が一般的に望ましいです。DCSLのmanページを示唆して、「コマンドの一部としてパスワードを提供しないと、あなたが安全にプロンプトが表示されます」
ジョシュ・キャスウェル

1
合意された@JoshCaswell-変数はエクスポートされず、生成されるため、スクリプトに含める方が優れています。幸いなことに、Appleにはこのハックを短命にする公式パッチがあります。これは、フリート全体で同じパスワードをハードコーディングするか、パスワードをまったく持たないというはるかに大きな害に対する予防策として実行しました。それは確かに妥協であり、解決策ではありませんでした。
bmike

純粋な好奇心から、なぜあなたの答えの最後にこの質問へのリンクがあるのですか?
reirab

1
@reirabは完全に台無しになりました。適切なリンクを修正するには、編集を参照してください。ありがとう!
bmike


0

rootユーザーとしてログインし、パスワードを強力なものに変更する必要があります。既存のルートアカウントを有効にするのではなく、実際に新しいアカウントを作成する場合は、最初にそのアカウントを削除する必要があります。


私の自己回答をご覧ください。強力なパスワードを設定するというアドバイスは妥当ですが、アカウントを完全に無効にすることは、さらに厳密な保護のように見え、OS Xをデフォルトの状態に戻します。support.apple.com/en-us/HT204012。ルートアカウントが再度有効になっている場合でも、説明されているバグの悪用に対して強力なパスワードガードを設定しますか?
フライハイト

High Sierra 10.13.0および10,13.1では、rootアカウントを無効にすることは絶対に望ましくありません。問題は、rootが無効になっていて、ログインウィンドウを使用してrootとしてログインしようとすると、ログインウィンドウが空のパスワードでルートアカウントを有効にすることです。強力なパスワードでルートがすでに有効になっている場合、ログインウィンドウはパスワードを消去しません。唯一の軽減策は、強力なパスワードで root を有効にすることです
ブライアンライター

0

Appleはこの問題を修正するためのアップデートをリリースしました。

セキュリティアップデート2017-001 https://support.apple.com/en-us/HT208315

また、Macコンピューターへの不正アクセスを防ぐには、rootユーザーアカウントを有効にし、rootユーザー専用のパスワードを設定する必要があります。

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

ルートユーザーアカウントが既にアクティブになっている場合は、空のパスワードの脆弱性が設定されていないことを確認するためだけにパスワードを変更してください。


0

いや!rootアカウントを削除しないでください!

まず第一にroot、macOS、Mac OS X、Mac OSのすべてのバージョン、およびオペレーティングシステムの古いバージョンでさえ存在していました。脆弱性のため、macOSは最近このアカウントを作成しませんでした。偶然それを暴露しただけです。

削除rootするのは非常に悪い考えです。その理由を説明します。

重要なサービス(GUIを実行するWindowServerなど)を実行するための十分な特権を持つアカウントがないため、macOSを完全に無効にします。無知なユーザーがを削除するのを防ぐための保護手段がありroot、それらをバイパスしようとしないでください。

システムで最初のプロセスを実行している人、最も重要なプロセス(アクティビティモニターを使用)を確認します。

kernel_taskとlaunchdも所有しています

ねえ、それはroot再び私たちのフレンドリーな近所です!最初のプロセス(PID 0)は実際にはカーネルによって制御されており、いずれにしても完全なアクセス許可を持っている可能性がありますが、その子プロセスlaunchd(ログインウィンドウやウィンドウサーバー自体などのサービスの開始を担当)はの特権で開始されrootます。場合はroot存在しなかった、このプロセスが開始したことがないだろうか、何の権限を持っていないだろう。

ルートアカウントの保護

他の回答は、Appleがリリースした問題を修正するパッチを提供しています。ただし、インストールできない場合、またはインストールする意思がない場合...

無効なアカウント(ルート)が古いハッシュを持っていると誤って検出されたため、macOSは入力されたパスワードを「アップグレード」として再ハッシュするため、機能します。まだ間違っていると表示されますが、次回はハッシュが一致し(macOSが変更したため)、ユーザーを許可します。

を保護するにはroot、ディレクトリユーティリティを使用する必要があります。アクセスするには2つの方法があります。

  1. Spotlightを使用します。 Spotlightを使用してディレクトリユーティリティを起動する
  2. Finderを使用します。Finderを開き、Command + Shift + G /System/Library/CoreServices/Applications/を押します(またはを選択してEnterを入力し、Goを押します(またはEnterを押します)。そこからディレクトリユーティリティを開きます。移動の選択 どこに行くかを選択する ディレクトリユーティリティを開く

ディレクトリユーティリティを開いたら、する必要があります 変更するにはロックをクリックします

完了したら、[ 編集]メニューからChange Root PasswordまたはEnable Root Userを選択します。Change Root Password私のルートアカウントは強力なパスワードで既に有効になっているので表示します。

ルートパスワードの変更の選択

パスワードを選択すると、空のパスワードは機能しなくなります。

パスワードを選択する

おめでとうございます!ルートハックに対する脆弱性はなくなりました。


「正しい推測で推測すると、システムはおそらく正しいパスワード(この場合は空白)を入力したため、ルートアカウントを再度有効にします。」-まったく正しくありません。古いハッシュメカニズムを使用してパスワードを更新するための移行パスがありますが、それは!(おそらくUNIXタイプとしては認識されるでしょう)正しく処理されません。
チャールズダフィー

根本原因分析については、objective-see.com / blog / blog_0x24.htmlを参照してください。
チャールズダフィー

正しい-だから私の推測は正確ではなかった。無効なアカウントが古いハッシュを持っていると誤って検出されたため、空のパスワードを「アップグレード」として再ハッシュしますか?私は正しいですか?
開発

理論的には、このコードパスで行うことは、古いハッシュアルゴリズムが入力されたパスワードを検証し、新しいハッシュ(古いパスワードと一致することが知られている)のハッシュで更新することを確認することです。実際には、「ShadowHash」フィールドから古いハッシュを取得することになっている関数からのエラーをチェックしません(または、戻り値のみをチェックし、戻りに使用される参照渡し値はチェックしません)比較結果)、パスワードから新しいハッシュを生成します(空かどうか!)。
チャールズダフィー

...それで、ほとんど、はい、あなたは正しいです。:)
チャールズダフィー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.