Skip to content

attenu-guard 0.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:50
· 88 commits to main since this release

Changed — BREAKING

  • All signed and hash-linked artifacts now use RFC 8785 JCS exclusively. Delegation
    tokens declare "c14n":"JCS"; their protected header and payload must already be
    canonical JCS bytes. Audit entries, integrity seals, anchors, and evidence bundles use
    the same canonicalizer and carry the same marker where the artifact has metadata.
    Duplicate object members, non-finite numbers, lone surrogates, unmarked tokens, and
    non-canonical encodings are rejected. The interop suite now contains 17 vectors,
    including all six known Python/ECMAScript divergence classes. There is no legacy or
    dual-format reader.

Added

  • A ninth interop test vector, reject_wildcard_boundary.json ("expect_reject_reason": "not_narrower"), shipped in both copies and in the installed package. The leaf claims
    crmx.read under a root holding the wildcard crm.* — a scope that shares the wildcard's
    letters but not its segment boundary. crm.* covers crm. followed by anything, so
    crmx.read is a different namespace and no ancestor grants it. It closes the half the eighth
    left open: reject_wildcard_widening.json pins the DIRECTION of the wildcard rule, and this
    pins its REACH. An independent verifier that implements the wildcard by stripping the .* and
    testing startswith("crm") accepts the neighbouring namespace — the sloppy-prefix bug an
    attacker uses to step sideways into the namespace next door — and so scored 8/8 while being
    exploitable; it now fails a vector instead of shipping. The reference implementation already
    rejected it (it strips only the * and keeps the dot); this is coverage, not a fix.