Overview
権限昇格攻撃(Privilege Escalation)とは、攻撃者がシステム上で本来与えられていない権限を取得し、より高い特権レベルでの操作を可能にするサイバー攻撃手法です。初期アクセスを確保した攻撃者がシステムの完全な制御を獲得するための重要なステップであり、MITRE ATT&CKフレームワークにおいても独立した戦術として定義されています。
垂直権限昇格(Vertical Privilege Escalation)は、一般ユーザーから管理者やroot権限へと、より高い権限レベルに昇格する攻撃です。カーネルの脆弱性の悪用、SUIDビットが設定されたバイナリの悪用、sudoersファイルの設定ミスの利用などが代表的な手法です。一方、水平権限昇格(Horizontal Privilege Escalation)は、同じ権限レベルの他のユーザーのアカウントやリソースに不正にアクセスする攻撃です。
権限昇格は、ランサムウェア展開、データ窃取、永続的なバックドア設置など、あらゆるサイバー攻撃の中間段階で使用されます。設定ミスやパッチ未適用の脆弱性が主な原因であり、適切なシステム管理と最小権限の原則の徹底が最も効果的な防御策です。
Details
垂直権限昇格の手法
- カーネルエクスプロイト:OSカーネルの脆弱性を悪用してroot/SYSTEM権限を取得する。Dirty COW(CVE-2016-5195)やDirty Pipe(CVE-2022-0847)が代表例
- SUIDビットの悪用:Linuxで所有者の権限で実行されるSUIDビット付きバイナリ(find、vim、nmap等)を悪用し、rootシェルを取得する
- sudoersミス設定:sudoersファイルの不適切な設定(NOPASSWD指定やワイルドカードの使用)を利用して、パスワードなしでroot権限のコマンドを実行する
- DLLハイジャック:Windows環境で、アプリケーションのDLL検索順序を悪用し、悪意のあるDLLを正規のDLLよりも先に読み込ませる。特権プロセスが悪意のDLLを読み込むことで権限昇格が実現する
水平権限昇格の手法
- セッションハイジャック:他のユーザーのセッショントークンやCookieを窃取し、そのユーザーとしてシステムにアクセスする。XSSやネットワーク盗聴を通じてセッション情報を取得する
- IDOR(Insecure Direct Object Reference):Webアプリケーションのパラメータ(ユーザーIDやファイル名など)を操作して、他のユーザーのデータやリソースに不正にアクセスする
Windowsでの権限昇格
- Token Impersonation:Windowsのアクセストークンを操作し、より高い権限を持つプロセスのトークンを複製・使用する。SeImpersonatePrivilegeを悪用するPotato系攻撃(JuicyPotato、PrintSpoofer等)が代表的
- PrintNightmare(CVE-2021-34527):Windows Print Spoolerサービスの脆弱性を悪用し、リモートからSYSTEM権限でコードを実行する。ドメイン環境での横展開にも利用された
- サービスの設定ミス:弱いファイルパーミッション、引用符なしのサービスパス(Unquoted Service Path)、書き込み可能なサービスバイナリなどを利用した権限昇格
Linux権限昇格手法
- Cronジョブの悪用:root権限で実行されるcronジョブのスクリプトが書き込み可能な場合、悪意のコードを挿入してroot権限で実行させる
- Capabilities の悪用:Linux Capabilitiesが不適切に設定されたバイナリ(例:cap_setuid)を利用して権限を昇格する
- LD_PRELOAD / LD_LIBRARY_PATH:動的リンカの環境変数を悪用し、sudo実行時に悪意のある共有ライブラリを先に読み込ませる
- パスワードファイルの悪用:/etc/passwdや/etc/shadowファイルへの読み取り・書き込み権限がある場合、パスワードハッシュの窃取や新しいrootユーザーの追加を行う
Security Measures
- 01最小権限の原則の徹底:すべてのユーザーアカウントとサービスアカウントに対して、業務に必要な最小限の権限のみを付与してください。管理者権限の常時使用を禁止し、必要な時だけ権限を昇格するJust-In-Time(JIT)アクセスの仕組みを導入しましょう。
- 02OSとソフトウェアの迅速なパッチ適用:カーネルの脆弱性やサービスの脆弱性は権限昇格に直結します。セキュリティパッチを迅速に適用し、特にCVSSスコアの高い権限昇格の脆弱性には優先的に対応してください。自動パッチ管理システムの導入を推奨します。
- 03SUID/SGID・Capabilitiesの監査:Linuxシステムで不要なSUID/SGIDビットが設定されたバイナリを定期的に監査し、削除してください。Linux Capabilitiesの設定も見直し、不必要な特権を持つバイナリを排除しましょう。findコマンドで定期的にスキャンを実施してください。
- 04sudoers設定の厳格化:sudoersファイルでNOPASSWDの使用を最小化し、ワイルドカード指定を避けてください。特定のコマンドのみを許可し、シェルエスケープが可能なコマンド(vim、less、find等)のsudo実行を制限しましょう。
- 05EDR/ホスト監視の導入:エンドポイント検知・応答(EDR)ソリューションを導入し、権限昇格の兆候(異常なプロセスの起動、特権トークンの操作、不審なDLLロードなど)をリアルタイムで検知してください。Sysmon等のログ収集ツールとSIEMの連携も有効です。
- 06脆弱性スキャンとペネトレーションテスト:定期的に権限昇格の脆弱性スキャンを実施してください。LinPEAS、WinPEAS、BeRootなどの監査ツールを使って、攻撃者の視点からシステムの設定ミスを発見し、事前に修正しましょう。
Incidents
📋 PrintNightmare — Windows Print Spooler脆弱性(2021年)
2021年6月、Windows Print Spoolerサービスに存在する重大な権限昇格・リモートコード実行の脆弱性「PrintNightmare」(CVE-2021-34527)が公開されました。この脆弱性を悪用すると、一般ユーザー権限からSYSTEM権限への昇格が可能であり、リモートからのコード実行も可能でした。
研究者が誤って概念実証(PoC)コードをGitHubに公開したことで、パッチ提供前に攻撃コードが広まる事態となりました。ランサムウェアグループを含む複数の攻撃者が即座にこの脆弱性を悪用し始め、Microsoftは緊急の帯域外パッチをリリースしました。Print Spoolerサービスの無効化が一時的な緩和策として推奨されました。
📋 Dirty COW — Linuxカーネル競合状態脆弱性(2016年)
2016年10月、Linuxカーネルのコピーオンライト(COW)メカニズムに競合状態の脆弱性「Dirty COW」(CVE-2016-5195)が発見されました。この脆弱性は2007年から約9年間Linuxカーネルに存在しており、一般ユーザーがroot権限を取得可能でした。
Dirty COWは読み取り専用のメモリマッピングに対する書き込みを可能にし、/etc/passwdファイルの改ざんやSUIDバイナリの書き換えによるroot権限の取得が可能でした。Android端末を含む広範なLinuxシステムが影響を受け、実際の攻撃にも使用されていたことが確認されました。Linux史上最も深刻な権限昇格脆弱性の一つとして記憶されています。
📋 PwnKit — Polkitの12年間の脆弱性(2022年)
2022年1月、Qualys社がLinuxのPolkit(旧PolicyKit)のpkexecコマンドに存在する重大な権限昇格脆弱性「PwnKit」(CVE-2021-4034)を公表しました。この脆弱性は2009年5月のPolkit初期バージョンから約12年間存在しており、ほぼすべてのLinuxディストリビューションが影響を受けました。
PwnKitはpkexecコマンドのコマンドライン引数の処理における境界外書き込みの脆弱性を悪用し、任意の非特権ユーザーからroot権限を取得することが可能でした。エクスプロイトコードは非常にシンプルで信頼性が高く、公開直後から複数の攻撃グループによる悪用が確認されました。デフォルトインストールされるシステムコンポーネントの長年の脆弱性という点で、大きな衝撃を与えました。