知識ベース

権限昇格

特権エスカレーションとは、オペレーティングシステムまたはソフトウェアアプリケーションのバグ、設計上の欠陥、または構成の監視を悪用して、通常はアプリケーションまたはユーザーから保護されているリソースへのアクセスを高める行為です。その結果、アプリケーション開発者またはシステム管理者が意図したよりも多くの特権を持つアプリケーションは、不正なアクションを実行できます。

バックグラウンド

ほとんどのコンピューターシステムは、それぞれが特権と呼ばれる機能を持つ複数のユーザーアカウントで使用するように設計されています。一般的な権限には、ファイルの表示と編集、またはシステムファイルの変更が含まれます。

特権の昇格とは、ユーザーが資格のない特権を受け取ることを意味します。これらの特権は、ファイルの削除、個人情報の表示、またはウイルスなどの不要なプログラムのインストールに使用できます。通常、システムにバグがあり、セキュリティがバイパスされる可能性がある場合、または、システムの使用方法に関する設計上の仮定に欠陥がある場合に発生します。特権エスカレーションは、次の2つの形式で発生します。

  • 特権の昇格とも呼ばれる垂直特権エスカレーション特権の低いユーザーまたはアプリケーションが、特権の高いユーザーまたはアプリケーション用に予約された機能またはコンテンツにアクセスします(たとえば、インターネットバンキングユーザーがサイト管理機能にアクセスしたり、スマートフォンのパスワードをバイパスしたりできます)。
  • 通常のユーザーが他の通常のユーザー用に予約された機能またはコンテンツにアクセスする水平特権エスカレーション (たとえば、インターネットバンキングユーザーAはユーザーBのインターネット銀行口座にアクセスします)

垂直

このタイプの権限昇格は、ユーザーまたはプロセスが、カーネルレベルの操作を実行することにより、管理者またはシステム開発者が意図したよりも高いレベルのアクセスを取得できる場合に発生します。

場合によっては、高特権アプリケーションは、インターフェイス仕様に一致する入力のみが提供されると想定しているため、この入力を検証しません。その後、攻撃者はこの仮定を悪用して、アプリケーションの権限で不正なコードを実行する可能性があります。

  • 一部のWindowsサービスは、ローカルシステムユーザーアカウントで実行するように構成されています。ローカルシステムに昇格した特権で任意のコードを実行するために、バッファオーバーフローなどの脆弱性が使用される可能性があります。あるいは、より少ないユーザーになりすましているシステムサービスは、ユーザーがなりすまし中にエラーが正しく処理されない場合(たとえば、ユーザーが悪意のあるエラーハンドラーを導入した場合)、そのユーザーの特権を昇格できます。
  • Microsoft Windowsオペレーティングシステムの一部のレガシバージョンでは、すべてのユーザーのスクリーンセーバーはローカルシステムアカウントで実行されます。ファイルシステムまたはレジストリの現在のスクリーンセーバーバイナリを置き換えることができるアカウントは、特権を昇格できます。
  • Linuxカーネルの特定のバージョンでは、現在のディレクトリを/etc/cron.dに設定するプログラムを作成し、クラッシュした場合にコアダンプを実行するように要求してから、別のプロセスで自身を強制終了することができました。コアダンプファイルはプログラムの現在のディレクトリ(/etc/cron.d)に配置され、cronはプログラムをスケジュールどおりに実行するように指示するテキストファイルとして扱われます。ファイルの内容は攻撃者の制御下にあるため、攻撃者はルート権限で任意のプログラムを実行できます。
  • クロスゾーンスクリプティングは、WebサイトがWebブラウザーのセキュリティモデルを破壊し、クライアントコンピューターで悪意のあるコードを実行できる特権エスカレーション攻撃の一種です。
  • また、アプリケーションが他の高特権サービスを使用でき、クライアントがこれらのサービスの使用をどのように操作できるかについて誤った仮定を持つ状況もあります。コマンドラインまたはシェルコマンドを実行できるアプリケーションが、実行されたコマンドの一部として未検証の入力を使用する場合、シェルインジェクションの脆弱性が存在する可能性があります。その後、攻撃者はアプリケーションの特権を使用してシステムコマンドを実行する可能性があります。
  • Texas Instrumentsの計算機(特にTI-85およびTI-82)は、元々TI-BASICの方言で書かれた解釈プログラムのみを使用するように設計されていました。しかし、ユーザーがネイティブZ-80コードを計算ハードウェアで実行できるように悪用される可能性のあるバグをユーザーが発見した後、TIはサードパーティ開発をサポートするプログラミングデータをリリースしました。 (これは、Ndlessを使用したジェイルブレイクが見つかったARMベースのTI-Nspireには引き継がれませんでしたが、テキサスインスツルメンツは依然として積極的に戦っています。)
  • iPhoneの一部のバージョンでは、許可されていないユーザーがロックされている間に電話にアクセスできます。

脱獄

