Skip to content

PermitProbe v0.3.2

Latest

Choose a tag to compare

@Chorolee Chorolee released this 09 Oct 11:31
e17c794

PermitProbe v0.3.2 release notes

PermitProbe v0.3.2 is a security hotfix for six parser, credential-boundary, and checked-bundle
findings reproduced during an independent Astra Max review of v0.3.1. It preserves the existing
GET-only execution model, policy format version 1, and report schema version 2.

Provider credential boundary

An exploration provider now receives the platform's fixed default PATH rather than inheriting
the caller's PATH. Variables named explicitly with --provider-env remain available unless the
same variable supplies a policy credential or request header, in which case the existing
fail-closed intersection check rejects the run.

Response parsing

Browser-security and cache contracts now validate response field values before normalization.
Only visible ASCII plus HTAB is accepted, and only SP and HTAB are treated as HTTP optional
whitespace. NBSP, NEL, and other Unicode whitespace can no longer turn a malformed HSTS, CSP,
COOP, COEP, CORP, Origin-Agent-Cluster, cookie, CORS, Vary, or cache value into a pass.

HSTS validates every directive as an HTTP token or quoted string. includeSubDomains and
preload must be valueless flags even when a contract does not require them. Cookie declarations
apply the __Host-, __Secure-, __Http-, and __Host-Http- acceptance invariants under ASCII
case-insensitive prefix matching while continuing to match the declared cookie name exactly at
runtime.

Offline inputs and checked bundles

OpenAPI API-key locations now require a string before allowed-value comparison. A list, object, or
other malformed value produces the documented invalid-document exit code 2 instead of an
uncaught exception.

Checked bundles reject a file whose normalized path is an ancestor of another member, in either
declaration order. The same check includes the embedded PERMITPROBE-MANIFEST.json receipt, so an
entry below that file path cannot produce an archive that passes inspection but fails portable
extraction.

Assurance

The release adds direct regressions for all six original reproducers and adjacent valid cases. The
complete suite passes on Python 3.11 and 3.14, with CodeQL, dependency review, source-secret
scanning, dependency auditing, workflow analysis, strict distribution metadata checks, and an
isolated installed-wheel smoke test retained in the release gates.