# kern 0.9.0-rc2

> Injection prevention as a syntactic category. The OWASP injection family is eliminated at the level of the grammar, not patched at runtime.

Source: https://kern-lang.eu/releases/0.9.0-rc2

Injection prevention as a syntactic category

## Release notes

The OWASP injection family is eliminated at the level of the grammar, not patched at runtime. Five `@<kind>_literal` annotations (`@sql_literal`, `@shell_literal`, `@url_literal`, `@regex_literal`, `@template_literal`) require the decorated argument to be a string literal at every call site, so a query or command built from user input does not type-check. A `Url<Trusted, Untrusted>` type-state closes SSRF for URLs built at runtime: `parse_url` yields `Url<Untrusted>`, and only `trust_url(raw, allowed_hosts)` promotes it after a host-allowlist check. `@url_literal` also rejects any literal that does not start with `https://`. The promise is concrete: an AST shape an attacker would need to land the bug does not exist in valid Kern source.