ジェイルブレイクは、UNIXライクなオペレーティングシステムでchrootまたはjailから抜け出す行為、またはデジタル著作権管理(DRM)をバイパスする行為を実行するために使用される行為またはツールです。前者の場合、ユーザーは、管理者が問題のアプリケーションまたはユーザーが利用できるようにするファイルシステム外のファイルを見ることができます。 DRMのコンテキストでは、これにより、ユーザーはDRMを備えたデバイスで任意に定義されたコードを実行できるだけでなく、chrootのような制限を解除できます。この用語は、iPhone / iOSのジェイルブレイクコミュニティに由来し、PlayStation Portableハッキングの用語としても使用されています。これらのデバイスは、ジェイルブレイクを繰り返し受けており、任意のコードの実行を許可しており、ベンダーのアップデートによってこれらのジェイルブレイクが無効にされていることもあります。

iPhone、iPad、およびiPod touchを含むiOSシステムは、リリースされてからiOSのジェイルブレイク作業の対象となり、各ファームウェアの更新を続けています。 iOSのジェイルブレイクツールには、システムの調整とバイナリを見つけてインストールする方法として、CydiaまたはSileoをインストールするオプションが含まれています。 iOSのジェイルブレイクを防ぐため、AppleはデバイスブートROMにSHSHブロブのチェックを実行させ、カスタムカーネルのアップロードを禁止し、ソフトウェアが以前のジェイルブレイク可能なファームウェアにダウングレードするのを防ぎました。 「テザリングされていない」ジェイルブレイクでは、ブートROMの悪用を実行し、SHSHチェック後にパッチが適用された低レベルブートローダーを送信するか、カーネルをハッキングしてジェイルブレイクされたカーネルを送信できるように、iBoot環境が変更されます。

S60プラットフォームのスマートフォンにも同様のジェイルブレイク方法があり、HelloOXなどのユーティリティを使用すると、署名されていないコードの実行やシステムファイルへのフルアクセスが可能になります。未署名コードの制限を回避するために、(PlayStation Portableに使用されるM33ハッキングファームウェアに類似した)ファームウェアを編集した。ノキアは、アップルと同様の方法で、不正なジェイルブレイクを抑制するためのアップデートを発行しています。

ゲーム機の場合、ジェイルブレイクは自作ゲームの実行によく使用されます。 2011年、ソニーは法律事務所キルパトリック・ストックトンの支援を得て、21歳のジョージ・ホッツとグループfail0verflowの仲間をPlayStation 3のジェイルブレイクで訴えた( Sony Computer Entertainment America v。George Hotz and PlayStation Jailbreakを参照)。

アンドロイド

Androidスマートフォンは、メーカーが管理するプロセスを通過するか、エクスプロイトを使用してルートを取得するか、カスタムリカバリをフラッシュすることで、正式にルート化できます。メーカーは、制御するプロセスを介してルート化を許可しますが、一部のメーカーは、起動時に特定のキーの組み合わせを押すか、他の自己管理方法によって電話をルート化できます。メーカーの方法を使用すると、デバイスのルートが解除されてフラッシュが更新された場合でも、ほとんど常に保証が無効になります。ソフトウェアのエクスプロイトは通常、電話のカーネルに固有のエクスプロイトを使用するか、新しいバージョンでパッチが適用された既知のAndroidエクスプロイトを使用して、ユーザーがアクセス可能なルートレベルプロセスを対象としています。電話をアップグレードしないか、意図的にバージョンをダウングレードすることにより。

緩和戦略

オペレーティングシステムとユーザーは、次の戦略を使用して特権の昇格のリスクを減らすことができます。

  • データ実行防止
  • アドレス空間レイアウトのランダム化(バッファオーバーランがメモリ内の既知のアドレスで特権命令を実行するのをより困難にするため)
  • 昇格したユーザーの権限を悪用するバッファオーバーランエクスプロイトの機能を減らすために、最小限の権限でアプリケーションを実行する(プロセストークンで管理者SIDを無効にしてInternet Explorerを実行するなど)。
  • カーネルモードコードをデジタル署名する必要があります。
  • パッチ適用
  • バッファーオーバーランをトラップするコンパイラーの使用
  • ソフトウェアおよび/またはファームウェアコンポーネントの暗号化。
  • SELinuxなどの必須アクセス制御(MAC)を備えたオペレーティングシステムの使用

水平方向の特権の昇格は、通常、アプリケーションまたはユーザーから保護されていたリソースへのアクセスをアプリケーションが攻撃者に許可したときに発生します。その結果、アプリケーションは、アプリケーション開発者またはシステム管理者が意図したものと同じであるが異なるセキュリティコンテキストでアクションを実行します。これは事実上、制限された形式の特権エスカレーション(具体的には、他のユーザーになりすます能力の許可されていない仮定)です。

この問題は、Webアプリケーションでよく発生します。次の例を考えてみましょう。

  • ユーザーAは、インターネットバンキングアプリケーションで自分の銀行口座にアクセスできます。
  • ユーザーBは、同じインターネットバンキングアプリケーションで自分の銀行口座にアクセスできます。
  • この脆弱性は、ユーザーAが何らかの悪意のあるアクティビティを実行してユーザーBの銀行口座にアクセスできる場合に発生します。

この悪意のある活動は、一般的なWebアプリケーションの弱点または脆弱性が原因である可能性があります。

この状態につながる可能性のあるWebアプリケーションの脆弱性または状況には、次のものがあります。

  • ユーザーのHTTP Cookie内の予測可能なセッションID
  • セッション固定
  • クロスサイトスクリプティング
  • 簡単に推測可能なパスワード
  • セッションCookieの盗難またはハイジャック
  • キーストロークロギング