Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
google-osconfig-privesc — GoogleのOsconfigで特定された特権昇格の脆弱性に関する概念実証 | Kitploit
ツール/GitHubGitHub/irsl/google-osconfig-privesc
特権昇格脆弱性分析エクスプロイトポストエクスプロイトペネトレーションテストクラウドセキュリティレッドチーミング
GitHubirsl/google-osconfig-privesc

google-osconfig-privesc

GoogleのOsconfigで特定された特権昇格の脆弱性に関する概念実証

リポジトリを見る
105年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

概要

google_osconfig_agent プロセスは、GoogleCloudPlatform (https://github.com/GoogleCloudPlatform/osconfig) ツールのコンポーネントであり、各 VM 上でデフォルトで実行されます。このエージェントは root として実行され、OS config (https://cloud.google.com/compute/docs/os-config-management) を含むいくつかのユーザー制御可能なサービスを担当しています。OS config は、Google によるポーリングベースの望ましい状態構成の実装のようなものです。

このリポジトリは、私が実装内で特定した権限昇格の欠陥に関するデモを公開しています (その後 Google によって修正されました)。

問題

実行されるタスクはレシピ (recipe) と呼ばれ、サポートされているレシピタイプの 1 つはシェルスクリプトの実行です。このようなレシピを処理する際、root として全権限で実行されているエージェントは、ファイルを一時的に /tmp ディレクトリに保存し、その後それらを実行します。エージェントが作成したディレクトリは乗っ取られる可能性があり、それによって実行されるスクリプトを置き換えることができ、結果としてローカルでの権限昇格につながります。

再現手順

  1. 環境の準備:
root@kitploit:~
        gcloud services enable osconfig.googleapis.com 
        gcloud compute project-info add-metadata --metadata=enable-osconfig=TRUE    
  1. VM 上で、低権限ユーザー (nobody) としてエクスプロイトスクリプトを実行:
root@kitploit:~
        # cat /tmp/poc.txt
        cat: /tmp/poc.txt: No such file or directory

        # pip3 install inotify_simple
        # chroot --userspec=nobody:nogroup / /home/radimre83/osconfig-privesc-poc3.py
        Running as 65534
        calling inotify.read()
        ...
  1. os-config ポリシーの構成:
root@kitploit:~
        gcloud beta compute os-config guest-policies create test-policy-poc --file="C:\Projects\gcp-app-engine-experiments\compute-engine\osconfig-policy-poc.yaml"
  1. runscript がデプロイされたときの poc スクリプトの出力 (10〜15 分かかる場合があります):
root@kitploit:~
        Event(wd=1, mask=1073742080, cookie=0, name='recipe-runscript')
        New recipe: recipe-runscript2, rename: /tmp/osconfig_software_recipes.mali1596821311/xxx-recipe-name -> /tmp/osconfig_software_recipes.mali1596821311/recipe-runscript
        New rundir recipe-runscript2, rename: /tmp/osconfig_software_recipes.mali1596821311/recipe-runscript/xxx-rundir -> /tmp/osconfig_software_recipes.mali1596821311/recipe-runscript/run_1596821899000709826
  1. 確認:
root@kitploit:~
        # cat /tmp/poc.txt
        uid=0(root) gid=0(root) groups=0(root),1000(google-sudoers)

OS: デフォルトの Debian 10 イメージを使用した GCE の f1-micro インスタンス。

修正内容

Google は、予測可能な一時ディレクトリの代わりにランダムな一時ディレクトリを使用するようになりました。

対処方法

修正版は 2020-09-05 にリリースされました。OS パッケージをアップグレードする必要があります。

攻撃シナリオ

これはローカル権限昇格の脆弱性であるため、影響を受ける GCE VM 上で既にコード実行権限を持つ者が悪用できる可能性があります:

  • 低権限シェルを持つユーザー

  • 侵害済みのネットワークサービスを介した攻撃者

重要なポイントは、「ベースディレクトリ」(/tmp/osconfig_software_recipes) を乗っ取ることです。これは、現在のセッションでまだレシピが処理されていない場合に可能であり、つまり以下のことを意味します:

  • これまでにレシピがまったく実行されていない (例: osconfig 機能が使用されていなかったが、後で使用される予定がある)

  • VM が再起動され、すべてのレシピが DB (/var/lib/google/osconfig_recipedb) に存在するが、後で何らかのポリシー更新が実行される

この特別な組み合わせにより、実際に悪用される可能性は確かに低くなりますが、ここで /tmp 内の作業ディレクトリを利用することは安全ではないと思います。(Google も同様に考えており、この問題はその後修正されています。)

タイムライン

2020-08-07: 問題を発見し報告

2020-08-08: Google によってトリアージされ、優先度が P1 に変更

2020-08-10: Google によって確認され ("🎉 ナイスキャッチ!")、優先度が P2 に、深刻度が S2 に変更

2020-08-14: VRP プロセスに関する更新

2020-09-05: Google によって問題が修正されました

クレジット

Imre Rad

リンク

https://github.com/GoogleCloudPlatform/osconfig

https://issuetracker.google.com/issues/163147689

https://github.com/GoogleCloudPlatform/osconfig/commit/fa7e4ba5ee85be212ffbac66d96862c792bd270c

https://www.linkedin.com/in/imre-rad-2358749b/

ツールをダウンロード