GCP - Artifact Registry Persistence
Artifact Registry
Per ulteriori informazioni sull'Artifact Registry, controlla:
pageGCP - Artifact Registry EnumConfusione delle dipendenze
Cosa succede se un repository remoto e uno standard vengono misti in uno virtuale e un pacchetto esiste in entrambi?
Viene utilizzato quello con la priorità più alta impostata nel repository virtuale
Se la priorità è la stessa:
Se la versione è la stessa, viene utilizzato il nome della policy in ordine alfabetico prima nel repository virtuale
Se non lo è, viene utilizzata la versione più alta
Pertanto, è possibile abusare di una versione più alta (confusione delle dipendenze) in un registro di pacchetti pubblico se il repository remoto ha una priorità superiore o uguale
Questa tecnica può essere utile per persistenza e accesso non autenticato, in quanto per abusarne è sufficiente conoscere il nome di una libreria memorizzata nell'Artifact Registry e creare la stessa libreria nel repository pubblico (ad esempio PyPi per Python) con una versione superiore.
Per la persistenza, seguire i seguenti passaggi:
Requisiti: Deve esistere un repository virtuale e deve essere utilizzato, deve essere utilizzato un pacchetto interno con un nome che non esiste nel repository pubblico.
Creare un repository remoto se non esiste
Aggiungere il repository remoto al repository virtuale
Modificare le policy del registro virtuale per dare una priorità superiore (o uguale) al repository remoto. Eseguire qualcosa del genere:
Scarica il pacchetto legittimo, aggiungi il tuo codice dannoso e registrarlo nel repository pubblico con la stessa versione. Ogni volta che un sviluppatore lo installa, installerà il tuo!
Per ulteriori informazioni sulla confusione delle dipendenze, controlla:
Last updated