# Quality Criteria

## Completeness
- All methodology phases covered
- All credential categories assessed
- Gaps explicitly documented with remediation plan

## Evidence Standards
- Every finding includes source reference (batch ID, log path)
- Quantitative metrics: credential count per category, validation rate, exposure score
- Reproducible methodology documented per credential type

## Validation Standards
- Each credential validated through graduated levels (L1-L4) per methodology.md
- L1 (identity) and L2 (scope) — standard for all credentials
- L3 (write) and L4 (privilege) — with operator confirmation, documented with timestamp
- Cleanup: test resources from L3 deleted immediately after scope verification
- Post-compromise analysis: lateral paths, persistence, data sampling, exfil assessment
- Disclosure notification must include: credential scope (L2+), data exposure category,
  persistence status, lateral movement paths, exfiltration indicators
- "Token is valid" (L1 only) = insufficient — disclosure without scope = useless to recipient
- Assessment without post-compromise analysis = incomplete remediation guidance

## Artifact Requirements
- Credential scope assessment with per-category counts and validation status
- Session exposure documented with hijack feasibility score
- Digital asset impact quantified (wallet balances, account tiers)
- Remediation matrix actionable (specific accounts, specific forced rotation steps)
- Threat scenarios reference validated credentials, not hypothetical

## Threat-Actor Tier-List Standards
- Every target in the priority matrix MUST have the operating company
  identified (domain → WHOIS/SSL certificate CN + organizationName /
  reverse-DNS PTR / web-search → organization, sector, country).
- Unidentified hosts (no company resolved) = indeterminate value; do
  NOT assign a tier. Document as "company unidentified" instead.
- Pursuit-safe filtering: exclude gov/edu/military (pursuit risk);
  flag hosting-provider tenants (lemehost, zap-srv, vexyhost, etc.)
  separately from genuine companies.
- Tier assignment requires both the company identity AND the service/
  RCE vector to be confirmed. S = direct RCE, A = source-code/secrets
  exfil, B = DB/container admin, C = remote access/mail/SSO/wiki.
- GitLab/Gitea **instance root admin** (`is_admin`, user id=1): assign **S**
  only when a concrete RCE path is documented in the dossier (attacker-
  controlled CI runner registration, server hooks, exec-capable
  integration); otherwise **A** (source-code/secrets exfil). User-level
  Git access (Owner/Maintainer/Developer on repos, not instance admin)
  = A. (Уточнение 2026-07-30: снимает расхождение tier-list vs
  batch-summary, где GitLab root был отнесён к S без указания RCE-пути.)

## Threat-Actor Value Scoring (2026-07-28, утверждено; детализировано 2026-07-30)

Четыре оси; каждый суб-критерий 0–3. Итоговый приоритет =
IMPACT × FEASIBILITY; ECONOMICS — tie-breaker внутри равных
произведений (не меняет ступень); RISK — фильтр-флаг (не множитель).

**Правило агрегации:** ось = **max** её суб-критериев — оценку
определяет сильнейшее применимое измерение. Суб-оценки фиксируются в
досье кортежем `I1-I4 / F1-F4 / E1-E2 / RISK`, чтобы скоринг был
воспроизводим третьей стороной.

### IMPACT (ценность поражения) — max(I1..I4)

**I1. PII-класс данных**
- 0 — нет пользовательских/корпоративных данных (стенд, хобби-проект)
- 1 — consumer PII (аккаунты gaming/social/streaming, email-адреса)
- 2 — financial (платёжные данные, транзакции, банковская логика)
- 3 — health / gov / critical (пациенты, нац-ID, гос-системы,
  classified-уровень исследований)

**I2. Supply-chain multiplier**
- 0 — нет downstream (конечная жертва)
- 1 — единицы клиентов/заказчиков
- 2 — десятки клиентов
- 3 — downstream-каскад: vendor → десятки+ организаций
  (Hossted, Hyvä→мерчанты, biapay→банки, rynnova→~300 клиентов MSP)

**I3. Оборот / pressure tolerance (цена простоя в день)**
- 0 — простой никому не заметен
- 1 — малый бизнес; простой = неудобство
- 2 — средний бизнес; измеримые потери в день
- 3 — госпиталь / payment rails / крупный e-com: простой = прямые
  крупные потери, высокая готовность платить

**I4. Destructive-impact feasibility**
- 0 — read-only на второстепенное; навредить нельзя
- 1 — write на данные приложения (порча контента/записей)
- 2 — доступ к прод-БД/бэкапам/стораджу (точечное удаление возможно)
- 3 — wipe/encrypt инфраструктуры: k8s cluster-admin, vCenter, PVE
  root; бэкапы доступны атакующему или иммутабельность отсутствует

