macOS High Sierraに深刻な脆弱性、誰でもルートアクセスが可能に - 修正方法はこちら [更新]

macOS High Sierraに深刻な脆弱性、誰でもルートアクセスが可能に - 修正方法はこちら [更新]

3分で読めます
| ヒント

システム環境設定 > ユーザとグループ(ルート)
システム環境設定 > ユーザとグループ(ルート)

macOS High Sierraには、私が個人的に確認した中で最も恐ろしい脆弱性があります。この脆弱性により、Macに物理的にアクセスできる人なら誰でも、即座に簡単にルート権限を取得でき、Mac上のあらゆる情報にアクセスできるようになります。幸いなことに、Appleがこの問題を修正するまでは、自分で修正できる方法があります。

アップデート3: Appleは水曜日の朝、この問題を修正するパッチをリリースしました。以下は、Appleのパッチリリース前の問題と回避策を説明した元の記事です。

更新1: AppleはiMoreに対して次のような声明を発表しました:

この問題に対処するためのソフトウェアアップデートを現在開発中です。その間、ルートパスワードを設定することで、Macへの不正アクセスを防ぐことができます。ルートユーザーを有効にしてパスワードを設定するには、こちらの手順をご覧ください:https://support.apple.com/en-us/HT204012。ルートユーザーが既に有効になっている場合は、空のパスワードが設定されないように、「ルートパスワードの変更」セクションの手順に従ってください。

ルートとは何ですか?

Rootは古いUnixおよびLinux用語です(LinuxカーネルをベースにしたAndroidにも関連しています)。Rootは、Unixに由来するmacOSにおいて、実質的に最も強力なユーザーアカウントです。Rootは、特定のMac上のすべての情報にアクセスできます。ここで言う「すべて」とは、すべてのユーザー、すべてのフォルダ、すべてのファイルを指します。Rootは、ソフトウェアのインストールや、ユーザー全体の削除など、Macに対してあらゆる操作を実行できます。例えば、この脆弱性を悪用すれば、パスワードなしでMacにログインし、キーロガーをインストールしてログアウトすることが可能です。これは問題です。

macOS High Sierraでパスワードなしでルートアクセスする

問題はここにあります。macOS High Sierra を実行している Mac にパスワードなしで root としてログインできることが、@lemimorhan 氏(@flargh 経由)によって最初に指摘されました。必要なのは、ユーザーとして「root」(引用符なし)を入力し、起動時のログイン画面でパスワードフィールドを空白のままにしておくことだけです。ログインボタンを押すだけで、準備完了です。実に簡単です。実際に試してみたところ、うまくいきました。パスワードを一切入力することなく、root ユーザーとして Mac にログインできました。下のスクリーンショットでは、このセキュリティホールを利用してログイン画面から root としてログインしています。ログイン後、ターミナル(下図参照)を起動すると、「root」としてログインしていることがわかります。

端末にルートユーザーとして表示される
端末にルートユーザーとして表示される

ルート権限でMac上のあらゆる情報にアクセスできました。こちらは、メインのbryanユーザーフォルダの奥深くまで表示されているFinderウィンドウのスクリーンショットです。

macOS High SierraのFinderウィンドウにすべての機能へのフルアクセスが表示される
macOS High SierraのFinderウィンドウにすべての機能へのフルアクセスが表示される

macOS High Sierraのルートセキュリティホールはユーザーとグループでも機能する

システム環境設定 > ユーザとグループでも同じ方法でルート権限を取得できることを確認できました。ロックボタンをクリックし、ユーザー名として「root」(かぎ括弧なし)と入力し、文字を入力せずにパスワードフィールドをクリックします。カーソルをパスワードフィールドに移動せずにロック解除ボタンをクリックすると、ユーザー名はログイン時のユーザー名に戻ります。

システム環境設定 > ユーザとグループ(ルート)
システム環境設定 > ユーザとグループ(ルート)

これはゲストユーザーまたは他の管理者アカウントで機能します。ルート権限があれば、このウィンドウから他のユーザーを削除できます。これにはそのユーザーのすべてのデータも含まれます。

macOS High Sierraのルートセキュリティホールのクイックフィックス - ルート権限を有効にする

幸いなことに、修正方法があります。しかも非常に簡単です。rootにパスワードを設定するだけです。これで、パスワードなしでrootとしてログインするユーザーを阻止できます。追記2:ただし、この修正を行うにはrootを有効にする必要があります!rootが無効になっている場合、ユーザーにパスワードを設定してもこのセキュリティホールをブロックできません。Jeff Gamet氏はrootを無効にした状態でこの脆弱性をテストし、パスワードを設定してもこの脆弱性をブロックできないことを確認しました。rootを確認/有効化する方法は次のとおりです。

  1. Apple メニュー () >「システム環境設定」を選択し、「ユーザーとグループ」(または「アカウント」) をクリックします。
  2. をクリックし ロックアイコン、管理者名とパスワードを入力します。
  3. [ログイン オプション]をクリックします。
  4. [参加] (または [編集]) をクリックします。
  5. [ディレクトリユーティリティを開く]をクリックします。
  6. ロックアイコン ディレクトリユーティリティウィンドウをクリックし 、管理者名とパスワードを入力します。
  7. ディレクトリユーティリティのメニューバーから:
    • 「編集」>「ルート ユーザーを有効にする」を選択し、ルート ユーザーに使用するパスワードを入力します。
    • または、「編集」>「ルート ユーザーを無効にする」を選択します。

macOS High Sierraのルートセキュリティホールのクイックフィックス

ルート権限が有効になったので、Leo Laporte氏の説明に従って、ターミナルを使ってパスワードを設定する必要があります。ターミナルを開くには、CommandキーとSpaceキーを押し、「term」と入力してSpotlightを起動します。デフォルトではターミナルアプリが起動しているはずです。Returnキーを押すと起動します。アプリケーション > ユーティリティ > ターミナルからもアクセスできます。

私のMacでは、High Sierraの現在のパブリックベータ版を実行することで、ルート化の問題が解決しました。rootにパスワードを設定してください。ターミナルを開いて、次のように入力してください。$ sudo su パスワード: (あなたのパスワード) sh-3.2 # passwd rootのパスワードを変更しています。新しいパスワード: (覚えやすいパスワードを入力してください) 新しいパスワードを再入力してください:

— Leo Laporte、Chief TWiT 兼 The Tech Guy (@leolaporte) 2017年11月28日

コピー&ペーストしやすいように、手順をプレーンテキストで以下に示します。ターミナルを開きます。以下を入力します。リターンキーsudo suを押すと、パスワードの入力を求められます。これは、現在Macにログインしている管理者アカウントのパスワードです。ターミナルから以下が返されます。sh-3.2#以下を入力します。passwdターミナルから以下が返されます。Changing password for root.ルートの新しいパスワードを入力してください。覚えやすいパスワードにしてください。1Passwordなどのパスワードキーパーを使用している場合は、そこに入力してください。ターミナルから以下が返されます。Retype new:新しいパスワードをもう一度入力すると、ターミナルは処理を完了し、以下が返されます。スーパーユーザーとしてログアウトするにはsh-3.2#以下を入力しますexit。全体のプロセスは以下のようになります。

root のパスワードを作成するためのターミナル ウィンドウ。
root のパスワードを作成するためのターミナル ウィンドウ。

誰もが Apple がこれを早急に修正することを期待しており、私もその一人です。

Knowledge Network