AxiomCore
Reference & Appendix

Security rules

AXSEC rule catalog, source evidence, delivery groups, and enforcement boundaries.

Security Mode emits stable AXSEC IDs across local checks, CI, signed releases, native PRs, contract pages, and trace contract context. A finding is either invalid, uncovered, declared_unproven, or observed extractor evidence. audit is non-blocking; strict rejects builds/releases with blocking gaps. A declaration is not presented as proof that arbitrary handler source is safe.

Rule delivery groups

GroupSecurity pointsAXSEC families
IdentityBroken authorization/IDOR; authentication001, 014, 031–033
Output/dataXSS; secret leakage; data exposure; observability leaks041, 051, 081–082, 151
Browser/networkSSRF; CSRF; rate/abuse; CORS061–073, 091, 111
Stateful/OSMass assignment; uploads; paths; commands; cache101, 121, 131–132, 141–142, 161–162
GlobalSecurity invariantsSigned requirements using the preceding rule families

Rule catalog

IDsDetectsPrimary declaration/remediation
001, 014Uncovered route or resource/IDOR bindingEndpointGuard, policy, resourceBinding, Domain relationship
031–033Missing/unsafe authentication profileAuthenticationPolicy transport safeguards
041HTML output is not escapedEscaped output boundary or reviewed unsafe exception
051Secret/sensitive data is not redactedSensitiveData.redact = true plus adapter redaction
061, 062Required rate limit/idempotency missingRateLimit, idempotency declaration and adapter key enforcement
072, 073Dynamic/unallowlisted/private egressFixed NetworkService origin; private network denied by default
081, 082Classified return lacks projection/audienceDomain response projection and approved audience
091Cookie mutation lacks CSRFCsrfPolicy or explicit non-browser exemption
101Mutation has no writable-field allowlistwritableFields; adapter rejects unknown fields
111Wildcard credentialed CORSExplicit trusted origins; never credentials with *
121Shared cache lacks principal variationDisable sharing or require principal vary key
131, 132Unrooted/dynamic filesystem accessRooted PathPolicy, deny external input
141, 142Process has no fixed executable or permits shellFixed executable and structured arguments
151Possible sensitive loggingClassify/redact and inspect cited call site
161, 162Upload sink/policy misses safe defaultsSize/type bounds, inspection, private non-executable storage

Extractor evidence without an SDK

Go and Python/FastAPI extractors emit advisory facts for dynamic network targets, process execution, filesystem paths, uploads, rate-limit signals, sensitive logging, and wildcard CORS. Facts include file, line, confidence, and a short description in the signed manifest.

Facts may create a finding. They never grant access, mark a route public, or weaken a policy. Existing services therefore need no SDK; authors declare or override a boundary in axiom.acore when source evidence is incomplete.

Enforcement model

BoundaryBehavior
CompilerValidates references and creates the canonical signed manifest
axiom security checkReports deterministic rules locally and in CI
Build/releasestrict rejects error findings; audit remains non-blocking
Client runtimeAdds the loaded manifest hash, mode, effective declared policy/auth/permission, and endpoint finding count to an OpenTelemetry span
DashboardRenders signed findings, coverage, graph, diffs, and trace policy context
Existing Go/Python appUnchanged by extraction; its middleware/handlers are the runtime enforcement boundary

The runtime context is diagnostic only. A future trusted server adapter can evaluate the signed policy against a principal and resource at request time, then emit an allow/deny decision trace. Until then dashboard labels policy evidence declared_unproven, instead of inventing a runtime decision.

Adoption measurements

Track enabled contracts, audit-to-strict conversion, endpoint coverage, findings stopped before release, extractor-finding remediation time, and time to answer “who may perform this operation and why.”

On this page