GCP - BigQuery Privesc
BigQuery
Für weitere Informationen zu BigQuery siehe:
pageGCP - Bigquery EnumTabelle lesen
Durch das Lesen der in einer BigQuery-Tabelle gespeicherten Informationen ist es möglicherweise möglich, vertrauliche Informationen zu finden. Um auf die Informationen zuzugreifen, sind die Berechtigungen bigquery.tables.get
, bigquery.jobs.create
und bigquery.tables.getData
erforderlich:
Daten exportieren
Dies ist eine weitere Möglichkeit, auf die Daten zuzugreifen. Exportieren Sie sie in einen Cloud-Speicherbucket und laden Sie die Dateien herunter mit den Informationen.
Um diese Aktion durchzuführen, sind die folgenden Berechtigungen erforderlich: bigquery.tables.export
, bigquery.jobs.create
und storage.objects.create
.
Daten einfügen
Es könnte möglich sein, bestimmte vertrauenswürdige Daten in eine Bigquery-Tabelle einzuführen, um eine Schwachstelle an anderer Stelle auszunutzen. Dies kann einfach mit den Berechtigungen bigquery.tables.get
, bigquery.tables.updateData
und bigquery.jobs.create
durchgeführt werden:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
Ein Angreifer könnte dieses Privileg missbrauchen, um sich weitere Berechtigungen für ein BigQuery-Dataset zu verschaffen:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Nur diese Berechtigung ermöglicht es, Ihren Zugriff auf ein BigQuery-Dataset zu aktualisieren, indem Sie die ACLs ändern, die anzeigen, wer darauf zugreifen kann:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Ein Angreifer könnte dieses Privileg missbrauchen, um sich weitere Berechtigungen für eine BigQuery-Tabelle zu geben:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
Laut den Dokumenten ist es mit den genannten Berechtigungen möglich, eine Zeilenzugriffsrichtlinie zu aktualisieren.
Jedoch benötigen Sie bei Verwendung des CLIs bq
noch einige weitere Berechtigungen: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Es ist möglich, die Filter-ID im Ausgabebereich der Aufzählung der Zeilenrichtlinien zu finden. Beispiel:
Last updated