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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
KubiScan — Kubernetesクラスターの危険な権限をスキャンするツール | Kitploit
ツール/GitHubGitHub/cyberark/kubiscan
認証と認可特権昇格脆弱性スキャナーコンテナセキュリティ構成監査情報収集ペネトレーションテストクラウドセキュリティシークレット検出設定ミスレッドチーミング
1.4k1411年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
cyberark/kubiscan

KubiScan

Kubernetesクラスターの危険な権限をスキャンするツール

リポジトリを見る

GitHub release License Stars

KubernetesクラスターのRole-Based Access Control(RBAC)認可モデルにおける危険なパーミッションをスキャンするツール。 本ツールは、「Securing Kubernetes Clusters by Eliminating Risky Permissions」調査の一部として公開されました。https://www.cyberark.com/threat-research-blog/securing-kubernetes-clusters-by-eliminating-risky-permissions/

目次

  • 概要
  • できること
  • 使用方法
    • コンテナ
    • Python3で直接
      • 前提条件
      • Ubuntuへのインストール例
      • KubeConfigファイルを使用
      • リモートからServiceAccountトークンを使用
  • 例
  • デモ
  • リスクロールYAML
  • ❤️ ショーケース
  • ライセンス
  • 参考

Overview

KubiScanは、攻撃者がクラスターを侵害するために悪用する可能性のあるパーミッションをクラスター管理者が特定するのに役立ちます。これは、追跡が困難な多くのパーミッションが存在する大規模な環境で特に役立ちます。
KubiScanは、危険なRole/ClusterRole、RoleBinding/ClusterRoleBinding、ユーザー、Podに関する情報を収集し、従来の手動プロセスを自動化して、管理者がリスクを低減するために必要な可視性を提供します。

What can it do?

  • 危険なRole/ClusterRoleの特定
  • 危険なRoleBinding/ClusterRoleBindingの特定
  • 危険なSubject(ユーザー、グループ、ServiceAccount)の特定
  • 危険なPod/コンテナの特定
  • Podからのトークンのダンプ(すべて、または名前空間指定)
  • Role、ClusterRole、またはSubject(ユーザー、グループ、サービスアカウント)に関連するRoleBinding/ClusterRoleBindingの取得
  • 特定の種類('User'、'Group'、'ServiceAccount')のSubjectの一覧表示
  • RoleBindingまたはClusterRoleBindingのルールの一覧表示
  • ボリュームまたは環境変数を介してシークレットデータにアクセスできるPodの表示
  • クラスターのブートストラップトークンの取得
  • CVEスキャン
  • EKS/AKS/GKE対応

Usage

Container

次のように実行できます:

root@kitploit:~
./docker_run.sh <kube_config_file>
# 例: ./docker_run.sh ~/.kube/config

これにより、設定ファイル内のすべてのファイルがコンテナにコピーされ、コンテナ内でシェルが起動します。 Dockerイメージをビルドするには、次のコマンドを実行します:

root@kitploit:~
docker build -t kubiscan .

Directly with Python3

Prerequisites:

  • Python 3.6以上
  • Pip3
  • Kubernetes Python Client
  • Prettytable
  • openssl(Ubuntuでは組み込み) - ジョイントークンにのみ使用

Example for installation on Ubuntu:

root@kitploit:~
apt-get update  
apt-get install -y python3 python3-pip 
pip3 install -r requirements.txt  

alias kubiscan='python3 /<KubiScan_folder>/KubiScan.py' を実行して kubiscan を使用できるようにします。

上記のすべての要件をインストールしたら、次の2つの方法で実行できます:

With KubeConfig file:

~/.kube/config ファイルと関連するすべての証明書にアクセスできることを確認し、次のコマンドを実行します: kubiscan <command> 例: kubiscan -rs は、すべての危険なSubject(ユーザー、サービスアカウント、グループ)を表示します。

From a remote with ServiceAccount token

一部の機能には、次の権限を持つ特権サービスアカウントが必要です:

  • resources: ["roles", "clusterroles", "rolebindings", "clusterrolebindings", "pods", "secrets"] verbs: ["get", "list"]
  • resources: ["pods/exec"] verbs: ["create", "get"]

