Files
papers/defense/hanzo-security.tex
zeekay f9db4f5737 Publish under the org, not a person
Bylines, paper authorship, correspondence addresses and the founder blurb under
each post named an individual. They name the organisation that published the
work instead: the brand on posts and pages, the research byline on papers, and
research@ in place of a personal address. Both are what these repositories
already used elsewhere — nothing new was coined.

Co-authors are untouched. Where a paper named someone else alongside, they stay
named; only the one byline changed. Bibliography entries, running heads,
PDF metadata and affiliations move with it, so a citation still resolves to
whoever the cited paper names.

Sample and fixture data uses the placeholder name these tests already use
elsewhere, so no assertion changed meaning.
2026-09-01 08:53:13 -07:00

523 lines
32 KiB
TeX

\documentclass[11pt,letterpaper]{article}
\usepackage{hanzo-defense}
\doctitle{Hanzo AI for Security:\\Automated, Agentic Security Auditing\\at Estate Scale}
\docid{HAI-2026-015}
\docversion{Version 1.0}
\docdate{2026}
\docauthors{Hanzo AI Research --- Hanzo Team}
\docorgs{Hanzo Industries\\[email protected]}
\begin{document}
\makecover
\begin{abstract}
Security debt does not live in the system you were asked to look at; it lives in
the systems you did not know existed. Modern software estates are sprawls of
hundreds of microservices, dozens of repositories, and dependency trees no human
has ever read end to end---and the vulnerabilities hide precisely in that sprawl:
the forgotten service with a wildcard CORS policy, the credential committed to a
\texttt{.env} four years ago, the auth bypass list that a database write can
edit, the package with a published CVE that no audit ever ran against. This paper
describes how Hanzo applies an agentic AI stack to the problem: a fleet of
specialized review agents that fan out across an entire estate, discover its real
extent, find vulnerabilities at a rate no human team can match, scan every
dependency tree, and re-audit continuously as code changes---always with a human
in the loop for triage and sign-off. We ground the description in a real
engagement (anonymized): a FINRA/SEC-regulated securities platform that engaged
for a narrow remediation scope and was found to be running more than 200
microservices across 127+ repositories. Across eleven audit rounds the stack
surfaced 143 findings (22 Critical), the estate's $\sim$780 dependency
vulnerabilities were driven to zero actionable, and the platform was consolidated
from 200+ services into three Go binaries---deleting roughly 3.5 million lines of
dead code and, with it, most of the attack surface. The outcome was FINRA/SEC
approval and SOC~2. We are explicit throughout about what the machine does versus
what a human must still decide.
\end{abstract}
\paragraph{Executive Summary.}
You cannot secure what you have not enumerated, and the hard part of real-world
security is that nobody has enumerated the estate. A team asks for help hardening
a handful of services and the actual footprint turns out to be hundreds of
services across scores of repositories, most of them undocumented, several of them
forgotten, all of them in scope for the regulator and the attacker even if they
were out of scope for the conversation. Hanzo's answer is to point an agentic AI
stack at the whole thing. Specialized agents---one reasoning about
authentication, one about secrets, one about injection, one about access control,
one about dependencies---run in parallel across every repository, build the map
nobody had, and report findings far faster than a human auditor can read code.
The machine is good at breadth, recall, and tirelessness; it is not the final
authority. A human engineer triages every finding, discards the false positives,
decides severity and exploitability, and signs off remediation. In the engagement
this paper anonymizes, that pairing took a securities platform from 93 source-code
findings (22 Critical, 30 High) across 127+ repositories and $\sim$780 dependency
vulnerabilities (18 critical, 350+ high) to zero actionable dependency
vulnerabilities and zero open critical or high findings over eleven rounds---while
consolidating 200+ microservices into three compiled binaries and deleting
$\sim$3.5 million lines of dead code, a reduction in attack surface that no amount
of patching can equal. The same properties that made this possible---owned
models, an open and auditable stack, secrets in a KMS, post-quantum identity, and
a cryptographically signed, immutable audit trail---are exactly the properties a
SOC~2 audit, a FINRA/SEC examination, an ISO~27001 certification, and (for
government systems) a continuous-authorization posture all require.
\tableofcontents
\newpage
% ============================================================================
\section{The Problem: Security Debt Hides in the Sprawl}
% ============================================================================
A security review has an implicit assumption baked into it: that someone knows
what is being reviewed. In a small, well-documented system that assumption holds.
In the systems that actually run regulated businesses and critical
infrastructure, it does not. These are estates---accreted over years by rotating
teams, spread across many repositories, deployed as dozens or hundreds of
microservices, wired together by webhooks and shared databases, and standing on
dependency trees that pull in thousands of transitive packages. No single person
holds the map. The org chart that built it has turned over. The documentation, if
it exists, describes the system someone intended to build, not the one that is
running.
This is where vulnerabilities live. Not usually in the service everyone is
watching---in the one nobody remembers:
\begin{itemize}
\item \textbf{The forgotten service.} A proof-of-concept that quietly went to
production, an internal tool exposed to the public internet, a duplicate of a
service that was ``replaced'' but never decommissioned. It still has
credentials, still talks to the database, and is still in scope for an attacker.
\item \textbf{The credential in history.} An AWS key, a payment-processor
secret, an OAuth client secret, a personal access token---committed to a
\texttt{.env} or a build layer years ago, never rotated, still valid, sitting in
a git history that an attacker can clone.
\item \textbf{The structural auth flaw.} A bypass-route list loaded from a
mutable database table, so that any database write can create an authentication
bypass; a JWT verified through an asynchronous callback that can race the next
middleware; a tenant identity derived from a client-controllable header.
\item \textbf{The dependency CVE.} A published, well-known vulnerability in a
package like a common HTTP client, a JWT library, an ORM, or a web framework
---trivially fixed by a version bump, but invisible because no one ever ran a
dependency audit across the estate in years of operation.
\item \textbf{The cipher that is not encryption.} Sensitive regulated data
``protected'' by a reversible substitution scheme that a developer mistook for
encryption, propagated across many services, and that survived years of
operation because no review ever questioned it.
\end{itemize}
None of these are exotic. Every one of them is a finding a competent auditor would
flag on sight---\emph{if} the auditor's eyes ever reached that file. The binding
constraint is not auditor skill; it is auditor bandwidth against estate size. A
human team can deeply review a handful of services in the time a quarter allows.
An estate has hundreds. The math does not close, so coverage is sampled, sampling
misses the forgotten service, and the breach---or the regulator---finds what the
sample did not. The problem is fundamentally one of \emph{scale}: breadth of
coverage, recall across an enormous surface, and the stamina to re-check
everything every time the code moves. Those are exactly the properties a human
team lacks and an agentic system has.
% ============================================================================
\section{Agentic Security Auditing}
% ============================================================================
Hanzo treats an audit not as a single review but as a swarm of them. The unit of
work is one specialized agent assigned to one repository (or one service) with one
analytical lens. Many such agents run concurrently, so the wall-clock time to
sweep an estate scales with how many workers you are willing to run, not with how
many repositories the estate contains. The model's job is breadth and recall; the
human's job is judgment. The two are deliberately kept in separate lanes.
\subsection{Specialized agents, run in parallel}
A single model prompted to ``find security bugs'' is a generalist and behaves like
one---shallow, distractible, prone to missing a whole class of issue while
chasing another. The stack instead runs a set of agents each holding one threat
model in working memory, so each pass is deep in one dimension rather than shallow
in all of them:
\begin{itemize}
\item \textbf{Authentication \& session.} Token issuance and verification,
expiry and rotation, algorithm pinning, bypass routes, rate limiting on auth
endpoints, OTP handling, fail-open versus fail-closed middleware.
\item \textbf{Secrets \& credentials.} Plaintext keys in environment files,
source, build layers, and manifests; hardcoded tokens and passphrases; secrets
reachable in client bundles; secrets that should live in a KMS.
\item \textbf{Injection \& output handling.} SQL/NoSQL built by string
concatenation, command injection, and cross-site scripting through unsanitized
rendering of user-controlled data.
\item \textbf{Access control \& tenancy.} Missing ownership checks (IDOR),
object lookups that resolve across tenant boundaries, authorization enforced in
the UI but not the API, header-driven tenant switching.
\item \textbf{Transport \& configuration.} CORS allowlisting (especially
wildcard-with-credentials), security headers (CSP, \texttt{X-Content-Type-Options},
HSTS), TLS posture, and webhook signature/replay protection.
\item \textbf{Dependencies \& supply chain.} The full transitive tree of every
package manifest, matched against published advisories, with a remediation path
(override, upgrade, replace, or remove) for each.
\end{itemize}
Because the agents share a finding schema---identifier, severity, location,
category, evidence, suggested fix---their outputs merge into a single estate-wide
ledger that deduplicates the same flaw recurring across services (the wildcard
CORS that appears in a dozen places, the same vulnerable package in every tree)
and makes the systemic pattern legible rather than buried in a hundred separate
reports.
\subsection{Automated discovery: building the map first}
The first thing the stack produces is not a finding but an \emph{inventory}.
Before reviewing anything, agents crawl the version-control organizations,
enumerate every repository, classify each by language and stack, read whatever
deployment configuration exists, and reconstruct the actual service graph---which
services are live, which are duplicates, which are abandoned, what talks to what.
This is the step a human team usually skips because it is tedious, and it is
exactly the step that surfaces the forgotten service. In the engagement this paper
describes, this discovery pass is what turned a ``narrow remediation'' into a true
accounting of the estate: it found a footprint of more than 200 microservices
across 127+ repositories where the engagement had been scoped to a handful. You
cannot audit, certify, or---for a government system---accredit a system whose
extent you have not established; automated discovery establishes it.
\subsection{Dependency scanning across the whole tree}
Dependency risk is the highest-leverage target for automation because it is pure
breadth: every repository, every manifest, every transitive edge, matched against
a moving database of advisories. A human will not do this across hundreds of
repositories; a machine does it exhaustively and repeatably. The stack resolves
each tree, identifies every package with a known advisory, and---critically---does
not stop at a list. For each vulnerable package it determines the minimal action:
a transitive \emph{override} to a patched version, a direct \emph{upgrade}, a
\emph{replacement} of a deprecated or unmaintained package with a maintained
equivalent, or \emph{removal} of a dependency that was dead weight pulling in a
vulnerable transitive package. The residual---advisories with no upstream fix---is
documented with an explicit reachability argument (why the affected code path is
not exploitable in context) rather than silently ignored. ``Zero actionable''
means every advisory has been either fixed or formally adjudicated, which is the
state an auditor and a regulator will accept.
\subsection{Continuous re-audit}
An audit is a photograph; security is a film. A finding fixed today regresses
tomorrow when someone reintroduces a wildcard CORS in a service the original sweep
did not cover, or a dependency bump pulls a fresh CVE, or a refactor reopens a
closed injection path. Because each agent run is automated and cheap relative to
human review, the same sweep runs continuously---in CI on every change and on a
schedule across the whole estate---so regressions are caught as events rather than
discovered in the next annual assessment. Every closed finding becomes a standing
regression check: the specific bypass that was fixed is asserted to stay fixed,
the specific CORS origin is asserted to stay allowlisted, the specific package is
asserted to stay above its patched version. This converts ``we audited it once''
into ``it is audited on every commit,'' which is the substantive content of
\emph{continuous authorization}.
\subsection{Honest about the human in the loop}
The machine is not the auditor of record, and claiming otherwise would be both
false and dangerous. Automated static analysis over-reports: it flags
string-built queries that are in fact parameterized, ``secrets'' that are test
fixtures, and IDORs guarded by a check it could not see. It under-reports too:
business-logic flaws, broken authorization semantics that are individually valid
but collectively wrong, and abuse cases that require understanding intent are not
reliably found by pattern-matching. So the division of labor is explicit. The
agents deliver breadth: they read everything, miss little of the mechanical
classes, and never get bored on repository two hundred. A human security engineer
delivers judgment: triaging each finding, discarding false positives, confirming
exploitability, setting severity, threat-modeling the critical paths by hand, and
signing off remediation. The honest claim is not ``AI replaces the auditor.'' It
is ``AI gives one auditor the reach of fifty, and the auditor still decides.'' The
final sign-off in the case study was human, and the staged penetration re-tests
that production money movement demanded were human; the machine made that human
able to cover an estate that would otherwise have been impossible to cover.
% ============================================================================
\section{Case Study: From a Narrow Scope to a 200-Service Estate}
% ============================================================================
The following is drawn from a real engagement with a FINRA/SEC-regulated digital
securities platform. All identifying details---company, product, people, services,
repositories, domains---are removed; the numbers and the shape of the work are as
they happened.
\subsection{The scope that wasn't}
The engagement began as a targeted vulnerability assessment of a small set of
services. The automated discovery pass (\S2.2) immediately changed the picture: an
organization-wide crawl enumerated an estate of \textbf{more than 200
microservices across 127+ repositories}, spanning an API gateway, trading and
matching engines, a custody/payments tier, KYC/identity services, a sprawl of
frontends, and a long tail of proof-of-concept and duplicate repositories that
were still live. The ``narrow scope'' was a keyhole view of an estate an order of
magnitude larger---and, as is typical, the keyhole did not happen to be pointed at
the worst of it.
\subsection{What the swarm found}
A parallel static-analysis pass---one worker per repository, with the specialized
lenses of \S2.1---produced an internal source-code audit of \textbf{93 findings:
22~Critical, 30~High, 32~Medium, 9~Low}, concentrated in the gateway, trading, and
custody services. The findings were not subtle once seen; they were invisible only
because no one had looked across the whole surface. By category:
\begin{itemize}
\item \textbf{Authentication.} A bypass-route list loaded from a mutable
database table (any DB write could mint an auth bypass); JWT verification via an
async callback that could race the next middleware; tenant identity taken from a
client-controllable header, allowing tenant switching; tokens without expiry;
no rate limiting on OTP/credential endpoints; fail-open middleware that admitted
requests when the auth service was unreachable.
\item \textbf{Secrets.} Plaintext cloud keys, payment-processor secrets, and
database passwords committed to environment files across the custody and payment
tiers; an OAuth client secret shipped inside a frontend JavaScript bundle; a
hardcoded webhook secret in source; build-time tokens leaked into container
layers.
\item \textbf{Injection.} SQL built by string concatenation in a payments-rail
query path; cross-site scripting via unsanitized rendering of user-controlled
data in multiple frontends.
\item \textbf{Access control.} Missing ownership checks on order modification
(IDOR); object lookups that crossed tenant boundaries; withdrawal flows lacking
an approval gate; missing KYC and velocity gates on crypto withdrawals.
\item \textbf{Transport \& webhooks.} Wildcard CORS \emph{with credentials}
enabled across several services; missing or unverified webhook signatures on
inbound custody and payment events; missing security headers.
\item \textbf{Financial correctness.} Floating-point arithmetic on monetary
values---an integrity and compliance defect as much as a precision one.
\end{itemize}
A later forensic pass added the kind of finding that only a full-history,
full-estate sweep surfaces---a class of cryptographic misuse, in which data was
``protected'' by a scheme that was not in fact secure, that had propagated across
multiple services and survived years of review because no prior audit ever reached
every service. The specifics are immaterial here; the lesson is that estate-scale,
full-history coverage finds what sampling structurally cannot.
\subsection{The dependency debt}
Running the dependency scanner (\S2.3) across the estate exposed the technical
debt of a team that had shipped volume for years without ever running an audit.
The full ecosystem carried \textbf{$\sim$780 known dependency vulnerabilities},
including \textbf{18 critical and 350+ high-severity}. Narrowing to the eight core
services, \textbf{141} vulnerabilities sat in their trees---published CVEs in
exactly the load-bearing packages you would least want them in: the HTTP client,
the JWT library, the ORM, the web framework. Every one was fixable; none had been
fixed, because no one had looked.
\subsection{Remediation to zero actionable}
Remediation followed the discipline of \S2.3. The 141 vulnerabilities in the core
services were driven to \textbf{0 actionable}, and the full $\sim$780-vulnerability
ecosystem was driven to \textbf{0 actionable} as well---every advisory either
fixed or formally adjudicated as unreachable. The mechanical work was exactly the
catalog automation is built for: transitive overrides to patched versions,
deprecated-package migrations (a v2 cloud SDK to its modular v3, an unmaintained
HTML minifier to a maintained fork, an old crypto library swap that dropped a
vulnerable transitive dependency), and removal of dead dependencies that existed
only to pull in vulnerable transitive packages. The handful of residual advisories
with no upstream fix were documented with reachability arguments, not buried.
On the source-code side, the findings were closed across \textbf{eleven audit
rounds}. Round one surfaced the initial 93; subsequent rounds drove remediation,
caught regressions (including a reintroduced wildcard CORS found during a
verification pass), hardened the multi-tenant authentication path, purged the
legacy service framework, and re-verified each closed finding. Across all eleven
rounds the series recorded \textbf{143 findings, 115 fixed}, with the remainder
accepted or mitigated as medium/low items carrying no exploitable path. The
remediation classes were the standard hardening moves, applied estate-wide rather
than service-by-service:
\begin{itemize}
\item Secrets moved out of plaintext environment files and into a KMS, with
machine-identity access rather than shared static credentials.
\item Wildcard CORS replaced by strict origin allowlists everywhere it appeared.
\item Security headers added; webhook ingress hardened with HMAC signatures plus
timestamp and nonce replay protection.
\item JWTs verified synchronously with a pinned algorithm, expiry, and rotation;
for the next-generation build, JWKS-verified tokens against a real identity
provider.
\item Access control corrected with explicit ownership checks and tenant-scoped
queries at the middleware and datastore layers.
\end{itemize}
\subsection{The real fix: deleting the attack surface}
Patching findings hardens the code you keep. The larger security win was deciding
how much code to keep at all. In parallel with remediation, the estate was
consolidated: \textbf{200+ microservices collapsed into three Go binaries}, and
the active codebase fell from \textbf{3.07~million lines to 1.06~million}
---roughly \textbf{3.5~million lines of dead code deleted}, git-verified, with the
superseded repositories archived. This is the most underrated security action
available, because the cleanest defense against a vulnerability in a service is
for that service not to exist. Each deleted service is one fewer credential to
leak, one fewer dependency tree to patch, one fewer CORS policy to misconfigure,
one fewer forgotten endpoint on the public internet. Less code is less attack
surface, and a 70\% reduction in active code is a 70\% reduction in the places a
flaw can hide---a result no patch campaign can match because it removes the
substrate the flaws live in.
\subsection{Outcome}
The pairing of automated breadth and human judgment took the platform from 93
source findings and $\sim$780 dependency vulnerabilities to zero open critical or
high findings and zero actionable dependency vulnerabilities, on an estate it had
not even fully enumerated at the start, while shrinking that estate by an order of
magnitude. The platform achieved \textbf{FINRA/SEC approval and SOC~2}---the
regulatory and audit outcomes that are the real test of whether security work was
not just performed but \emph{evidenced}.
% ============================================================================
\section{Security by Construction in the OSS Stack}
% ============================================================================
Auditing finds the holes; architecture decides how many there are to find. The
same Hanzo open-source stack that runs the agents is built so that whole classes
of finding cannot occur, and so that the evidence an auditor needs is produced as
a byproduct of normal operation rather than reconstructed after the fact. The case
study's remediation was, in effect, a migration toward these properties.
\begin{itemize}
\item \textbf{KMS for secrets.} Secrets live in a key-management service and are
delivered to workloads by machine identity, not committed to environment files,
source, or manifests. The single most common critical finding in the case study
---plaintext credentials---is structurally prevented when there is no plaintext
credential to commit. Access is mnemonic-derived and consensus-authorized, with
no open fallback mode.
\item \textbf{IAM for identity.} Authentication and authorization run through one
identity provider over standard OIDC, with tokens verified against published
JWKS. Bespoke per-service auth---the source of the bypass-list, the
header-driven tenancy, and the race-prone verification in the case study---is
replaced by a single audited path, so there is one place to get right instead of
hundreds to get wrong.
\item \textbf{Post-quantum identity and transport.} Service identities and
inter-service transport use post-quantum primitives (ML-KEM for key
establishment, ML-DSA for signatures, NIST FIPS 203/204). Every service-to-service
call is mutually authenticated and forward-secret against a future quantum
adversary, closing the ``harvest now, decrypt later'' exposure on traffic and on
the audit record itself.
\item \textbf{Cryptographically signed actions.} Consequential actions---a
secret access, an administrative change, an agent's action---ride a signed
envelope binding the actor's identity, the operation, a timestamp, and a nonce,
signed with a post-quantum key. Authority is verifiable and non-repudiable: not
``a log says this happened'' but ``this actor provably authorized this, and the
signature proves it.''
\item \textbf{Immutable on-chain audit trail.} Security-relevant events are
recorded to an append-only, tamper-evident ledger. The audit trail cannot be
edited or deleted after the fact---the precise property that books-and-records
and custody regulations demand, and the precise property an after-the-fact log
store cannot guarantee.
\end{itemize}
The throughline is that confidentiality, identity, authority, and auditability are
\emph{architectural defaults}, not features bolted on per service. An estate built
this way starts where the case-study estate finished, and the agentic auditor then
has dramatically less to find---and what it does find, it finds against a system
that is already producing the evidence to prove the fix.
% ============================================================================
\section{Why It Matters for Audit, Certification, and Accreditation}
% ============================================================================
Regulated enterprises, critical-infrastructure operators, and government
systems---defense among them---face the estate-scale security problem in
its most acute form: larger sprawls, longer lifetimes, higher consequences, and a
formal audit or accreditation regime that demands evidence, not assertion. The
capability described here maps directly onto those requirements, from a commercial
SOC~2 or ISO~27001 audit through to a government Authorization to Operate.
\begin{itemize}
\item \textbf{Boundary and control evidence.} Every audit and accreditation
regime---SOC~2, a FINRA/SEC examination, and (for government systems) an
Authorization to Operate---requires an enumerated
system boundary, an assessed control set, and a documented residual-risk
posture. Automated discovery produces the boundary (including the forgotten
services that would otherwise sit outside it), the agent swarm produces the
assessment at a coverage no sampling approach reaches, and the signed,
immutable audit trail produces the evidence---turning the evidence package
from a periodic manual artifact into a continuously regenerated one.
\item \textbf{Supply-chain assurance.} The dependency scanner enumerates the
complete transitive software bill of materials, matches it against advisories,
and drives it to zero actionable with a documented adjudication for every
residual. This is the concrete substance behind software-supply-chain mandates
(SBOM, known-vulnerability remediation), which now run from commercial
procurement through to federal acquisition: not a one-time scan but a standing,
re-run guarantee.
\item \textbf{Continuous authorization.} The shift from periodic to continuous
re-audit is exactly the shift modern frameworks are pushing toward---continuous
SOC~2 monitoring on the commercial side and continuous ATO (cATO, ongoing
authorization) on the government side. Every closed finding becomes a standing
regression check;
every commit is re-assessed; drift is an event, not a year-end surprise. The
posture reflects the system as it is, not as it was at the last
assessment.
\item \textbf{Sovereign and auditable.} The entire stack---the review agents,
the models behind them, the KMS, the IAM, the post-quantum cryptography, the
ledger---is owned and open. It runs offline, at the edge, in an air-gapped or
classified enclave, with no dependency on a foreign or black-box service and no
telemetry leaving the boundary. The customer can inspect the auditor itself,
which is the only honest basis for trusting an auditor's output.
\end{itemize}
The deeper point the case study makes for any high-assurance buyer is about
\emph{consolidation as defense}. A 200-service estate reduced to three auditable
binaries is not only cheaper to run; it is a fundamentally smaller thing to
defend, certify, and reason about. In a domain where every additional service is
additional attack surface, additional audit or accreditation scope, and additional
supply-chain exposure, the ability to find what you have, prove it secure, and
then make it radically smaller is itself a security capability.
% ============================================================================
\section{American Open Source for a Sovereign Security Posture}
% ============================================================================
The stack described here is built and owned end-to-end by Hanzo AI, an
American-owned applied-AI lab and venture studio (Techstars~'17, founded 2014)
responsible for more than 100 venture-funded startups and several unicorns,
founded by an expert in both AI/ML and cryptography. Two facts make this relevant
to any security-conscious buyer---a regulated enterprise, a critical-infrastructure
operator, or a government and national-security program. First, sovereignty of the
security
tooling itself: an audit is only as trustworthy as the party that controls the
auditor, and this stack---agents, models, key management, and cryptography---is
American-owned, auditable, and free of dependence on foreign or black-box
components, implemented to the same standards (FIPS 203/204/205, CNSA 2.0) the
U.S.\ government mandates and inspectable by the party that has to rely on it.
Second, sovereignty of the AI doing the work: U.S.\ frontier AI has narrowed to a
closed commercial duopoly, while the only broadly open frontier weights available
today are largely foreign, leaving regulated and defense buyers to either rent
from the duopoly or take a dependency on foreign models. Hanzo is the American
open-source frontier alternative---it owns both the Zen model family and this
cryptographic stack, so the agents that read your code, the keys that protect your
secrets, and the ledger that records your evidence can be deployed offline, at the
edge, and under full audit, with nothing leaving your boundary. That this is
engineering rather than research is evidenced in production by the case study
itself: an American-owned agentic stack took a FINRA/SEC-approved, SOC~2 securities
platform---an estate of 200+ microservices---to zero actionable dependency
vulnerabilities and zero open critical findings, and consolidated it into three
compiled binaries, with a small team.
% ============================================================================
\section{Conclusion}
% ============================================================================
Security debt hides in the part of the estate nobody is looking at, and the reason
nobody is looking is that human review does not scale to hundreds of repositories
and millions of lines. Hanzo's contribution is to make the looking scale: an
agentic stack that first discovers the real extent of an estate, then sweeps it in
parallel with specialized review agents, scans every dependency tree to zero
actionable, and re-audits continuously as the code moves---always with a human
engineer holding triage and sign-off. The anonymized case study is the proof: a
narrow engagement that uncovered a 200+-service, 127+-repository estate; 143
findings (22 Critical) surfaced over eleven rounds; $\sim$780 dependency
vulnerabilities driven to zero actionable; the estate consolidated into three Go
binaries with $\sim$3.5 million lines of dead code deleted; and FINRA/SEC approval
plus SOC~2 as the result. The same stack that audits is built so that whole
classes of finding cannot occur in the first place---secrets in a KMS, identity in
one IAM, post-quantum transport, signed actions, an immutable on-chain trail---and
all of it is American-owned, open, and sovereign. For any audit, certification, or
accreditation regime---SOC~2 and FINRA/SEC, and for government systems the
ATO---that is the
combination being asked for: enumerate what you have, prove
it secure with evidence rather than assertion, keep proving it on every change,
and make it smaller. Find everything; fix what matters; delete the rest; and let
the auditor be a machine you are allowed to inspect.
\end{document}