GCP - BigQuery Privesc
BigQuery
Per maggiori informazioni su BigQuery controlla:
GCP - Bigquery EnumLeggere la Tabella
Leggendo le informazioni memorizzate all'interno di una tabella BigQuery potrebbe essere possibile trovare informazioni sensibili. Per accedere alle informazioni sono necessarie le autorizzazioni bigquery.tables.get
, bigquery.jobs.create
e bigquery.tables.getData
:
Esportare dati
Questo è un altro modo per accedere ai dati. Esportarli in un bucket di cloud storage e scaricare i file con le informazioni.
Per eseguire questa azione sono necessarie le seguenti autorizzazioni: bigquery.tables.export
, bigquery.jobs.create
e storage.objects.create
.
Inserire dati
Potrebbe essere possibile introdurre determinati dati attendibili in una tabella Bigquery per abusare di una vulnerabilità in un altro luogo. Questo può essere facilmente fatto con i permessi bigquery.tables.get
, bigquery.tables.updateData
e bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
Un attaccante potrebbe abusare di questo privilegio per darsi ulteriori permessi su un dataset BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Solo questo permesso consente di aggiornare il tuo accesso su un dataset BigQuery modificando gli ACL che indicano chi può accedervi:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Un attaccante potrebbe abusare di questo privilegio per concedersi ulteriori permessi su una tabella 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
Secondo la documentazione, con i permessi menzionati è possibile aggiornare una policy di riga.
Tuttavia, usando il cli bq
ne servono altri: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
È possibile trovare l'ID del filtro nell'output dell'enumerazione delle politiche di riga. Esempio:
Se hai bigquery.rowAccessPolicies.delete
invece di bigquery.rowAccessPolicies.update
puoi anche semplicemente eliminare la policy:
Un'altra potenziale opzione per bypassare le politiche di accesso alle righe sarebbe semplicemente cambiare il valore dei dati limitati. Se puoi vedere solo quando term
è Cfba
, modifica tutti i record della tabella per avere term = "Cfba"
. Tuttavia, questo è impedito da bigquery.
Last updated