Do not open a public issue. Report privately; a maintainer will acknowledge within 72 hours and agree a disclosure timeline (default 90 days).
Until a security contact address is published, this file is a placeholder and NOVA should not be used for anything where a vulnerability matters — which is currently true for many other reasons.
NOVA's security posture is a language property, not a runtime add-on. The core claim (RFC 0001):
Code that was never handed a capability value cannot perform the corresponding effect, and the type system makes this checkable.
- No ambient authority. There is no free function that performs IO.
All authority descends from the
Runtimevalue passed tomain. - Authority is visible. A function's effect row states every capability reachable from its body, including through closure captures (RFC 0001 §4.3). A dependency cannot silently acquire authority.
- Attenuation is auditable.
attenuateis the only construct that drops an effect from a row. Every use is reported bynova check.
Stated plainly, because a security document that only lists guarantees is a marketing document:
- Nothing yet. No implementation is complete. None of the above is enforced end to end today.
- Not against the trusted computing base. The compiler, the runtime's
root capability, and every
attenuatebody are trusted. A bug there defeats everything above. - Not against covert channels. Timing, cache, and resource-exhaustion channels are out of scope for the capability model.
- Not against unsafe FFI. Any C interop escapes the model. FFI will be a capability, but a capability that can do anything is not a restriction — it is a labelled hole.
- Not confidentiality or integrity of data. Information-flow control (taint, declassification) is a different system from authority control. NOVA has none. Do not read "no ambient authority" as "no data leaks."
- Not availability. Nothing bounds infinite loops or memory growth until Milestone 5.
Assumed adversary: a malicious or compromised dependency inside the program, and a caller attempting to obtain more authority than it was granted.
Not assumed: a hostile compiler, a hostile OS, a hostile CPU, or physical access.
The package manager does not exist. When it does, its RFC must address signing, reproducible builds, and — specifically for NOVA — whether a package's declared capability requirements can be checked at install time rather than at first run. That is the interesting question and it is not yet answered.