### FEASIBILITY (реализуемость) — max(F1..F4)

**F1. RCE tier**
- 0 — нет выполнения кода (только просмотр страниц)
- 1 — read-only API/dashboard (Kibana read, Grafana viewer, Jenkins
  non-admin read)
- 2 — write/deploy: repo push, config change, image push, DB write
- 3 — shell на prod: ArgoCD exec, Jenkins /script (Groovy), Portainer
  exec, Coolify container, k8s, vCenter/PVE console

**F2. Lateral complexity (обратная шкала: проще = выше)**
- 0 — изолированный хост; NetworkPolicy/сегментация; путей нет
- 1 — пути есть, но требуют нового креда или эксплойта
- 2 — пути задокументированы (known_hosts, creds в конфигах, trust-сети)
- 3 — trivial: flat network, 0 NetworkPolicy, creds в env/логах
  (эталон: ALTEN sbm-dev→kubeflow)

**F3. Exfil complexity (обратная шкала)**
- 0 — egress закрыт / DLP / прокси + большой объём
- 1 — egress ограничен; нужен staging/маскировка
- 2 — egress открыт; объём средний (десятки GB)
- 3 — прямой egress малого объёма: git clone, API JSON, secrets dump

**F4. Persistence-ability (переживает ли доступ ротацию пароля)**
- 0 — доступ умирает со сменой пароля (единственный пароль)
- 1 — короткие сессии/cookies
- 2 — токены/ключи, не привязанные к паролю (OAuth token, SSH key)
- 3 — survives rotation: k8s SA tokens, PAT, privileged accounts,
  deploy keys, external-secrets, CI/CD variables
  (эталон: workhera — OAuth + GCP SA key + CI vars)

### ECONOMICS (ранжирование внутри равных IMPACT×FEAS)

**E1. ROI атаки** — ожидаемый выхлоп / трудозатраты (НЕ «маржа
жертвы»): 0 — трудозатраты превышают выхлоп; 3 — высокий выхлоп при
минимальных трудозатратах.

**E2. Time-to-monetize (ликвидность на IAB-рынке)**
- 0 — рынка нет
- 1 — недели (случайная grafana, read-only dashboard)
- 2 — ~неделя (DB admin, source code среднего профиля)
- 3 — дни (ArgoCD/k8s admin, Jenkins Groovy, банк-код, 0-day research)

### RISK (фильтр-флаг, не множитель)

- **green** — private non-regulated → стандартный трек.
- **yellow** — healthcare / finance / edu-adjacent / downstream gov →
  осторожность на активных шагах; повышенная срочность disclosure.
- **red** — gov / edu / military / critical-infra (playcourt=Telkom,
  hssl=Huawei lab, safaricom=M-PESA, brusselsairport) →
  **disclosure-only**; активные действия только по явному решению
  оператора.
- **Detectability** — активный SOC/audit, contested access (чужие PAT
  у globunet, дефейс у haogongzuo) = доступ считать замеченным. Меняет
  срочность ротации/disclosure; НЕ меняет тир и скоринг.

### Sanity-check — воспроизводимость утверждённых кейсов

| Кейс | I1 | I2 | I3 | I4 | IMP | F1 | F2 | F3 | F4 | FEAS | RISK |
|------|----|----|----|----|-----|----|----|----|----|------|------|
| falabella | 2 | 3 | 3 | 2 | **3** | 1 | 2 | 3 | 3 | **3** | yellow |
| biapay | 2 | 3 | 3 | 2 | **3** | 3 | 2 | 3 | 2 | **3** | yellow |
| hssl | 3 | 3 | 2 | 1 | **3** | 1 | 2 | 3 | 3 | **3** | red |
| playcourt | 3 | 1 | 3 | 1 | **3** | 1 | 1 | 2 | 2 | **2** | red |
| alten | 1 | 2 | 2 | 3 | **3** | 3 | 3 | 3 | 3 | **3** | green |

Все четыре утверждённых кейса 2026-07-28 воспроизводятся рубрикой без
изменения их итоговых оценок.

## Review Checklist
- [ ] All phases completed
- [ ] All credential categories covered
- [ ] Validation performed per methodology (read-only)
- [ ] Artifacts meet quality bar
- [ ] Executive summary written
- [ ] Threat-actor tier-list: every target has company identified
- [ ] Pursuit-safe filtering applied (gov/edu/military excluded)
