概要
Privilege Escalation(権限昇格) は、攻撃者(あるいはテスター)が元々持っている低い権限(普通ユーザー)から、より高い権限(管理者/ルートなど)を不正に取得する行為を指す。これは単なる「アカウント乗っ取り」ではなく、システムやアプリの設計欠陥・設定ミス・既知の脆弱性を突いて権限を引き上げるプロセスを含む。
初期アクセスで管理者権限を得られることは稀なので、実際の侵入検査や攻撃シナリオでは極めて重要な技術領域である。
権限昇格が重要な理由
- 管理者権限を得るとシステム全体を掌握できる(パスワードリセット、アクセス制御のバイパス、設定変更、永続化など)。
- データ盗難・サービス停止・横展開(他ホストへの侵入)に直結する。
- 初期権限のままでは検知・対処が容易でも、昇格後は隠蔽や対抗が格段に難しくなる。
主なタイプ(分類)
-
垂直権限昇格(Vertical Privilege Escalation)
→ 低権限ユーザー → 管理者(例:一般ユーザーから root) -
水平権限昇格(Horizontal Privilege Escalation)
→ 同レベルの別ユーザーへ不正アクセス(例:ユーザーA がユーザーB のデータへアクセス) -
ローカル vs リモート
- ローカル(Local):すでにシステムにアクセスできる場合の昇格(SUIDバイナリ、弱いファイル権限等)
- リモート(Remote):リモートサービスの脆弱性で高権限を奪う場合
-
カーネル/ドライバ脆弱性
→ カーネルの脆弱性(CVE)を利用して root 権限を直接取得
よく使われる攻撃ベクトル(実務的)
- 誤ったファイル/ディレクトリ権限(world-writable な設定)
- SUID/SGID ビットが付いたバイナリ(不適切実装の SUID バイナリは危険)
-
脆弱な sudo 設定(
sudoで限定コマンド実行が許されているが、それを悪用できる場合) - ハードコードされた/弱い資格情報(設定ファイルやスクリプトに平文パスワード)
- 古い/未パッチのカーネルやサービス(既知のローカルエクスプロイト)
- Cron, systemd タイマー, 起動スクリプトの誤設定(任意コマンド実行に繋がる)
- ライブラリやPATHの汚染(DLL/LD_PRELOAD, PATH hijack)
- 未保護の備品(バックアップ/スナップショット)に含まれる資格情報
攻撃の典型的流れ(ペネトレーション・テスト観点)
-
列挙(Enumeration)
-
sudo -l、id、groups、env、ps aux、crontab -l、ls -la /etc /tmp、find / -perm -4000 -type f 2>/dev/nullなどで手がかりを集める。
-
-
脚本的確認/PoC作成
- 発見したミスコンフィグやソフトのバージョンで既知のエクスプロイトが存在するか確認。
-
昇格実行
- SUID バイナリの誤用、sudo の回避、サービスの脆弱性利用、カーネルエクスプロイトなど。
-
永続化と隠蔽
- 管理者権限取得後にバックドア設置、ログ改ざん、証跡隠滅などを行う(テスターは注意して行動する)。
実務でよく見る具体例
-
sudoの設定でNOPASSWD: /usr/bin/vimが許されている → vim から:!shで root shell を取得可能。 - SUID のバイナリが存在し、ファイル書き込みやコマンド注入が可能 → root 権限取得。
-
/etc/passwdではなく/etc/shadowが誤って読み込み可能 → パスワードハッシュを取得してオフラインで解析。 - 古いカーネルで公開済みのローカル権限昇格 exploit が使用可能。
検出・ログでの兆候(検知観点)
- 異常な
sudo利用ログ(予期しないユーザーが高権限コマンドを実行)。 - 不審なプロセスの親子関係(例:シェルが不自然なサービスから spawn)。
- cron/systemd タイマーに最近追加されたジョブ。
- auditd / syslog による異常イベント(不可解なファイル操作・権限変更)。
- EDR/AV のアラート(プロセスの挙動異常、メモリ内実行など)。
防御(Mitigation)ベストプラクティス
- 最小権限原則(Least Privilege) の徹底。
- 定期的なパッチ適用(OS・カーネル・主要ソフトウェア)。
- sudo ポリシーの厳格化(必要最小限のコマンドに限定し、NOPASSWD を避ける)。
- SUID/SGID バイナリの管理(不要なら削除 or 所有者・権限を見直す)。
- ファイル/ディレクトリ権限の定期監査(特に /tmp, /var, /home)。
- Credential 管理(シークレットは Vault 等で管理、平文埋め込みを禁止)。
- ハードニング(AppArmor/SELinux、CAP_DROP、systemd sandboxing)。
- 監査とログ収集(Centralized Logging, auditd) と SIEM でのアラート設計。
- 多要素認証(MFA) とパスワード強度ポリシー。
- ポリシーと教育:開発者/運用に対する安全なコーディング・設定の教育。
実用コマンド(列挙・検査用) — 管理者が自サイトを監査する際の例
- SUID ファイル一覧
find / -perm -4000 -type f 2>/dev/null - world-writable ファイル/ディレクトリ
find / -xdev -type d -perm -0002 2>/dev/null - sudo 設定確認(あるユーザーで)
sudo -l - cron タスク確認(ユーザー毎)
crontab -l、ls -la /etc/cron.* - 最近変更されたセット(24時間)
find / -mtime -1 2>/dev/null
注意:上記コマンドは管理者が自分の環境で監査するためのもの。攻撃目的での使用は法的・倫理的に問題がある。
監査チェックリスト
- SUDO の最小化・NOPASSWD 禁止
- SUID/SGID の不要なものを削除 or 監査ログ化
- ファイル/ディレクトリ権限の自動監査(CI/定期ジョブ)
- 重要ファイル/設定ファイルの整合性監視(AIDE/Tripwire)
- ログ収集・アラート(auditd, SIEM)導入
- パッチ管理プロセスの確立
- シークレットは Vault へ移行、コード内平文排除
まとめ
Privilege Escalation は「初期アクセスを持続可能かつ危険度の高い状態に変える」重要なステップであり、防御側にとっては優先的に防ぐべき領域である。攻撃者は小さな設定ミスや過失を突いて大きな支配力を得るため、設計・設定・運用の各段階での堅牢化と継続的な監査・検知が不可欠である。