GCP - Artifact Registry Persistence

Support HackTricks

Artifact Registry

Für weitere Informationen über Artifact Registry siehe:

GCP - Artifact Registry Enum

Dependency Confusion

  • Was passiert, wenn remote und standard Repositories in einem virtuellen gemischt werden und ein Paket in beiden existiert?

  • Das mit der höchsten Priorität, die im virtuellen Repository festgelegt ist, wird verwendet

  • Wenn die Priorität gleich ist:

  • Wenn die Version die gleiche ist, wird der Policy-Name alphabetisch zuerst im virtuellen Repository verwendet

  • Wenn nicht, wird die höchste Version verwendet

Daher ist es möglich, eine höchste Version (dependency confusion) in einem öffentlichen Paket-Registry auszunutzen, wenn das remote Repository eine höhere oder gleiche Priorität hat

Diese Technik kann nützlich sein für Persistenz und unauthentifizierten Zugriff, da es nur erforderlich ist, einen Bibliotheksnamen zu kennen, der im Artifact Registry gespeichert ist, und diese gleiche Bibliothek im öffentlichen Repository (z.B. PyPi für Python) mit einer höheren Version zu erstellen.

Für Persistenz sind dies die Schritte, die du befolgen musst:

  • Anforderungen: Ein virtuelles Repository muss existieren und verwendet werden, ein internes Paket mit einem Namen, der im öffentlichen Repository nicht existiert, muss verwendet werden.

  • Erstelle ein remote Repository, falls es nicht existiert

  • Füge das remote Repository zum virtuellen Repository hinzu

  • Bearbeite die Richtlinien des virtuellen Repositories, um dem remote Repository eine höhere (oder gleiche) Priorität zu geben. Führe etwas wie aus:

  • Lade das legitime Paket herunter, füge deinen schädlichen Code hinzu und registriere es im öffentlichen Repository mit der gleichen Version. Jedes Mal, wenn ein Entwickler es installiert, wird er deins installieren!

Für weitere Informationen über Dependency Confusion siehe:

Support HackTricks

Last updated