GCP - BigQuery Privesc
BigQuery
BigQueryの詳細については以下を参照してください:
GCP - Bigquery Enumテーブルの読み取り
BigQueryテーブル内に保存されている情報を読み取ることで、機密情報を見つけることができるかもしれません。情報にアクセスするために必要な権限は bigquery.tables.get
、 bigquery.jobs.create
および bigquery.tables.getData
です:
Export data
これはデータにアクセスする別の方法です。cloud storage bucketにエクスポートし、情報を含むファイルをダウンロードします。
このアクションを実行するには、次の権限が必要です: bigquery.tables.export
、bigquery.jobs.create
、および**storage.objects.create
**。
Insert data
Bigqueryテーブルに特定の信頼されたデータを挿入して、他の場所の脆弱性を悪用することが可能かもしれません。これは、bigquery.tables.get
、bigquery.tables.updateData
、および bigquery.jobs.create
の権限を使用して簡単に行うことができます:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
攻撃者はこの権限を悪用して、BigQueryデータセットに対してさらに権限を付与することができます:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)この権限だけで、ACLを変更してBigQueryデータセットへのアクセスを更新することができます。
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
攻撃者はこの権限を悪用して、BigQueryテーブルに対してさらに自分に権限を付与することができます:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
ドキュメントによると、これらの権限があれば行ポリシーを更新することが可能です。
しかし、cli bq
を使用する場合には、さらに以下の権限が必要です: bigquery.rowAccessPolicies.create
, bigquery.tables.get
。
行ポリシー列挙の出力でフィルターIDを見つけることが可能です。例:
もし**bigquery.rowAccessPolicies.delete
**を持っていて、bigquery.rowAccessPolicies.update
を持っていない場合、ポリシーを削除することもできます:
もう一つの行アクセスポリシーを回避する潜在的なオプションは、制限されたデータの値を変更することです。term
がCfba
のときだけ見える場合、テーブルのすべてのレコードをterm = "Cfba"
に変更します。しかし、これはbigqueryによって防止されています。
Last updated