GCP - BigQuery Privesc
BigQuery
Pour plus d'informations sur BigQuery, consultez :
pageGCP - Bigquery EnumLire la table
En lisant les informations stockées dans une table BigQuery, il pourrait être possible de trouver des informations sensibles. Pour accéder aux informations, les autorisations nécessaires sont bigquery.tables.get
, bigquery.jobs.create
et bigquery.tables.getData
:
Exportation de données
C'est une autre façon d'accéder aux données. Exportez-les dans un bucket de stockage cloud et téléchargez les fichiers avec les informations.
Pour effectuer cette action, les autorisations suivantes sont nécessaires : bigquery.tables.export
, bigquery.jobs.create
et storage.objects.create
.
Insérer des données
Il pourrait être possible d'introduire certaines données de confiance dans une table Bigquery pour exploiter une vulnérabilité ailleurs. Cela peut être facilement réalisé avec les autorisations bigquery.tables.get
, bigquery.tables.updateData
et bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
Un attaquant pourrait abuser de ce privilège pour se donner davantage de permissions sur un ensemble de données BigQuery :
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Just this permission allows to update your access over a BigQuery dataset by modifying the ACLs that indicate who can access it:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Un attaquant pourrait abuser de ce privilège pour se donner davantage de permissions sur une table 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
Selon la documentation, avec les autorisations mentionnées, il est possible de mettre à jour une politique de ligne.
Cependant, en utilisant la CLI bq
, vous avez besoin de quelques autres autorisations: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Il est possible de trouver l'ID du filtre dans la sortie de l'énumération des politiques de lignes. Exemple :
Dernière mise à jour