Journal

HV2: boot-time hypervisor výzkumná platforma pod operačním systémem.

HV2 je privátní výzkumná platforma pro práci pod OS: VM-exity, nested translation, per-core mapování a malý command surface pro memory introspection a bezpečnostní výzkum.

HypervisorCybersecurityPaměťVýzkum

HV2 řeší problém, který běžné user-mode nástroje nevyřeší čistě: jak pozorovat a ověřovat stav systému z vrstvy pod operačním systémem, aniž by se výzkum opíral o nestabilní hooky, křehké signatury nebo důvěru v to, co právě říká OS. Tohle není náhrada debuggeru. Je to laboratorní platforma pro otázky, které debugger často vidí pozdě.

Co bylo těžké.

Hypervisorový výzkum se láme na detailech: špatně zpracovaný VM-exit zastaví systém, špatná translace vrátí nesmysl, špatná per-core inicializace vytvoří nekonzistentní mapy a příliš široký command interface je bezpečnostní problém sám o sobě. HV2 proto stojí na konzervativním návrhu: malé rámce, explicitní operace, bounded payload a žádné hádání.

Command frame: malý, nudný, správný.

Každá operace je reprezentovaná kompaktním rámcem s typovanými poli. Payload nepřijímá libovolné procedury z guestu. Přijímá známou operaci, ověřené délky, adresy, flagy a návratový slot. Kdo někdy ladil kernel-level věci, ví, že "nudné a explicitní" je kompliment.

// konceptuální rámec, ne produkční definice
struct Hv2Command {
    uint32_t op;
    uint32_t flags;
    uint64_t guest_src;
    uint64_t guest_dst;
    uint32_t size;
    uint32_t status;
};

validate(command);
dispatch_known_operation(command);

VM-exit dispatch musí být konzervativní.

HV2 není univerzální replacement platform handleru. Interposer bere jen exity, které odpovídají HV2 kontraktu. Všechno ostatní se vrací původní cestou. To je důležité: dobrá výzkumná vrstva nesmí rozšířit blast radius jen proto, že chce být chytrá.

Guest virtual translation není lookup.

Správná translace virtuální adresy guestu vyžaduje page-table walk: ověřit přítomnost každé úrovně, velké stránky, offset a přístupová práva. Demo, které funguje jen na jednoduchých adresách, není platforma. HV2 staví překlad jako explicitní mechanismus, protože memory introspection stojí a padá na tom, že čteme přesně to, co si myslíme.

// konceptuální page-table walk
translation_result translate(gva) {
    pml4e = read_entry(cr3, index_pml4(gva));
    require_present(pml4e);

    pdpte = read_entry(pml4e, index_pdpt(gva));
    if (is_large_page(pdpte)) return map_large_page(pdpte, gva);

    pde = read_entry(pdpte, index_pd(gva));
    pte = read_entry(pde, index_pt(gva));
    require_present(pte);
    return physical_address(pte, page_offset(gva));
}

Per-core inicializace.

Jedna úspěšná inicializace nestačí. Každé logické jádro musí mít konzistentní mapovací stav a schopnost obsloužit relevantní exity. HV2 proto myslí per-core: připravit stav, přepnout affinity tam, kde je to potřeba, ověřit výsledek a nechat systém ve stavu, který se dá znovu vysvětlit.

Proč je to užitečné pro cybersecurity výzkum.

  • Memory introspection pod úrovní OS, kde user-mode tooling nemá poslední slovo.
  • Validace obranných mechanismů proti nízkoúrovňovým změnám stavu.
  • Forenzní a laboratorní kontrola paměťových struktur bez spoléhání na hooky v OS.
  • Výzkum stealth, integrity a anti-tamper scénářů v autorizovaném prostředí.
  • Testování vlastních bezpečnostních nástrojů proti realističtější platformové vrstvě.

Co záměrně nepublikujeme.

Článek neobsahuje zdrojový kód, přesné instrukční sekvence, signatury, offsety, interní identifikátory ani backend-specific konstanty. Popisuje metodiku a engineering principy. Výzkum má být čitelný, ne kopírovatelný kliknutím pravým tlačítkem.

Pointa.

HV2 je zajímavé tím, že kombinuje nízkoúrovňovou přesnost s poměrně malým veřejným kontraktem. To je dobrý kompromis pro bezpečnostní výzkum: co nejvíc měřit a ověřovat, co nejméně zvětšovat rozhraní, které může selhat.

Zpět do JournaluVýzkum, systémy a technické poznámky.

Řešíte nízkoúrovňový výzkum?

Rádi se podíváme na problém, hranice i bezpečný způsob ověření.

Kontaktovat Gloryck