GCP - Artifact Registry Privesc
Last updated
Last updated
Apprenez et pratiquez le hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)
Pour plus d'informations sur l'Artifact Registry, consultez :
Avec cette permission, un attaquant pourrait télécharger de nouvelles versions des artefacts avec du code malveillant comme des images Docker :
Il a été vérifié qu'il est possible de télécharger une nouvelle image docker malveillante avec le même nom et la même balise que celle déjà présente, donc l'ancienne perdra la balise et la prochaine fois que cette image avec cette balise sera téléchargée, la malveillante sera téléchargée.
Il n'est pas possible de télécharger une bibliothèque python avec la même version que celle déjà présente, mais il est possible de télécharger des versions supérieures (ou d'ajouter un .0
à la fin de la version si cela fonctionne - pas en python cependant -), ou de supprimer la dernière version et d'en télécharger une nouvelle avec (nécessaire artifactregistry.versions.delete)
:
artifactregistry.repositories.downloadArtifacts
Avec cette autorisation, vous pouvez télécharger des artefacts et rechercher des informations sensibles et des vulnérabilités.
Téléchargez une image Docker :
Téléchargez une bibliothèque python :
Que se passe-t-il si des registres distants et standard sont mélangés dans un registre virtuel et qu'un package existe dans les deux ? Consultez cette page :
artifactregistry.tags.delete
, artifactregistry.versions.delete
, artifactregistry.packages.delete
, (artifactregistry.repositories.get
, artifactregistry.tags.get
, artifactregistry.tags.list
)Supprimer des artefacts du registre, comme des images docker :
artifactregistry.repositories.delete
Supprimez un dépôt complet (même s'il a du contenu) :
artifactregistry.repositories.setIamPolicy
Un attaquant avec cette permission pourrait se donner des permissions pour effectuer certaines des attaques de dépôt mentionnées précédemment.
Cloud Functions
Lorsqu'une Cloud Function est créée, une nouvelle image docker est poussée vers l'Artifact Registry du projet. J'ai essayé de modifier l'image avec une nouvelle, et même de supprimer l'image actuelle (et l'image cache
), et rien n'a changé, la fonction cloud continue de fonctionner. Par conséquent, il pourrait être possible d'abuser d'une attaque de condition de course comme avec le bucket pour changer le conteneur docker qui sera exécuté, mais modifier simplement l'image stockée n'est pas possible pour compromettre la Cloud Function.
App Engine
Bien qu'App Engine crée des images docker à l'intérieur de l'Artifact Registry. Il a été testé que même si vous modifiez l'image à l'intérieur de ce service et supprimez l'instance App Engine (de sorte qu'une nouvelle soit déployée), le code exécuté ne change pas. Il pourrait être possible qu'en effectuant une attaque de condition de course comme avec les buckets, il pourrait être possible de remplacer le code exécuté, mais cela n'a pas été testé.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)