Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

runtime-trust — Runtime je bezpečné oslovit z jiného stroje a připojení k meshi nikomu nedůvěřuje omylem

Objevení není důvěra, důvěra není autorizace a volající smí cokoli měnit jen klíčem, který pojmenovává politika důvěry. Host, který runtime dosáhne, ho čte a nemění nic, co nedokáže autentizovat; každá událost v žurnálu byla ověřena proti politice důvěry, která platí nyní, ať dorazila linkou, nebo z disku; a limity, které dokumenty uvádějí, jsou limity, které kód vynucuje.

AKTIVNÍ 6 of 10 issues done

připraveno
4
blokováno
0
aktivní
0
verify
0
hotovo
6
zrušeno
0

Problém

Základní audit runtime balíčku (2026-10-09, M01) četl server a mesh proti jejich dokumentům a zjistil, že bezpečnostní model držel jen na síťovém hopu. Server navázaný mimo loopback přijímal každý stav měnící požadavek od jakéhokoli hosta, který neposlal hlavičku Origin: přechody plánu, zápisy continuity, jakoukoli schopnost přes executions.start a relace, nároky, předávky a revize meshe, které uzel pak podepsal vlastním důvěryhodným klíčem. Tři servery na stroji vlastníka byly tehdy takto navázány. Vedle toho: opětovné načtení žurnálu přeskakuje kontrolu důvěry, takže události odvolaného klíče se po restartu vracejí; Lamportova razítka nejsou omezena, takže důvěryhodný klíč může zpětně datovat nárok, aby vyhrál každý konflikt; prošlý nárok po rozdělení sítě ožije a vyhraje; zprávy hello nepojmenovávají příjemce; důvěra se čte z pracovního stromu větve; vstupy discovery mají neomezené kanály a čtení odpovědí.

Výsledek

Objevení není důvěra, důvěra není autorizace a volající smí cokoli měnit jen klíčem, který pojmenovává politika důvěry. Host, který runtime dosáhne, ho čte a nemění nic, co nedokáže autentizovat; každá událost v žurnálu byla ověřena proti politice důvěry, která platí nyní, ať dorazila linkou, nebo z disku; a limity, které dokumenty uvádějí, jsou limity, které kód vynucuje.

Aktuální stav

Vzdálené požadavky měnící stav byly připouštěny jen podle adresy (opraveno I2123). Zjištění o opětovném načtení žurnálu, mezích Lamport, oživení nároku, příjemci hello, kořeni důvěry a neomezeném vstupu platí tak, jak jsou zaznamenána v auditu.

Cílový stav

Každá hrozba v bezpečnostním modelu docs/MESH.md jmenuje test, který ji brání, a každé zjištění ze seznamu hrozeb výchozího auditu je buď bráněno testem, nebo zaznamenáno jako omezení, které dokumenty uvádějí.

Rozsah

  • apps/majordomus-cli/src/http
  • apps/majordomus-cli/src/mcp
  • apps/majordomus-cli/src/mesh
  • apps/majordomus-cli/src/capability
  • docs/MESH.md
  • docs/MCP.md
  • test/cases

Mimo rozsah

  • Šifrování přenosu. ADR 0032 rozhodlo o žádné závislosti na TLS; důvěrnost zůstává věcí sítě.
  • Účty ani přihlášení. Vzdálený zapisovatel, když je potřeba, je připuštěn klíčem, který jmenuje politika důvěry.

Kritéria přijetí

  • Požadavek z adresy, která není loopback, spustí jen schopnost, která čte nebo jejíž vstup je podepsaná zpráva, na každém transportu, který zná adresu volajícího
  • Každá událost, kterou žurnál drží, prošla platnou politikou důvěry, ať dorazila spojením, nebo byla znovu načtena z disku
  • Důvěryhodný klíč nemůže seřadit své tvrzení před již přijatá tvrzení a prošlé tvrzení se nevrací jako živé
  • Každá hranice, kterou bezpečnostní model jmenuje, se vynucuje na vstupu, který jmenuje, s testem, který pošle o jeden víc

Validace

  • bin/majordomus plan validate
  • cargo test --test remote_callers --test mesh_cooperation

Požadované důkazy

  • remote_write_refused
  • reload_is_trust_checked

Rizika

  • Vzdálený klient MCP ztrácí zápisy, které míval (announce, relace meshe). Zbývající cesta je tunel, který končí na loopbacku.

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I2123 HOTOVO 0 — Volající mimo loopback čte a nemění nic, co nedokáže ověřit
I2124 HOTOVO 0 — Událost znovu načtená z disku se setká s platnou politikou důvěry a žádné razítko nepředběhne hodiny
I2132 HOTOVO 0 — Hello jmenuje runtime, pro který je určeno, a žádný jiný runtime ho nepřijme
I2133 HOTOVO 0 — Každý vstup i odpověď meshe má hranici a odmítnutá registrace se nic nedozví
I2134 HOTOVO 0 — Klíč odebraný ze seznamu důvěry ztratí své odkazy bez restartu a klíč uzlu lze rotovat
I2135 HOTOVO 0 — Kořen důvěry se čte z výchozí větve, ne z toho, co drží checkout
I2703 PŘIPRAVENO 1 I2132 Pravidlo spolupráce v meshi uvádí kontroly hello v pořadí, v jakém je kód spouští, a test toto pořadí jmenuje
I2704 PŘIPRAVENO 1 I2133 Dialer nečte odpověď za hranicí odkazu ani víc kandidátů, než je hranice, a odmítající peer se zkouší znovu měřenou, rozptýlenou rychlostí
I2705 PŘIPRAVENO 1 I2134 Klíč uzlu lze rotovat, peery následují nový klíč a starý klíč se odmítne
I3175 PŘIPRAVENO 0 — Two hosts presenting one node key are named as a duplicate, never folded into one flapping node

Graf

graf závislostí runtime-trustz .ai/repo/project
flowchart LR
    I2123["I2123<br/>A caller beyond loopback reads, and changes nothing it cannot authenticate"]:::done
    I2124["I2124<br/>An event reloaded from disk meets the trust policy in force, and no stamp outruns the clock"]:::done
    I2132["I2132<br/>A hello names the runtime it is meant for, and no other runtime accepts it"]:::done
    I2133["I2133<br/>Every mesh input and answer has a bound, and a refused registration learns nothing"]:::done
    I2134["I2134<br/>A key removed from the trust list loses its links without a restart, and a node key can be rotated"]:::done
    I2135["I2135<br/>The trust root is read from the default branch, not from whatever the checkout holds"]:::done
    I2703["I2703<br/>The mesh cooperation rule lists the hello checks in the order the code runs them, and a test names that order"]:::ready
    I2704["I2704<br/>A dialer reads no reply beyond the link bound and no more candidates than the bound, and a refusing peer is retried at a measured, jittered rate"]:::ready
    I2705["I2705<br/>A node key can be rotated, peers follow the new key, and the old key is refused"]:::ready
    I3175["I3175<br/>Two hosts presenting one node key are named as a duplicate, never folded into one flapping node"]:::ready
    I2132 --> I2703
    I2133 --> I2704
    I2134 --> I2705
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Kanonický záznam: .ai/repo/project/milestones/runtime-trust.yaml. Přečtěte jej zpět pomocí majordomus plan show runtime-trust.

Prohledává názvy a popisy všech stránek, které tento web publikuje.