[ { "note": "a run that reads only its principal's data reaches every sink its capabilities allow", "grants": { "compute": { "devices": [ "Cpu" ], "energy_budget_uj": 0, "cpu_time_ms": 0, "memory_bytes": 0 }, "storage": { "read": [ "/work/**" ], "write": [], "delete": [] }, "network": { "outbound": [ "api.example.com:443", "mail.example.com:587" ], "inbound": false }, "kv": { "read": false, "write": false, "prefixes": [] }, "host": { "logging": false, "clock": false, "random": false, "inference": false }, "process": { "exec": true, "programs": [ "summarise", "curl" ], "max_processes": 0 }, "browser": { "enabled": false, "origins": [], "headless": false }, "display": { "enabled": false, "vnc": false, "max_width": 0, "max_height": 0 }, "flow": { "untrusted": [ { "kind": "Path", "pattern": "/work/inbox/*", "origin": "inbox" }, { "kind": "Kv", "pattern": "web/", "origin": "web" }, { "kind": "Program", "pattern": "curl", "origin": "fetched" } ], "tainted_may": [ { "kind": "Egress", "target": "mail.example.com:587", "accepts": [ "inbox" ] }, { "kind": "Exec", "target": "summarise", "accepts": [ "*" ] } ] } }, "steps": [ { "call": "read_path", "arg": "/work/notes", "origins_after": [] }, { "call": "egress", "arg": "api.example.com:443", "reach": true }, { "call": "exec", "arg": "curl", "reach": true } ] }, { "note": "an untrusted read closes the sinks that follow it, and the order is what decides", "grants": { "compute": { "devices": [ "Cpu" ], "energy_budget_uj": 0, "cpu_time_ms": 0, "memory_bytes": 0 }, "storage": { "read": [ "/work/**" ], "write": [], "delete": [] }, "network": { "outbound": [ "api.example.com:443", "mail.example.com:587" ], "inbound": false }, "kv": { "read": false, "write": false, "prefixes": [] }, "host": { "logging": false, "clock": false, "random": false, "inference": false }, "process": { "exec": true, "programs": [ "summarise", "curl" ], "max_processes": 0 }, "browser": { "enabled": false, "origins": [], "headless": false }, "display": { "enabled": false, "vnc": false, "max_width": 0, "max_height": 0 }, "flow": { "untrusted": [ { "kind": "Path", "pattern": "/work/inbox/*", "origin": "inbox" }, { "kind": "Kv", "pattern": "web/", "origin": "web" }, { "kind": "Program", "pattern": "curl", "origin": "fetched" } ], "tainted_may": [ { "kind": "Egress", "target": "mail.example.com:587", "accepts": [ "inbox" ] }, { "kind": "Exec", "target": "summarise", "accepts": [ "*" ] } ] } }, "steps": [ { "call": "egress", "arg": "api.example.com:443", "reach": true }, { "call": "read_path", "arg": "/work/inbox/mail-1", "origins_after": [ "inbox" ] }, { "call": "egress", "arg": "api.example.com:443", "reach": false }, { "call": "exec", "arg": "curl", "reach": false }, { "call": "egress", "arg": "mail.example.com:587", "reach": true }, { "call": "exec", "arg": "summarise", "reach": true } ] }, { "note": "the taint only grows: a later clean read restores nothing, and a second origin closes a sink open to the first", "grants": { "compute": { "devices": [ "Cpu" ], "energy_budget_uj": 0, "cpu_time_ms": 0, "memory_bytes": 0 }, "storage": { "read": [ "/work/**" ], "write": [], "delete": [] }, "network": { "outbound": [ "api.example.com:443", "mail.example.com:587" ], "inbound": false }, "kv": { "read": false, "write": false, "prefixes": [] }, "host": { "logging": false, "clock": false, "random": false, "inference": false }, "process": { "exec": true, "programs": [ "summarise", "curl" ], "max_processes": 0 }, "browser": { "enabled": false, "origins": [], "headless": false }, "display": { "enabled": false, "vnc": false, "max_width": 0, "max_height": 0 }, "flow": { "untrusted": [ { "kind": "Path", "pattern": "/work/inbox/*", "origin": "inbox" }, { "kind": "Kv", "pattern": "web/", "origin": "web" }, { "kind": "Program", "pattern": "curl", "origin": "fetched" } ], "tainted_may": [ { "kind": "Egress", "target": "mail.example.com:587", "accepts": [ "inbox" ] }, { "kind": "Exec", "target": "summarise", "accepts": [ "*" ] } ] } }, "steps": [ { "call": "read_path", "arg": "/work/inbox/mail-1", "origins_after": [ "inbox" ] }, { "call": "read_path", "arg": "/work/notes", "origins_after": [ "inbox" ] }, { "call": "egress", "arg": "mail.example.com:587", "reach": true }, { "call": "read_kv", "arg": "web/page", "origins_after": [ "inbox", "web" ] }, { "call": "egress", "arg": "mail.example.com:587", "reach": false }, { "call": "program_output", "arg": "curl", "origins_after": [ "fetched", "inbox", "web" ] }, { "call": "exec", "arg": "summarise", "reach": true } ] }, { "note": "a grant set with no flow section is never tainted", "grants": { "compute": { "devices": [ "Cpu" ], "energy_budget_uj": 0, "cpu_time_ms": 0, "memory_bytes": 0 }, "storage": { "read": [ "/work/**" ], "write": [], "delete": [] }, "network": { "outbound": [ "api.example.com:443", "mail.example.com:587" ], "inbound": false }, "kv": { "read": false, "write": false, "prefixes": [] }, "host": { "logging": false, "clock": false, "random": false, "inference": false }, "process": { "exec": true, "programs": [ "summarise", "curl" ], "max_processes": 0 }, "browser": { "enabled": false, "origins": [], "headless": false }, "display": { "enabled": false, "vnc": false, "max_width": 0, "max_height": 0 } }, "steps": [ { "call": "read_path", "arg": "/work/inbox/mail-1", "origins_after": [] }, { "call": "egress", "arg": "api.example.com:443", "reach": true } ] } ]