GCP - BigQuery Privesc
BigQuery
Für weitere Informationen über BigQuery siehe:
GCP - Bigquery EnumTabelle lesen
Beim Lesen der in einer BigQuery-Tabelle gespeicherten Informationen könnte es möglich sein, sensible 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. Exportiere sie in einen Cloud-Speicher-Bucket und lade die Dateien mit den Informationen herunter.
Um diese Aktion durchzuführen, werden die folgenden Berechtigungen benötigt: bigquery.tables.export
, bigquery.jobs.create
und storage.objects.create
.
Insert data
Es könnte möglich sein, bestimmte vertrauenswürdige Daten in eine Bigquery-Tabelle einzufügen, um eine Schwachstelle an einer anderen Stelle auszunutzen. Dies kann leicht 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 selbst weitere Berechtigungen über ein BigQuery-Dataset zu geben:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Nur diese Berechtigung erlaubt es, Ihren Zugriff auf ein BigQuery-Dataset zu aktualisieren, indem Sie die ACLs ändern, die angeben, wer darauf zugreifen kann:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Ein Angreifer könnte dieses Privileg missbrauchen, um sich weitere Berechtigungen über eine BigQuery-Tabelle zu verschaffen:
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 der Dokumentation ist es mit den genannten Berechtigungen möglich, eine Zeilenrichtlinie zu aktualisieren.
Allerdings benötigen Sie bei Verwendung der CLI bq
noch einige weitere: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Es ist möglich, die Filter-ID in der Ausgabe der Zeilenrichtlinien-Aufzählung zu finden. Beispiel:
Wenn du bigquery.rowAccessPolicies.delete
anstelle von bigquery.rowAccessPolicies.update
hast, könntest du die Richtlinie auch einfach löschen:
Eine weitere potenzielle Möglichkeit, um Zeilen-Zugriffsrichtlinien zu umgehen, wäre einfach den Wert der eingeschränkten Daten zu ändern. Wenn Sie nur sehen können, wenn term
Cfba
ist, ändern Sie einfach alle Datensätze der Tabelle so, dass term = "Cfba"
ist. Dies wird jedoch von bigquery verhindert.
Last updated