ただし、ほとんどの機能はこれらを必要としないため、制限付きサービスアカウントには次の設定を使用できます: 次のコマンドで作成できます:

root@kitploit:~
kubectl apply -f - << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubiscan-sa
  namespace: default
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: kubiscan-sa-secret
  annotations:
    kubernetes.io/service-account.name: kubiscan-sa
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata: 
  name: kubiscan-clusterrolebinding
subjects: 
- kind: ServiceAccount 
  name: kubiscan-sa
  namespace: default
  apiGroup: ""
roleRef: 
  kind: ClusterRole
  name: kubiscan-clusterrole
  apiGroup: ""
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata: 
  name: kubiscan-clusterrole
rules: 
- apiGroups: ["*"]
  resources: ["roles", "clusterroles", "rolebindings", "clusterrolebindings", "pods"]
  verbs: ["get", "list"]
EOF

Kubernetes 1.24以降では、サービスアカウントの作成時にシークレットが作成されないことに注意してください。そのため、シークレットを手動で作成する必要があります。
1.24より前では、上記のコマンドからSecretオブジェクトを削除し、サービスアカウントのトークンをファイルに保存できます:
kubectl get secrets $(kubectl get sa kubiscan-sa -o=jsonpath='{.secrets[0].name}') -o=jsonpath='{.data.token}' | base64 -d > token

1.24以降では、何も変更せずに次のようにトークンを保存します:

root@kitploit:~
kubectl get secrets kubiscan-sa-secret -o=jsonpath='{.data.token}' | base64 -d > token  

トークンをファイルに保存したら、次のように使用できます:
python3 ./KubiScan.py -ho <master_ip:master_port> -t /token <command>

例:

root@kitploit:~
alias kubiscan='python3 /<KubiScan_folder>/KubiScan.py
kubiscan -ho 192.168.21.129:8443 -t /token -rs

証明書認証局(ca.crt)を使用してSSL接続を検証することもできます:

root@kitploit:~
kubiscan -ho <master_ip:master_port> -t /token -c /ca.crt <command>

特権サービスアカウントを削除するには、次のコマンドを実行します:

root@kitploit:~
kubectl delete clusterroles kubiscan-clusterrole  
kubectl delete clusterrolebindings kubiscan-clusterrolebinding   
kubectl delete sa kubiscan-sa  
kubectl delete secrets kubiscan-sa-secret

Examples

すべての例を表示するには、python3 KubiScan.py -e またはコンテナ内で kubiscan -e を実行します。

Demo

KubiScanの使用例の小さなデモ:

Risky Roles YAML

risky_roles.yaml というファイルがあります。このファイルには、優先度付きの危険なロールのテンプレートが含まれています。
各ロールのkindはRoleですが、これらのテンプレートはクラスター内のすべてのRole/ClusterRoleと比較されます。
各テンプレートがクラスター内のロールと照合されるとき、そのロールに危険なロールのルールが含まれているかどうかがチェックされます。含まれている場合、そのロールは危険としてマークされます。
私たちは危険と判断したすべてのロールを追加しましたが、「危険」の定義は人それぞれ異なるため、このファイルを変更して、より危険だと考えるロールを追加したり、安全だと考えるロールを削除したりできます。

❤️ Showcase

  • RSA 2020で発表:「Compromising Kubernetes Cluster by Exploiting RBAC Permissions」(https://www.youtube.com/watch?v=1LMo0CftVC4)
  • RSA 2022で発表:「Attacking and Defending Kubernetes Cluster: Kubesploit vs KubiScan」(https://www.youtube.com/watch?v=xRqYSDKi6a0)
  • PortSwiggerの記事:「KubiScan: Open source Kubernetes security tool showcased at Black Hat 2020」(https://portswigger.net/daily-swig/kubiscan-open-source-kubernetes-security-tool-showcased-at-black-hat-2020)

License

Copyright (c) 2020 CyberArk Software Ltd. All rights reserved
このリポジトリはGPL-3.0ライセンスの下で提供されています。詳細はLICENSEを参照してください。

References:

コメント、提案、質問がある場合は、Eviatar Gerzi(@g3rzi)およびCyberArk Labsまでご連絡ください。

ツールをダウンロード